From e5effb684bfe1275c63b44010a12667a0d1980c2 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Fri, 13 Jan 2023 12:26:42 +0100 Subject: [PATCH 001/478] [WIP] New flake app with blockfrost --- flake.lock | 15791 +++++++++++++++++++++++++++++++++------------- flake.nix | 4 + nix/runtime.nix | 71 +- 3 files changed, 11579 insertions(+), 4287 deletions(-) diff --git a/flake.lock b/flake.lock index ce5f80da9..8dfa4d8f3 100644 --- a/flake.lock +++ b/flake.lock @@ -132,6 +132,70 @@ "type": "github" } }, + "HTTP_13": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_14": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_15": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_16": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -260,6919 +324,13875 @@ "type": "github" } }, - "blank": { + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_2": { + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_3": { + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_5" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_4": { + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_5": { + "agenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "bot-plutus-interface": { + "agenix_3": { "inputs": { - "CHaP": "CHaP_4", - "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_4", "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs-unstable" + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" ] }, "locked": { - "lastModified": 1670496765, - "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32": { - "flake": false, + "agenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_10": { - "flake": false, + "agenix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_11": { - "flake": false, + "agenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_33" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_12": { - "flake": false, + "agenix_7": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_2": { - "flake": false, + "agenix_8": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_3": { - "flake": false, + "alejandra": { + "inputs": { + "flakeCompat": "flakeCompat", + "nixpkgs": "nixpkgs_28" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1646360966, + "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", + "owner": "kamadorueda", + "repo": "alejandra", + "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "kamadorueda", + "repo": "alejandra", "type": "github" } }, - "cabal-32_4": { + "bats-assert": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_5": { + "bats-assert_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_6": { + "bats-assert_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_7": { + "bats-support": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_8": { + "bats-support_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_9": { + "bats-support_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34": { - "flake": false, + "bitte": { + "inputs": { + "agenix": "agenix", + "agenix-cli": "agenix-cli", + "blank": "blank", + "capsules": "capsules", + "data-merge": "data-merge", + "deploy": "deploy_2", + "fenix": "fenix_4", + "hydra": "hydra_2", + "n2c": "n2c", + "nix": "nix_4", + "nixpkgs": "nixpkgs_22", + "nixpkgs-docker": "nixpkgs-docker", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "nomad-driver-nix": "nomad-driver-nix_2", + "nomad-follower": "nomad-follower_2", + "ops-lib": "ops-lib_2", + "ragenix": "ragenix_3", + "std": "std", + "terranix": "terranix_2", + "utils": "utils_10" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1661790449, + "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_10": { - "flake": false, + "bitte-cells": { + "inputs": { + "cardano-db-sync": [ + "db-sync", + "cardano-world", + "cardano-db-sync" + ], + "cardano-iohk-nix": [ + "db-sync", + "cardano-world", + "iohk-nix" + ], + "cardano-node": [ + "db-sync", + "cardano-world", + "cardano-node" + ], + "cardano-wallet": [ + "db-sync", + "cardano-world", + "cardano-wallet" + ], + "cicero": "cicero", + "data-merge": [ + "db-sync", + "cardano-world", + "data-merge" + ], + "n2c": [ + "db-sync", + "cardano-world", + "n2c" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ], + "std": [ + "db-sync", + "cardano-world", + "std" + ] + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1660761733, + "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", + "owner": "input-output-hk", + "repo": "bitte-cells", + "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte-cells", "type": "github" } }, - "cabal-34_11": { - "flake": false, + "bitte_2": { + "inputs": { + "agenix": "agenix_2", + "agenix-cli": "agenix-cli_2", + "blank": "blank_2", + "deploy": "deploy", + "fenix": "fenix_2", + "hydra": "hydra", + "nix": "nix", + "nixpkgs": "nixpkgs_8", + "nixpkgs-unstable": "nixpkgs-unstable", + "nomad": "nomad", + "nomad-driver-nix": "nomad-driver-nix", + "nomad-follower": "nomad-follower", + "ops-lib": "ops-lib", + "ragenix": "ragenix", + "terranix": "terranix", + "utils": "utils_5", + "vulnix": "vulnix" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_12": { - "flake": false, + "bitte_3": { + "inputs": { + "agenix": "agenix_6", + "agenix-cli": "agenix-cli_3", + "blank": "blank_3", + "deploy": "deploy_3", + "fenix": "fenix_6", + "hydra": "hydra_3", + "nix": "nix_8", + "nixpkgs": "nixpkgs_37", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "nomad": "nomad_2", + "nomad-driver-nix": "nomad-driver-nix_3", + "nomad-follower": "nomad-follower_3", + "ops-lib": "ops-lib_3", + "ragenix": "ragenix_4", + "terranix": "terranix_3", + "utils": "utils_19", + "vulnix": "vulnix_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "blank": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_3": { - "flake": false, + "blank_2": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_4": { - "flake": false, + "blank_3": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_5": { - "flake": false, + "blank_4": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_6": { - "flake": false, + "blank_5": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_7": { - "flake": false, + "blank_6": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_8": { - "flake": false, + "blank_7": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_9": { - "flake": false, + "blank_8": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36": { - "flake": false, + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1673436749, + "narHash": "sha256-ptvmkWkNAhjYyyJZA+Ii4q6W9DIT646xngSlBsj05oA=", + "owner": "mlabs-haskell", + "repo": "blockfrost-backend-ryo", + "rev": "3816e79db6f9d7f6e128f8e70700238597dd9538", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "mlabs-haskell", + "ref": "aciceri/nix-flake", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "cabal-36_10": { + "bot-plutus-interface": { + "inputs": { + "CHaP": "CHaP_4", + "flake-compat": "flake-compat_18", + "haskell-nix": "haskell-nix_6", + "iohk-nix": "iohk-nix_5", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1670496765, + "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + } + }, + "byron-chain": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-36_2": { + "cabal-32": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-32_10": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-32_11": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-32_12": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_6": { + "cabal-32_13": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_7": { + "cabal-32_14": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_8": { + "cabal-32_15": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_9": { + "cabal-32_16": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cardano-configurations": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1670549339, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c1b2b9a426a78bb5812898368714631900299701", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_2": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_3": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_3" - }, + "cabal-32_5": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, + "cabal-32_6": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_6" - }, + "cabal-32_7": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_11" - }, + "cabal-32_8": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_5": { - "inputs": { - "nixpkgs": "nixpkgs_13" - }, + "cabal-32_9": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_6": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "cabal-34": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "cardano-node-workbench": [ - "ogmios", - "blank" - ], - "customConfig": "customConfig", - "flake-compat": "flake-compat_2", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nixTools": "nixTools", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_4" - }, + "cabal-34_10": { + "flake": false, "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_3", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "membench": "membench_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils" - }, + "cabal-34_11": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_7", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", - "membench": "membench_4", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_6" - }, + "cabal-34_12": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_7", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixTools": "nixTools_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_9" - }, + "cabal-34_13": { + "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell": { + "cabal-34_14": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_10": { + "cabal-34_15": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_11": { + "cabal-34_16": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_12": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_2": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_3": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_4": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_5": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_6": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_7": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_8": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_9": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig": { + "cabal-36_10": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_2": { + "cabal-36_11": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_3": { + "cabal-36_12": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_4": { + "cabal-36_13": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_5": { + "cabal-36_14": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_6": { + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } }, - "customConfig_7": { + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_8": { + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_3": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, + "cabal-36_8": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, + "cabal-36_9": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "dmerge_3": { + "capsules": { "inputs": { - "nixlib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "yants" - ] + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_16", + "ragenix": "ragenix_2" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "easy-purescript-nix": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_45", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "flake-compat": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1670549339, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "c1b2b9a426a78bb5812898368714631900299701", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_10": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1670462928, + "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_11": { + "cardano-configurations_3": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1667387423, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_12": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "flake-compat_13": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "flake-compat_14": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_64" + }, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_66" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_67" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "cardano-mainnet-mirror_4": { + "inputs": { + "nixpkgs": "nixpkgs_72" + }, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_5": { - "flake": false, + "cardano-mainnet-mirror_5": { + "inputs": { + "nixpkgs": "nixpkgs_74" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "cardano-mainnet-mirror_6": { + "inputs": { + "nixpkgs": "nixpkgs_75" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_7": { + "cardano-node": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "cardano-node-snapshot": { + "inputs": { + "customConfig": "customConfig_5", + "haskellNix": "haskellNix_5", + "iohkNix": "iohkNix_5", + "membench": "membench_2", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_22" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "cardano-node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_9", + "haskellNix": "haskellNix_9", + "iohkNix": "iohkNix_9", + "membench": "membench_4", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_27" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-utils": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_10": { + "cardano-node_2": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "cardano-node-workbench": [ + "ogmios", + "blank" + ], + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_9", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nixTools": "nixTools", + "nixpkgs": [ + "ogmios", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ogmios", + "blank" + ], + "node-process": "node-process", + "node-snapshot": "node-snapshot", + "plutus-apps": "plutus-apps", + "utils": "utils_25" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1667644902, + "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "1.35.4", + "repo": "cardano-node", "type": "github" } }, - "flake-utils_11": { + "cardano-node_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", + "cardano-node-workbench": [ + "ogmios-nixos", + "blank" + ], + "customConfig": "customConfig_7", + "flake-compat": "flake-compat_14", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_7", + "hostNixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_7", + "nixTools": "nixTools_2", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ogmios-nixos", + "blank" + ], + "node-process": "node-process_2", + "node-snapshot": "node-snapshot_2", + "plutus-apps": "plutus-apps_2", + "utils": "utils_30" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-utils_12": { + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_13": { + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_14": { + "cardano-shell_11": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_15": { + "cardano-shell_12": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_16": { + "cardano-shell_13": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_17": { + "cardano-shell_14": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_18": { + "cardano-shell_15": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_19": { + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_2": { + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_20": { + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_21": { + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_22": { + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_3": { + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_4": { + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_5": { + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_6": { + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_7": { + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_5", + "flake-utils": "flake-utils_20", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "flake-utils_8": { + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_6", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_2", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_56", + "nixpkgs-haskell": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_2", + "tullia": "tullia" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "flake-utils_9": { + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_7", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_7", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_32", + "poetry2nix": "poetry2nix", + "utils": "utils_14" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, + "customConfig_10": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "custom-config", + "type": "path" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" + "path": "custom-config", + "type": "path" } }, - "ghc-8.6.5-iohk_12": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_2": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "customConfig_6": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "customConfig_7": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "customConfig_8": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "customConfig_9": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "ghc-8.6.5-iohk_9": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix": { + "data-merge_3": { "inputs": { - "nixpkgs": "nixpkgs_8", - "utils": "utils_5" + "nixlib": "nixlib_3", + "yants": "yants_3" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix_2": { + "db-sync": { "inputs": { - "nixpkgs": "nixpkgs_16", - "utils": "utils_10" + "cardano-world": "cardano-world", + "customConfig": "customConfig_2", + "flake-compat": "flake-compat_7", + "haskellNix": "haskellNix_2", + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_21" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673522919, + "narHash": "sha256-cX3mxaXm/ASRHiIOosHq+DXwsU5PbKwzhraEssGn8Kk=", + "owner": "mlabs-haskell", + "repo": "cardano-db-sync", + "rev": "e49d0a1fbf48e96bf0f09ffd98096d0f3ddd214e", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "mlabs-haskell", + "ref": "aciceri/customConfig-input-fix", + "repo": "cardano-db-sync", "type": "github" } }, - "gomod2nix_3": { + "deploy": { "inputs": { - "nixpkgs": "nixpkgs_20", - "utils": "utils_11" + "fenix": "fenix", + "flake-compat": "flake-compat", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "hackage": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_7" + }, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackageNix": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_15" + }, "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackageNix_2": { - "flake": false, + "devshell": { "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_10": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1669338728, - "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_2": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_3": { - "flake": false, + "devshell_12": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_4": { - "flake": false, + "devshell_13": { "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_5": { - "flake": false, + "devshell_14": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "devshell_15": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_7": { - "flake": false, + "devshell_16": { + "inputs": { + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_8": { - "flake": false, + "devshell_17": { + "inputs": { + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_9": { - "flake": false, + "devshell_18": { + "inputs": { + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "nix-tools": "nix-tools", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "devshell_2": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_7", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ogmios", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6", - "tullia": "tullia" + "devshell_4": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_5": { "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_3": { + "devshell_6": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_9", - "flake-utils": "flake-utils_15", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_5", + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], "nixpkgs": [ - "ogmios-nixos", + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" + ] }, "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_4": { + "devshell_7": { "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_19", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_6", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12", - "tullia": "tullia_3" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_29" }, "locked": { - "lastModified": 1669338917, - "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_3", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": [ - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "devshell_8": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_9": { "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_2": { + "dmerge": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_4", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_3": { + "dmerge_2": { "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_4", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "nixlib": [ + "db-sync", + "cardano-world", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_4": { + "dmerge_3": { "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_6", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "nix-tools": "nix-tools_4", - "nixpkgs": [ + "nixlib": [ "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" + "yants": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_5": { + "dmerge_4": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_4", - "nix-tools": "nix-tools_5", - "nixpkgs": [ + "nixlib": [ "ogmios-nixos", - "cardano-node", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "yants": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_6": { + "dmerge_5": { "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_6", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", + "nixlib": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" + "yants": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_7": { + "driver": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_13", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_7", + "devshell": "devshell_8", + "inclusive": "inclusive_6", + "nix": "nix_6", "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" + "utils": "utils_11" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nomad-driver-nix", "type": "github" } }, - "haskellNix_8": { + "easy-purescript-nix": { + "flake": false, + "locked": { + "lastModified": 1666686938, + "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "type": "github" + } + }, + "ema": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_47", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "ema", + "type": "github" + } + }, + "ema_2": { + "flake": false, + "locked": { + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "multisite", + "repo": "ema", + "type": "github" + } + }, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_50", + "tailwind-haskell": "tailwind-haskell" + }, + "locked": { + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "emanote", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs_6", + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_14", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_8", "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls": { + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_19", + "rust-analyzer-src": "rust-analyzer-src_3" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, + "locked": { + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_35", + "rust-analyzer-src": "rust-analyzer-src_5" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, + "locked": { + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hpc-coveralls_10": { + "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_12": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_13": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_14": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_15": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_16": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_17": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_18": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_19": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_20": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_21": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs": "nixpkgs_49" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_10": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_14": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_15": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_16": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_17": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_18": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_19": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_49": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_7", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_12" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_12": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_13": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_14": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_15": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_16": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_69", + "utils": "utils_26" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_77", + "utils": "utils_31" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_81", + "utils": "utils_32" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1665882657, + "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1656898050, + "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_12": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_13": { + "flake": false, + "locked": { + "lastModified": 1667783503, + "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_14": { + "flake": false, + "locked": { + "lastModified": 1669338728, + "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_7": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_8": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_9": { + "flake": false, + "locked": { + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-utils": "flake-utils_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_22", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_34", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_9", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ogmios", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_10", + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1670464865, + "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_16", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "hackage": "hackage_13", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_11", + "nixpkgs": [ + "ogmios-nixos", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_15", + "tullia": "tullia_3" + }, + "locked": { + "lastModified": 1667783630, + "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_46", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "hackage": "hackage_14", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_12", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_16", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1669338917, + "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_21", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_4", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_10": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cardano-shell": "cardano-shell_14", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "hackage": "hackage_12", + "hpc-coveralls": "hpc-coveralls_14", + "nix-tools": "nix-tools_12", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_10", + "flake-utils": "flake-utils_30", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": [ + "ogmios", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "nixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1665882789, + "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9af167fb4343539ca99465057262f289b44f55da", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_7", + "nix-tools": "nix-tools_6", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": "hackage_7", + "hpc-coveralls": "hpc-coveralls_8", + "nix-tools": "nix-tools_7", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_8", + "hpc-coveralls": "hpc-coveralls_9", + "nix-tools": "nix-tools_8", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_7": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": [ + "ogmios-nixos", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_10", + "nix-tools": "nix-tools_9", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11" + }, + "locked": { + "lastModified": 1656898207, + "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_8": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_12", + "flake-utils": "flake-utils_39", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_12", + "nix-tools": "nix-tools_10", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_12" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_9": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_13", + "flake-utils": "flake-utils_40", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "hackage": "hackage_11", + "hpc-coveralls": "hpc-coveralls_13", + "nix-tools": "nix-tools_11", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_13" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_12": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_13": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_14": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_15": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_16": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_3": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_11", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": "nix_13", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_7": { + "inputs": { + "nix": "nix_14", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_8": { + "inputs": { + "nix": "nix_15", + "nixpkgs": [ + "ogmios", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_16", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_3", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_15", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_44", + "utils": "utils_20" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix-environments": { + "inputs": { + "nixpkgs": "nixpkgs_62" + }, + "locked": { + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ogmios", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1649070135, + "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_10": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_7": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_8": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_9": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1639165170, + "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "revCount": 7, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + }, + "original": { + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "flake-utils": "flake-utils_28", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "kupo": [ + "kupo" + ], + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667868387, + "narHash": "sha256-YDlUUkbut7Oil5t1njquiSjnu+CQLHxnNFQd2A1eWCc=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_3": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_4": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_5": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "membench": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "cardano-node-measured": [ + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_2" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_2": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "cardano-node-measured": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", + "cardano-node-measured": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot_2", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_4" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_4": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", + "cardano-node-measured": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_3" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_20" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_37", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_49", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_7", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_10", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_13" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_17", + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_10": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_11": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_12": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_5": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_6": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_7": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_8": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_9": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_58" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_70" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_78" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_47", + "nixpkgs": "nixpkgs_82" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nixTools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nixTools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_40", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_52", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_54", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_63", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_65", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_80", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_11", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_21", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_23", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_31", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_36", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_38" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1672791794, + "narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1669997163, + "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_4": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_6": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_7": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_13": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_14": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_15": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_16": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_17": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_18": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_4": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_5": { + "locked": { + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_6": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_11": { - "flake": false, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_12": { - "flake": false, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "nixpkgs_10": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nixpkgs_11": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "hpc-coveralls_5": { - "flake": false, + "nixpkgs_12": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nixpkgs_13": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nixpkgs_14": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_8": { - "flake": false, + "nixpkgs_15": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_9": { - "flake": false, + "nixpkgs_16": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_17": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": "nix_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_18": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_19": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_4": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" } }, - "hydra_5": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_2": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", "type": "indirect" } }, - "hydra_6": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_20": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_21": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "iohk-nix-environments": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "nixpkgs_22": { "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ogmios", - "nixpkgs" - ] - }, + "nixpkgs_23": { "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "nixpkgs" - ] - }, + "nixpkgs_24": { "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "nixpkgs" - ] - }, + "nixpkgs_25": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ] - }, + "nixpkgs_26": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_27": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_28": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "nixpkgs_29": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ] - }, + "nixpkgs_3": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_30": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_31": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "iohkNix_8": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "nixpkgs_32": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs_33": { "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" }, "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "id": "nixpkgs", + "type": "indirect" } }, - "kupo": { - "flake": false, + "nixpkgs_34": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "flake-utils": "flake-utils", - "haskell-nix": "haskell-nix", - "iohk-nix": "iohk-nix", - "kupo": [ - "kupo" - ], - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_35": { "locked": { - "lastModified": 1667868387, - "narHash": "sha256-YDlUUkbut7Oil5t1njquiSjnu+CQLHxnNFQd2A1eWCc=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs_36": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs_37": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs_38": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs_39": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_40": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs_41": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs_42": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs_43": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_3": { - "flake": false, + "nixpkgs_44": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "membench": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" - }, + "nixpkgs_45": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, + "nixpkgs_46": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, + "nixpkgs_47": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "membench_4": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" - }, + "nixpkgs_48": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_49": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_5": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_50": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_2", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs_51": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_6", - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_52": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_10", - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_53": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_54": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools": { - "flake": false, + "nixpkgs_55": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs_56": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs_57": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs_58": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs_59": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_6": { - "flake": false, + "nixpkgs_6": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_7": { - "flake": false, + "nixpkgs_60": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_8": { - "flake": false, + "nixpkgs_61": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_9" - }, + "nixpkgs_62": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1670827406, + "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_16", - "nixpkgs": "nixpkgs_17" - }, + "nixpkgs_63": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_21" - }, + "nixpkgs_64": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixTools": { - "flake": false, + "nixpkgs_65": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixTools_2": { - "flake": false, + "nixpkgs_66": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_4", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs_67": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_68": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs_69": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_12", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs_7": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs_70": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "repo": "nixpkgs", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_19", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs_71": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_72": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs_73": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_74": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_75": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs": { + "nixpkgs_76": { "locked": { - "lastModified": 1670827406, - "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs-2003": { + "nixpkgs_77": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_10": { + "nixpkgs_78": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_11": { + "nixpkgs_79": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_80": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2003_12": { + "nixpkgs_81": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_2": { + "nixpkgs_82": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_3": { + "nixpkgs_83": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "node-process": { + "flake": false, + "locked": { + "lastModified": 1648681325, + "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "type": "github" + } + }, + "node-process_2": { + "flake": false, + "locked": { + "lastModified": 1654323094, + "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "type": "github" + } + }, + "node-snapshot": { + "inputs": { + "customConfig": "customConfig_4", + "haskellNix": "haskellNix_4", + "iohkNix": "iohkNix_4", + "membench": "membench", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example", + "utils": "utils_24" + }, + "locked": { + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + } + }, + "node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_8", + "haskellNix": "haskellNix_8", + "iohkNix": "iohkNix_8", + "membench": "membench_3", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example_2", + "utils": "utils_29" + }, + "locked": { + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", "type": "github" } }, - "nixpkgs-2003_4": { + "nomad": { + "inputs": { + "nix": "nix_2", + "nixpkgs": "nixpkgs_10", + "utils": "utils_2" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2003_5": { + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell", + "inclusive": "inclusive", + "nix": "nix_3", + "nixpkgs": "nixpkgs_12", + "utils": "utils_3" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_6": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_4", + "inclusive": "inclusive_4", + "nix": "nix_5", + "nixpkgs": "nixpkgs_24", + "utils": "utils_8" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_7": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_11", + "inclusive": "inclusive_9", + "nix": "nix_10", + "nixpkgs": "nixpkgs_41", + "utils": "utils_17" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_8": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_2", + "inclusive": "inclusive_2", + "nixpkgs": "nixpkgs_13", + "utils": "utils_4" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2003_9": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_5", + "inclusive": "inclusive_5", + "nixpkgs": "nixpkgs_25", + "utils": "utils_9" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105": { + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_12", + "inclusive": "inclusive_10", + "nixpkgs": "nixpkgs_42", + "utils": "utils_18" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105_10": { + "nomad_2": { + "inputs": { + "nix": "nix_9", + "nixpkgs": "nixpkgs_39", + "utils": "utils_16" + }, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2105_11": { + "ogmios": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_12": { + "ogmios-nixos": { + "inputs": { + "CHaP": "CHaP_3", + "blank": "blank_6", + "cardano-configurations": "cardano-configurations_3", + "cardano-node": "cardano-node_3", + "flake-compat": "flake-compat_15", + "haskell-nix": "haskell-nix_5", + "iohk-nix": "iohk-nix_4", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1668087435, + "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "3b229c1795efa30243485730b78ea053992fdc7a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_2": { + "ogmios_2": { + "inputs": { + "CHaP": "CHaP", + "blank": "blank_4", + "cardano-configurations": "cardano-configurations_2", + "cardano-node": "cardano-node_2", + "flake-compat": "flake-compat_11", + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1670513793, + "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" } }, - "nixpkgs-2105_3": { + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_4": { + "old-ghc-nix_10": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_5": { + "old-ghc-nix_11": { + "flake": false, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_6": { + "old-ghc-nix_12": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_7": { + "old-ghc-nix_13": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_8": { + "old-ghc-nix_14": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_9": { + "old-ghc-nix_15": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111": { + "old-ghc-nix_16": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_10": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_11": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_12": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_2": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_3": { + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_4": { + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_5": { + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_6": { + "old-ghc-nix_9": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_7": { + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_8": { + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_9": { + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2205": { + "ouroboros-network": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_2": { + "ouroboros-network_2": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_3": { + "ouroboros-network_3": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_4": { + "ouroboros-network_4": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2211": { + "plutip": { + "inputs": { + "CHaP": [ + "plutip", + "bot-plutus-interface", + "CHaP" + ], + "bot-plutus-interface": "bot-plutus-interface", + "flake-compat": "flake-compat_21", + "haskell-nix": [ + "plutip", + "bot-plutus-interface", + "haskell-nix" + ], + "iohk-nix": [ + "plutip", + "bot-plutus-interface", + "iohk-nix" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "lastModified": 1671024770, + "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" } }, - "nixpkgs-regression": { + "plutus-apps": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1647347289, + "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_2": { + "plutus-apps_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1654271253, + "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "61de89d33340279b8452a0dbb52a87111db87e82", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_3": { + "plutus-example": { + "inputs": { + "customConfig": "customConfig_6", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_23" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_4": { + "plutus-example_2": { + "inputs": { + "customConfig": "customConfig_10", + "haskellNix": "haskellNix_10", + "iohkNix": "iohkNix_10", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_5": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", + "type": "github" } }, - "nixpkgs-regression_6": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_48" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" } }, - "nixpkgs-unstable": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_10": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_17", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_11": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_12": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_14", + "nixpkgs": "nixpkgs_43", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_2": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_16", + "nixpkgs": "nixpkgs_46", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_3": { + "root": { + "inputs": { + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": [ + "ogmios-nixos", + "cardano-node" + ], + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_8", + "iohk-nix-environments": "iohk-nix-environments", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ogmios", + "nixpkgs" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_4": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_5": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_6": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_7": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_8": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_9": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_10": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_11": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_12": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_13": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_14": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_15": { + "stackage_10": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_16": { + "stackage_11": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1656898145, + "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_17": { + "stackage_12": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_18": { + "stackage_13": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_19": { + "stackage_14": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_2": { + "stackage_15": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1667610757, + "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_20": { + "stackage_16": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1669338854, + "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_21": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_22": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_3": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_4": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_5": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1665537461, + "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_6": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_7": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_8": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_9": { + "std": { + "inputs": { + "devshell": "devshell_6", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago", + "nixpkgs": "nixpkgs_27", + "yants": "yants_2" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process": { - "flake": false, + "std_2": { + "inputs": { + "devshell": "devshell_14", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_24", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_57", + "yants": "yants_4" + }, "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process_2": { - "flake": false, + "std_3": { + "inputs": { + "devshell": "devshell_15", + "nixpkgs": "nixpkgs_60", + "yants": "yants_5" + }, "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot": { + "std_4": { "inputs": { - "customConfig": "customConfig_2", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", - "membench": "membench", - "nixpkgs": [ + "blank": "blank_5", + "devshell": "devshell_16", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_36", + "makes": [ "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example", - "utils": "utils_3" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "microvm": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_71", + "yants": "yants_6" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot_2": { + "std_5": { "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "membench": "membench_3", - "nixpkgs": [ + "blank": "blank_7", + "devshell": "devshell_17", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_44", + "makes": [ "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example_2", - "utils": "utils_8" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", + "microvm": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_79", + "yants": "yants_7" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios": { + "std_6": { "inputs": { - "CHaP": "CHaP", - "blank": "blank", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node", - "flake-compat": "flake-compat_4", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix_2", - "nixpkgs": [ - "ogmios", + "blank": "blank_8", + "devshell": "devshell_18", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_48", + "makes": [ + "plutip", + "bot-plutus-interface", "haskell-nix", - "nixpkgs-unstable" - ] + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", + "microvm": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_83", + "yants": "yants_8" }, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_3", - "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_8", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_3", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" - ] - }, + "stdlib": { "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "stdlib_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, + "stdlib_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, + "stdlib_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_12": { - "flake": false, + "stdlib_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_2": { - "flake": false, + "stdlib_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" - } - }, - "old-ghc-nix_3": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + } + }, + "stdlib_4": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_4": { - "flake": false, + "stdlib_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_5": { - "flake": false, + "stdlib_6": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, + "stdlib_7": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "stdlib_8": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, + "stdlib_9": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_9": { - "flake": false, + "tailwind-haskell": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_51" + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1654211622, + "narHash": "sha256-N5Xa/JhF9PRgmt+ZVZFaHT7onezENxp7ktnGhhqOBaw=", + "owner": "srid", + "repo": "tailwind-haskell", + "rev": "8d08cda7a1cb67435de1ba1739f65e25b303364f", "type": "github" }, "original": { - "owner": "angerman", + "owner": "srid", "ref": "master", - "repo": "old-ghc-nix", + "repo": "tailwind-haskell", "type": "github" } }, - "ouroboros-network": { - "flake": false, + "terranix": { + "inputs": { + "bats-assert": "bats-assert", + "bats-support": "bats-support", + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples" + }, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "ouroboros-network_2": { - "flake": false, + "terranix-examples": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_3": { - "flake": false, + "terranix-examples_2": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_4": { - "flake": false, + "terranix-examples_3": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "plutip": { + "terranix_2": { "inputs": { - "CHaP": [ - "plutip", - "bot-plutus-interface", - "CHaP" - ], - "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_14", - "haskell-nix": [ - "plutip", - "bot-plutus-interface", - "haskell-nix" - ], - "iohk-nix": [ - "plutip", - "bot-plutus-interface", - "iohk-nix" - ], + "bats-assert": "bats-assert_2", + "bats-support": "bats-support_2", + "flake-utils": "flake-utils_9", "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ] + "db-sync", + "cardano-world", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_2" }, "locked": { - "lastModified": 1671024770, - "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps": { - "flake": false, + "terranix_3": { + "inputs": { + "bats-assert": "bats-assert_3", + "bats-support": "bats-support_3", + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_3" + }, "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps_2": { - "flake": false, + "tullia": { + "inputs": { + "nix2container": "nix2container", + "nixpkgs": "nixpkgs_59", + "std": "std_3" + }, "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "plutus-apps", + "repo": "tullia", "type": "github" } }, - "plutus-example": { + "tullia_2": { "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", "nixpkgs": [ "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_2" + "std": "std_4" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "plutus-example_2": { + "tullia_3": { "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", "nixpkgs": [ "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_7" + "std": "std_5" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "root": { + "tullia_4": { "inputs": { - "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ogmios-nixos", - "cardano-node" - ], - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat", - "iohk-nix-environments": "iohk-nix-environments", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_4", "nixpkgs": [ - "ogmios", + "plutip", + "bot-plutus-interface", + "haskell-nix", "nixpkgs" ], - "ogmios": "ogmios", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" - } - }, - "stackage": { - "flake": false, + "std": "std_6" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "tullia", "type": "github" } }, - "stackage_10": { - "flake": false, + "utils": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_11": { - "flake": false, + "utils_10": { "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_12": { - "flake": false, + "utils_11": { "locked": { - "lastModified": 1669338854, - "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_2": { - "flake": false, + "utils_12": { "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_3": { - "flake": false, + "utils_13": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_4": { - "flake": false, + "utils_14": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_5": { - "flake": false, + "utils_15": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_6": { - "flake": false, + "utils_16": { "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_7": { - "flake": false, + "utils_17": { "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_8": { - "flake": false, + "utils_18": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_9": { - "flake": false, + "utils_19": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std": { - "inputs": { - "blank": "blank_2", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_9", - "makes": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_10", - "yants": "yants" - }, + "utils_2": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std_2": { - "inputs": { - "blank": "blank_4", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_17", - "makes": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "microvm": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_18", - "yants": "yants_2" - }, + "utils_20": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "std_3": { - "inputs": { - "blank": "blank_5", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_21", - "makes": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_22", - "yants": "yants_3" - }, + "utils_21": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std" - }, + "utils_22": { "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_2", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_2" - }, + "utils_23": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_3", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ], - "std": "std_3" - }, + "utils_24": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_25": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7187,7 +14207,7 @@ "type": "github" } }, - "utils_10": { + "utils_26": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7202,13 +14222,13 @@ "type": "github" } }, - "utils_11": { + "utils_27": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -7217,7 +14237,7 @@ "type": "github" } }, - "utils_2": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7232,7 +14252,7 @@ "type": "github" } }, - "utils_3": { + "utils_29": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7247,13 +14267,28 @@ "type": "github" } }, - "utils_4": { + "utils_3": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_30": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7262,7 +14297,7 @@ "type": "github" } }, - "utils_5": { + "utils_31": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7277,13 +14312,13 @@ "type": "github" } }, - "utils_6": { + "utils_32": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7292,7 +14327,22 @@ "type": "github" } }, - "utils_7": { + "utils_4": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_5": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7307,13 +14357,28 @@ "type": "github" } }, - "utils_8": { + "utils_6": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_7": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -7322,22 +14387,178 @@ "type": "github" } }, + "utils_8": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, "utils_9": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, + "vulnix": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, + "vulnix_2": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, "yants": { + "inputs": { + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_53" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { "inputs": { "nixpkgs": [ "ogmios", @@ -7361,7 +14582,7 @@ "type": "github" } }, - "yants_2": { + "yants_7": { "inputs": { "nixpkgs": [ "ogmios-nixos", @@ -7385,7 +14606,7 @@ "type": "github" } }, - "yants_3": { + "yants_8": { "inputs": { "nixpkgs": [ "plutip", diff --git a/flake.nix b/flake.nix index c266c14e1..92482a5de 100644 --- a/flake.nix +++ b/flake.nix @@ -39,6 +39,9 @@ url = "github:justinwoo/easy-purescript-nix/da7acb2662961fd355f0a01a25bd32bf33577fa8"; flake = false; }; + + blockfrost.url = "github:mlabs-haskell/blockfrost-backend-ryo/aciceri/nix-flake"; + db-sync.url = "github:mlabs-haskell/cardano-db-sync/aciceri/customConfig-input-fix"; }; outputs = @@ -257,6 +260,7 @@ in (psProjectFor pkgs).apps // { ctl-runtime = pkgs.launchCtlRuntime { }; + ctl-runtime-blockfrost = pkgs.launchCtlRuntime { blockfrost.enable = true; }; default = self.apps.${system}.ctl-runtime; vm = { type = "app"; diff --git a/nix/runtime.nix b/nix/runtime.nix index 4297c3456..bf44a1c75 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -20,13 +20,26 @@ rec { tag = "1.35.4"; }; ogmios = { port = 1337; }; + postgres = { + # User-facing port on host machine. + # Can be set to null in order to not bind postgres port to host. + # Postgres will always be accessible via `postgres:5432` from + # containers. + port = 5432; + user = "ctl"; + password = "ctl"; + db = "ctl-${network.name}"; + }; kupo = { port = 1442; since = "origin"; - match = "*/*"; # matches Shelley addresses only + match = "*/*"; # matches Shelley addresses onlsy tag = "v2.2.0"; # TODO: Do we want to support connection through ogmios? }; + blockfrost = { + enable = false; + }; # Additional config that will be included in Arion's `docker-compose.raw`. This # corresponds directly to YAML that would be written in a `docker-compose` file, # e.g. volumes @@ -154,7 +167,61 @@ rec { ]; }; }; - }; + "postgres-${network.name}" = { + service = { + image = "postgres:13"; + ports = + if postgres.port == null + then [ ] + else [ "${toString postgres.port}:5432" ]; + environment = { + POSTGRES_USER = "${postgres.user}"; + POSTGRES_PASSWORD = "${postgres.password}"; + POSTGRES_DB = "${postgres.db}"; + }; + }; + }; + } // (if config.blockfrost.enable then { + "db-sync-${network.name}" = { + build.image = pkgs.lib.mkForce inputs.db-sync.packages.${pkgs.system}.dockerImage; + service = { + useHostStore = true; + environment = { + NETWORK = network.name; + POSTGRES_HOST = "postgres-${network.name}"; + POSTGRES_PORT = postgres.port; + POSTGRES_USER = postgres.user; + PGPASSWORD = postgres.password; + # POSTGRES_PASSWORD = postgres.password; + }; + depends_on = [ "postgres-${network.name}" ]; + volumes = [ + "${nodeIpcVol}:/ipc" + "${config.cardano-configurations}/network/${config.network.name}/cardano-db-sync:/config" + "${config.cardano-configurations}/network/${config.network.name}/genesis:/genesis" + ]; + }; + }; + blockfrost = { + build.image = pkgs.lib.mkForce inputs.blockfrost.packages.${pkgs.system}.dockerImage; + service = { + useHostStore = true; + ports = [ (bindPort 3000) ]; + environment ={ + BLOCKFROST_CONFIG_SERVER_PORT = 3000; + BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; + BLOCKFROST_CONFIG_SERVER_DEBUG= "false"; + BLOCKFROST_CONFIG_DBSYNC_HOST = "postgres-${network.name}:5432"; + BLOCKFROST_CONFIG_DBSYNC_USER = postgres.user; + BLOCKFROST_CONFIG_DBSYNC_DATABASE = postgres.db; + BLOCKFROST_CONFIG_DBSYNC_MAX_CONN = "1"; + BLOCKFROST_CONFIG_NETWORK = "preview"; + BLOCKFROST_CONFIG_TOKEN_REGISTRY_URL = "https://tokens.cardano.org"; + PGPASSWORD = postgres.password; + }; + }; + }; + } else {}); in { docker-compose.raw = pkgs.lib.recursiveUpdate From d8781b943002aca445eacb58d0bd4c64d2bf7ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Fri, 20 Jan 2023 14:58:09 +0100 Subject: [PATCH 002/478] Fix error passing from websocket --- CHANGELOG.md | 1 + src/Internal/JsWebSocket.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96892d89d..24966c140 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - CIP-25 strings are now being split into chunks whose sizes are less than or equal to 64 to adhere to the CIP-25 standard ([#1343](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1343)) - Critical upstream fix in [`purescript-bignumber`](https://github.com/mlabs-haskell/purescript-bignumber/pull/2) - `OutputDatum` aeson encoding now roundtrips ([#1388](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1388)) +- Error message from `reconnecting-websocket` is passed correctly in `Ctl.Internal.JsWebSocket._onWsError` ### Runtime Dependencies diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 433e08eca..a21eac518 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -45,7 +45,7 @@ exports._onWsConnect = ws => fn => () => { exports._onWsError = ws => fn => () => { const listener = function (event) { - fn(event.toString())(); + fn(event.message)(); }; ws.addEventListener("error", listener); ws.finalizers.push(() => { From a499d747d83d7998f87fe1cd6ccd4694cbebdfa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Fri, 20 Jan 2023 15:01:13 +0100 Subject: [PATCH 003/478] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24966c140..f9f5c8a53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,7 +59,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - CIP-25 strings are now being split into chunks whose sizes are less than or equal to 64 to adhere to the CIP-25 standard ([#1343](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1343)) - Critical upstream fix in [`purescript-bignumber`](https://github.com/mlabs-haskell/purescript-bignumber/pull/2) - `OutputDatum` aeson encoding now roundtrips ([#1388](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1388)) -- Error message from `reconnecting-websocket` is passed correctly in `Ctl.Internal.JsWebSocket._onWsError` +- Error message from `reconnecting-websocket` is passed correctly in `Ctl.Internal.JsWebSocket._onWsError` ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) ### Runtime Dependencies From 56710081325b5d2190042bd13520a350cbd16f13 Mon Sep 17 00:00:00 2001 From: Amir Rad Date: Wed, 25 Jan 2023 17:38:16 +0000 Subject: [PATCH 004/478] Port plutip-server into CTL repo, test with plutip-tests --- .gitignore | 3 + flake.lock | 774 +++++++----------------------- flake.nix | 38 +- plutip-server/LICENSE | 9 + plutip-server/cabal.project | 49 ++ plutip-server/default.nix | 68 +++ plutip-server/fourmolu.yaml | 8 + plutip-server/hie.yaml | 12 + plutip-server/plutip-server.cabal | 96 ++++ plutip-server/src/Api.hs | 67 +++ plutip-server/src/Api/Handlers.hs | 118 +++++ plutip-server/src/Main.hs | 59 +++ plutip-server/src/Types.hs | 135 ++++++ src/Internal/Plutip/Types.purs | 8 +- 14 files changed, 826 insertions(+), 618 deletions(-) create mode 100644 plutip-server/LICENSE create mode 100644 plutip-server/cabal.project create mode 100644 plutip-server/default.nix create mode 100644 plutip-server/fourmolu.yaml create mode 100644 plutip-server/hie.yaml create mode 100644 plutip-server/plutip-server.cabal create mode 100644 plutip-server/src/Api.hs create mode 100644 plutip-server/src/Api/Handlers.hs create mode 100644 plutip-server/src/Main.hs create mode 100644 plutip-server/src/Types.hs diff --git a/.gitignore b/.gitignore index 823304979..fa9b9c0cb 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ test-data/chrome-user-data test-data/preview tmp node_modules +plutip-server/dist-newstyle/ +plutip-server/.stack-work/ + diff --git a/flake.lock b/flake.lock index 2a4c479a5..7ad3ece3a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,6 +1,23 @@ { "nodes": { "CHaP": { + "flake": false, + "locked": { + "lastModified": 1674130532, + "narHash": "sha256-NMmWWxKSW7pI8DKaZNZmTu/kwVAoUvYV++U6ZcDXfWM=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "d45467c05a6a99a21dcf3cb17c946c9cab15270b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_2": { "flake": false, "locked": { "lastModified": 1669917887, @@ -17,7 +34,7 @@ "type": "github" } }, - "CHaP_2": { + "CHaP_3": { "flake": false, "locked": { "lastModified": 1666726035, @@ -34,7 +51,7 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { "lastModified": 1666726035, @@ -51,7 +68,7 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { "flake": false, "locked": { "lastModified": 1666726035, @@ -68,14 +85,14 @@ "type": "github" } }, - "CHaP_5": { + "CHaP_6": { "flake": false, "locked": { - "lastModified": 1669289866, - "narHash": "sha256-dnRYWjYZQuNJLXsn5PdcMBPaReDYVARqc8a2grokVZ0=", + "lastModified": 1672829743, + "narHash": "sha256-lM3s0UQDxfipHbEFhmW2d5QcmKIPVsLT2ai6RnHAP84=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "c3cebaddd8b60c0b5bcef6d895adb30a79f495a8", + "rev": "551630b2c90ed9107079ab402534ed3b56db6f04", "type": "github" }, "original": { @@ -447,49 +464,6 @@ "type": "github" } }, - "blank_7": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "bot-plutus-interface": { - "inputs": { - "CHaP": "CHaP_5", - "flake-compat": "flake-compat_17", - "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_5", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1670496765, - "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", - "type": "github" - } - }, "cabal-32": { "flake": false, "locked": { @@ -1306,6 +1280,23 @@ "type": "github" } }, + "cardano-addresses": { + "flake": false, + "locked": { + "lastModified": 1664466771, + "narHash": "sha256-m8oidcV9LWU0S+NBw4wH1JdKZVict1EbKBZ6kfdEEf4=", + "owner": "input-output-hk", + "repo": "cardano-addresses", + "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-addresses", + "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "type": "github" + } + }, "cardano-configurations": { "flake": false, "locked": { @@ -1543,7 +1534,7 @@ }, "cardano-node": { "inputs": { - "CHaP": "CHaP_2", + "CHaP": "CHaP_3", "cardano-mainnet-mirror": "cardano-mainnet-mirror", "cardano-node-workbench": [ "ogmios", @@ -1787,6 +1778,23 @@ "type": "github" } }, + "cardano-node_4": { + "flake": false, + "locked": { + "lastModified": 1667644902, + "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "type": "github" + } + }, "cardano-shell": { "flake": false, "locked": { @@ -2059,6 +2067,23 @@ "type": "github" } }, + "cardano-wallet": { + "flake": false, + "locked": { + "lastModified": 1671029634, + "narHash": "sha256-lz3bi711qORionkcfduC+AXGP6Ii+uWiVHRmRZmvfb8=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "type": "github" + } + }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -2334,39 +2359,6 @@ "type": "github" } }, - "devshell_4": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "dmerge": { "inputs": { "nixlib": [ @@ -2462,39 +2454,6 @@ "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, "easy-purescript-nix": { "flake": false, "locked": { @@ -2657,38 +2616,6 @@ "type": "github" } }, - "flake-compat_18": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_19": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_2": { "flake": false, "locked": { @@ -2706,22 +2633,6 @@ "type": "github" } }, - "flake-compat_20": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_3": { "flake": false, "locked": { @@ -3135,36 +3046,6 @@ "type": "github" } }, - "flake-utils_28": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_29": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_3": { "locked": { "lastModified": 1644229661, @@ -3180,21 +3061,6 @@ "type": "github" } }, - "flake-utils_30": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_4": { "locked": { "lastModified": 1623875721, @@ -3631,25 +3497,6 @@ "type": "github" } }, - "gomod2nix_4": { - "inputs": { - "nixpkgs": "nixpkgs_30", - "utils": "utils_16" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, "hackage": { "flake": false, "locked": { @@ -3781,11 +3628,11 @@ "hackage_14": { "flake": false, "locked": { - "lastModified": 1669338728, - "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", + "lastModified": 1653441966, + "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", "type": "github" }, "original": { @@ -4092,36 +3939,34 @@ "cabal-34": "cabal-34_17", "cabal-36": "cabal-36_14", "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_18", "flake-utils": "flake-utils_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", "hackage": "hackage_14", "hpc-coveralls": "hpc-coveralls_17", "hydra": "hydra_8", + "nix-tools": "nix-tools_13", "nixpkgs": [ "plutip", - "bot-plutus-interface", - "nixpkgs" + "haskell-nix", + "nixpkgs-unstable" ], "nixpkgs-2003": "nixpkgs-2003_17", "nixpkgs-2105": "nixpkgs-2105_17", "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-2205": "nixpkgs-2205_5", "nixpkgs-unstable": "nixpkgs-unstable_17", "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_17", - "tullia": "tullia_4" + "stackage": "stackage_17" }, "locked": { - "lastModified": 1669338917, - "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", - "owner": "input-output-hk", + "lastModified": 1653486569, + "narHash": "sha256-342b0LPX6kaBuEX8KZV40FwCCFre1lCtjdTQIDEt9kw=", + "owner": "mlabs-haskell", "repo": "haskell.nix", - "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "rev": "220f8a9cd166e726aea62843bdafa7ecded3375c", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "mlabs-haskell", "repo": "haskell.nix", "type": "github" } @@ -4890,6 +4735,23 @@ "type": "github" } }, + "hw-aeson": { + "flake": false, + "locked": { + "lastModified": 1660218478, + "narHash": "sha256-t4QLmGf5ytzjS0ynn6xON61J+fvBF8vf/+zsBzmw/rM=", + "owner": "haskell-works", + "repo": "hw-aeson", + "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "type": "github" + }, + "original": { + "owner": "haskell-works", + "repo": "hw-aeson", + "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "type": "github" + } + }, "hydra": { "inputs": { "nix": "nix", @@ -5068,7 +4930,6 @@ "nix": "nix_8", "nixpkgs": [ "plutip", - "bot-plutus-interface", "haskell-nix", "hydra", "nix", @@ -5196,19 +5057,13 @@ } }, "iohk-nix_5": { - "inputs": { - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "nixpkgs" - ] - }, + "flake": false, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "lastModified": 1672846257, + "narHash": "sha256-khuzjVfyNCVcsV5cHRyyb2OgWLbYLKSJlrVDNmc2Tv4=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "rev": "ca3d466ed36011bcc14290c6d36c503eb03eb71b", "type": "github" }, "original": { @@ -5741,22 +5596,6 @@ "type": "github" } }, - "mdbook-kroki-preprocessor_4": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, "membench": { "inputs": { "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", @@ -6092,32 +5931,6 @@ "type": "github" } }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, "nix": { "inputs": { "lowdown-src": "lowdown-src", @@ -6256,47 +6069,6 @@ "type": "github" } }, - "nix-nomad_4": { - "inputs": { - "flake-compat": "flake-compat_19", - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_4", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, "nix-tools": { "flake": false, "locked": { @@ -6361,6 +6133,22 @@ "type": "github" } }, + "nix-tools_13": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, "nix-tools_2": { "flake": false, "locked": { @@ -6546,25 +6334,6 @@ "type": "github" } }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_31" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, "nixTools": { "flake": false, "locked": { @@ -6877,47 +6646,6 @@ "type": "github" } }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1670827406, @@ -7334,11 +7062,11 @@ }, "nixpkgs-2105_17": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -7606,11 +7334,11 @@ }, "nixpkgs-2111_17": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -7812,22 +7540,6 @@ "type": "github" } }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2211": { "locked": { "lastModified": 1669997163, @@ -8094,11 +7806,11 @@ }, "nixpkgs-unstable_17": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { @@ -8566,53 +8278,6 @@ "type": "indirect" } }, - "nixpkgs_30": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_31": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_32": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_4": { "locked": { "lastModified": 1632864508, @@ -8846,7 +8511,7 @@ }, "ogmios": { "inputs": { - "CHaP": "CHaP", + "CHaP": "CHaP_2", "blank": "blank", "cardano-configurations": "cardano-configurations_2", "cardano-node": "cardano-node", @@ -8925,7 +8590,7 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_4", + "CHaP": "CHaP_5", "blank": "blank_5", "cardano-configurations": "cardano-configurations_4", "cardano-node": "cardano-node_3", @@ -8954,7 +8619,7 @@ }, "ogmios_2": { "inputs": { - "CHaP": "CHaP_3", + "CHaP": "CHaP_4", "blank": "blank_3", "cardano-node": "cardano-node_2", "flake-compat": "flake-compat_10", @@ -9369,42 +9034,32 @@ }, "plutip": { "inputs": { - "CHaP": [ - "plutip", - "bot-plutus-interface", - "CHaP" - ], - "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_20", - "haskell-nix": [ - "plutip", - "bot-plutus-interface", - "haskell-nix" - ], - "iohk-nix": [ - "plutip", - "bot-plutus-interface", - "iohk-nix" - ], + "CHaP": "CHaP_6", + "cardano-addresses": "cardano-addresses", + "cardano-node": "cardano-node_4", + "cardano-wallet": "cardano-wallet", + "flake-compat": "flake-compat_17", + "haskell-nix": "haskell-nix_5", + "hw-aeson": "hw-aeson", + "iohk-nix": "iohk-nix_5", "nixpkgs": [ "plutip", - "bot-plutus-interface", "haskell-nix", - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { - "lastModified": 1671024770, - "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", - "owner": "mlabs-haskell", + "lastModified": 1674564441, + "narHash": "sha256-S/tDhNzumvUIuqYZWGF2RRb0doX+AR8M7tVfFQL2rgM=", + "owner": "zmrocze", "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "rev": "1f5d33182b8c7909a3e0617d6278f1989a0e51ca", "type": "github" }, "original": { - "owner": "mlabs-haskell", + "owner": "zmrocze", + "ref": "plutip-core", "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" } }, @@ -9549,6 +9204,7 @@ }, "root": { "inputs": { + "CHaP": "CHaP", "cardano-configurations": "cardano-configurations", "cardano-node": [ "ogmios-nixos", @@ -9556,11 +9212,19 @@ ], "easy-purescript-nix": "easy-purescript-nix", "flake-compat": "flake-compat", + "haskell-nix": [ + "plutip", + "haskell-nix" + ], + "iohk-nix": [ + "plutip", + "iohk-nix" + ], "iohk-nix-environments": "iohk-nix-environments", "kupo": "kupo", "kupo-nixos": "kupo-nixos", "nixpkgs": [ - "ogmios", + "plutip", "nixpkgs" ], "ogmios": "ogmios", @@ -9701,11 +9365,11 @@ "stackage_17": { "flake": false, "locked": { - "lastModified": 1669338854, - "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", + "lastModified": 1653355076, + "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", + "rev": "71b16ca68d6acd639121db43238896357fe53f54", "type": "github" }, "original": { @@ -9964,48 +9628,6 @@ "type": "github" } }, - "std_4": { - "inputs": { - "blank": "blank_7", - "devshell": "devshell_4", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_29", - "makes": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", - "microvm": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_32", - "yants": "yants_4" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, "tullia": { "inputs": { "nix-nomad": "nix-nomad", @@ -10082,32 +9704,6 @@ "type": "github" } }, - "tullia_4": { - "inputs": { - "nix-nomad": "nix-nomad_4", - "nix2container": "nix2container_4", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ], - "std": "std_4" - }, - "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, "unstable_nixpkgs": { "locked": { "lastModified": 1653307806, @@ -10243,21 +9839,6 @@ "type": "github" } }, - "utils_16": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_2": { "locked": { "lastModified": 1638122382, @@ -10450,31 +10031,6 @@ "repo": "yants", "type": "github" } - }, - "yants_4": { - "inputs": { - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index d61dd3ee6..e25a79fc7 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,7 @@ nixConfig.bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; inputs = { - nixpkgs.follows = "ogmios/nixpkgs"; + nixpkgs.follows = "plutip/nixpkgs"; flake-compat = { url = "github:edolstra/flake-compat"; @@ -12,7 +12,7 @@ }; ogmios.url = "github:mlabs-haskell/ogmios/a7687bc03b446bc74564abe1873fbabfa1aac196"; - plutip.url = "github:mlabs-haskell/plutip?rev=8d1795d9ac3f9c6f31381104b25c71576eeba009"; + # plutip.url = "github:mlabs-haskell/plutip?rev=8d1795d9ac3f9c6f31381104b25c71576eeba009"; kupo-nixos.url = "github:mlabs-haskell/kupo-nixos/438799a67d0e6e17f21b7b3d0ae1b6325e505c61"; kupo-nixos.inputs.kupo.follows = "kupo"; @@ -42,6 +42,19 @@ url = "github:justinwoo/easy-purescript-nix/da7acb2662961fd355f0a01a25bd32bf33577fa8"; flake = false; }; + + # Plutip server related inputs + # todo: change this when https://github.com/mlabs-haskell/plutip/pull/169 is merged + plutip.url = "github:zmrocze/plutip/plutip-core"; + haskell-nix.follows = "plutip/haskell-nix"; + iohk-nix = { + follows = "plutip/iohk-nix"; + flake = false; + }; + CHaP = { + url = "github:input-output-hk/cardano-haskell-packages?ref=repo"; + flake = false; + }; }; outputs = @@ -189,6 +202,13 @@ }; }; }; + + plutipServerFor = pkgs: import ./plutip-server { + inherit pkgs; + inherit (inputs) plutip CHaP iohk-nix; + inherit (pkgs) system; + src = ./plutip-server; + }; in { overlay = builtins.trace @@ -226,6 +246,10 @@ }); }; }; + plutip-server = nixpkgs.lib.composeManyExtensions [ + inputs.haskell-nix.overlay + (import "${inputs.iohk-nix}/overlays/crypto") + ]; runtime = ( final: prev: @@ -234,7 +258,8 @@ in { plutip-server = - inputs.plutip.packages.${system}."plutip:exe:plutip-server"; + (plutipServerFor final).hsPkgs.plutip-server.components.exes.plutip-server; + # inputs.plutip.packages.${system}."plutip:exe:plutip-server" ogmios-datum-cache = inputs.ogmios-datum-cache.defaultPackage.${system}; ogmios = ogmios.packages.${system}."ogmios:exe:ogmios"; @@ -246,14 +271,21 @@ ); }; + # flake from haskell.nix project + hsFlake = perSystem (system: (plutipServerFor (nixpkgsFor system)).flake { }); + devShells = perSystem (system: { # This is the default `devShell` and can be run without specifying # it (i.e. `nix develop`) default = (psProjectFor (nixpkgsFor system)).devShell; + + # This can be used with `nix develop .#hsDevShell + hsDevShell = self.hsFlake.${system}.devShell; }); packages = perSystem (system: (psProjectFor (nixpkgsFor system)).packages + // ((plutipServerFor (nixpkgsFor system)).flake { }).packages ); apps = perSystem (system: diff --git a/plutip-server/LICENSE b/plutip-server/LICENSE new file mode 100644 index 000000000..2d81c86b8 --- /dev/null +++ b/plutip-server/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2022 MLabs Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plutip-server/cabal.project b/plutip-server/cabal.project new file mode 100644 index 000000000..43c5ee6f5 --- /dev/null +++ b/plutip-server/cabal.project @@ -0,0 +1,49 @@ +repository cardano-haskell-packages + url: https://input-output-hk.github.io/cardano-haskell-packages + secure: True + root-keys: + 3e0cce471cf09815f930210f7827266fd09045445d65923e6d0238a6cd15126f + 443abb7fb497a134c343faf52f0b659bd7999bc06b7f63fa76dc99d631f9bea1 + a86a1f6ce86c449c46666bda44268677abf29b5b2d2eb5ec7af903ec2f117a82 + bcec67e8e99cabfa7764d75ad9b158d72bfacf70ca1d0ec8bc6b4406d1bf8413 + c00aae8461a256275598500ea0e187588c35a5d5d7454fb57eac18d9edb86a56 + d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee + +index-state: 2022-05-25T00:00:00Z +index-state: cardano-haskell-packages 2022-10-25T20:00:00Z + +packages: ./. + +tests: true +benchmarks: true +test-show-details: direct + +allow-newer: + *:aeson + , size-based:template-haskell + +constraints: +-- cardano-node == 1.35.4 + , aeson >= 2 + + , hedgehog >= 1.1 + + , cardano-prelude == 0.1.0.0 + , base-deriving-via == 0.1.0.0 + , cardano-binary == 1.5.0 + , cardano-binary-test == 1.3.0 + , cardano-crypto-class == 2.0.0.0.1 + , cardano-crypto-praos == 2.0.0.0.1 + , cardano-crypto-tests == 2.0.0.0.1 + , cardano-slotting == 0.1.0.0 + , measures == 0.1.0.0 + , orphans-deriving-via == 0.1.0.0 + , strict-containers == 0.1.0.0 + , plutus-core == 1.0.0.1 + , plutus-ledger-api == 1.0.0.1 + , plutus-tx == 1.0.0.0 + , plutus-tx-plugin == 1.0.0.0 + , prettyprinter-configurable == 0.1.0.0 + , plutus-ghc-stub == 8.6.5 + , word-array == 0.1.0.0 + , word-array == 0.1.0.0 diff --git a/plutip-server/default.nix b/plutip-server/default.nix new file mode 100644 index 000000000..14432c188 --- /dev/null +++ b/plutip-server/default.nix @@ -0,0 +1,68 @@ +{ pkgs, system, src, plutip, iohk-nix, CHaP }: +let + haskellModules = plutip.haskellModules ++ [ + ({ config, pkgs, ... }: { + packages.plutip-server.components.exes.plutip-server = { + pkgconfig = [ [ pkgs.makeWrapper ] ]; + postInstall = with pkgs; '' + wrapProgram $out/bin/plutip-server \ + --prefix PATH : "${lib.makeBinPath [ + config.hsPkgs.cardano-cli.components.exes.cardano-cli + config.hsPkgs.cardano-node.components.exes.cardano-node + ]}" + ''; + }; + }) + ]; + extraSources = plutip.extraSources ++ [ + { + src = plutip; + subdirs = [ "." ]; + } + ]; + project = pkgs.haskell-nix.cabalProject { + name = "plutip-server"; + + inherit src; + + inputMap = { + "https://input-output-hk.github.io/cardano-haskell-packages" = CHaP; + }; + + compiler-nix-name = "ghc8107"; + + shell = { + withHoogle = true; + exactDeps = true; + + packages = ps: [ ps.plutip-server ]; + + tools.haskell-language-server = "latest"; + + nativeBuildInputs = with pkgs; [ + # Haskell Tools + haskellPackages.fourmolu + haskellPackages.cabal-install + haskellPackages.cabal-fmt + nixpkgs-fmt + hlint + entr + ghcid + git + fd + + # hls doesn't support preprocessors yet so this has to exist in PATH + haskellPackages.record-dot-preprocessor + + # Cardano tools + project.hsPkgs.cardano-cli.components.exes.cardano-cli + project.hsPkgs.cardano-node.components.exes.cardano-node + ]; + }; + + # inherit (bot-plutus-interface); + inherit extraSources; + modules = haskellModules; + }; +in +project diff --git a/plutip-server/fourmolu.yaml b/plutip-server/fourmolu.yaml new file mode 100644 index 000000000..fc79883a8 --- /dev/null +++ b/plutip-server/fourmolu.yaml @@ -0,0 +1,8 @@ +indentation: 2 +comma-style: leading +record-brace-space: true +indent-wheres: true +diff-friendly-import-export: true +respectful: true +haddock-style: single-line +newlines-between-decls: 1 diff --git a/plutip-server/hie.yaml b/plutip-server/hie.yaml new file mode 100644 index 000000000..daa7318b0 --- /dev/null +++ b/plutip-server/hie.yaml @@ -0,0 +1,12 @@ +cradle: + cabal: + - path: "./src" + component: "lib:plutip" + - path: "./test" + component: "test-suite:plutip-tests" + - path: "./local-cluster/" + component: "exe:local-cluster" + - path: "./contract-execution/" + component: "exe:contract-execution" + - path: "./plutip-server/" + component: "exe:plutip-server" diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal new file mode 100644 index 000000000..a69f27686 --- /dev/null +++ b/plutip-server/plutip-server.cabal @@ -0,0 +1,96 @@ +cabal-version: 3.0 +name: plutip-server +version: 0.2 +license-file: LICENSE +author: mlabs +maintainer: TODO +build-type: Simple +extra-source-files: CHANGELOG.md + +common common-language + default-extensions: + BangPatterns + DataKinds + DeriveAnyClass + DeriveFoldable + DeriveFunctor + DeriveGeneric + DeriveLift + DeriveTraversable + DerivingStrategies + EmptyDataDecls + ExplicitForAll + FlexibleContexts + FlexibleInstances + GeneralizedNewtypeDeriving + ImportQualifiedPost + LambdaCase + MonoLocalBinds + MultiParamTypeClasses + NamedFieldPuns + NumericUnderscores + OverloadedStrings + QuasiQuotes + RankNTypes + RecordWildCards + ScopedTypeVariables + StandaloneDeriving + TemplateHaskell + TupleSections + TypeApplications + TypeFamilies + TypeOperators + TypeSynonymInstances + ViewPatterns + +common common-configs + default-language: Haskell2010 + +common common-ghc-options + ghc-options: + -fno-ignore-interface-pragmas -fno-omit-interface-pragmas + -fno-specialize -fno-strictness -fno-warn-orphans -fobject-code + -fplugin-opt PlutusTx.Plugin:defer-errors + +executable plutip-server + import: common-language + import: common-ghc-options + main-is: Main.hs + hs-source-dirs: src + default-language: Haskell2010 + build-depends: + , aeson + , async + , base + , base16-bytestring + , bytestring + , cardano-api + , cardano-ledger-core + , cardano-wallet + , cardano-wallet-launcher + , data-default + , directory + , exceptions + , extra + , filepath + , http-types + , mtl + , optparse-applicative + , plutip + , positive + , servant-server + , stm + , text + , time + , unliftio + , wai + , wai-cors + , wai-logger + , warp + + other-modules: + Api + Api.Handlers + Types + + ghc-options: -Wall -threaded -rtsopts diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs new file mode 100644 index 000000000..b3c6fcc93 --- /dev/null +++ b/plutip-server/src/Api.hs @@ -0,0 +1,67 @@ +module Api where + +import Api.Handlers ( + startClusterHandler, + stopClusterHandler, + ) +import Control.Monad.IO.Class (liftIO) +import Control.Monad.Reader (runReaderT) +import Data.Kind (Type) +import Network.Wai.Middleware.Cors qualified as Cors +import Servant ( + Application, + Handler, + JSON, + Post, + Proxy (Proxy), + ReqBody, + Server, + ServerT, + hoistServer, + serve, + (:<|>) ((:<|>)), + (:>), + ) +import Types ( + AppM (AppM), + Env (Env), + ServerOptions, + StartClusterRequest, + StartClusterResponse, + StopClusterRequest, + StopClusterResponse, + options, + ) + +type Api = + "start" + :> ReqBody '[JSON] StartClusterRequest + :> Post '[JSON] StartClusterResponse + :<|> "stop" + :> ReqBody '[JSON] StopClusterRequest + :> Post '[JSON] StopClusterResponse + +app :: Env -> Application +app = Cors.cors (const $ Just policy) . serve api . appServer + where + policy :: Cors.CorsResourcePolicy + policy = + Cors.simpleCorsResourcePolicy + { Cors.corsRequestHeaders = ["Content-Type"] + , Cors.corsMethods = ["OPTIONS", "GET", "POST"] + } + +api :: Proxy Api +api = Proxy + +server :: ServerOptions -> ServerT Api AppM +server serverOptions = + startClusterHandler serverOptions + :<|> stopClusterHandler + +appServer :: Env -> Server Api +appServer env@Env {options} = + hoistServer api appHandler (server options) + where + appHandler :: forall (a :: Type). AppM a -> Handler a + appHandler (AppM x) = liftIO $ runReaderT x env diff --git a/plutip-server/src/Api/Handlers.hs b/plutip-server/src/Api/Handlers.hs new file mode 100644 index 000000000..35553329d --- /dev/null +++ b/plutip-server/src/Api/Handlers.hs @@ -0,0 +1,118 @@ +module Api.Handlers ( + startClusterHandler, + stopClusterHandler, +) where + +import Cardano.Launcher.Node (nodeSocketFile) + +import Control.Concurrent.MVar (isEmptyMVar, putMVar, tryTakeMVar) +import Control.Monad (unless) +import Control.Monad.Except (runExceptT, throwError) +import Control.Monad.Extra (unlessM) +import Control.Monad.IO.Class (liftIO) +import Control.Monad.Reader (asks) +import Data.Default (def) +import Data.Foldable (for_) +import Data.Maybe (fromMaybe) +import Plutip.Cluster (startFundedCluster, stopCluster) +import Plutip.Config ( + ExtraConfig (ExtraConfig, ecEpochSize, ecMaxTxSize, ecSlotLength), + PlutipConfig (extraConfig), + ecRaiseExUnitsToMax, + ) +import Plutip.Keys (signKeyCBORHex) +import Plutip.Types (ClusterEnv (runningNode), RunningNode (RunningNode), keysDir) +import System.Directory (doesFileExist) +import System.FilePath (replaceFileName) +import Types ( + AppM, + ClusterStartupFailureReason ( + ClusterIsRunningAlready, + NegativeLovelaces, + NodeConfigNotFound + ), + ClusterStartupParameters ( + ClusterStartupParameters, + keysDirectory, + nodeConfigPath, + nodeSocketPath, + privateKeys + ), + Env (status), + Lovelace (unLovelace), + ServerOptions, + StartClusterRequest ( + StartClusterRequest, + epochSize, + keysToGenerate, + maxTxSize, + raiseExUnitsToMax, + slotLength + ), + StartClusterResponse ( + ClusterStartupFailure, + ClusterStartupSuccess + ), + StopClusterRequest (StopClusterRequest), + StopClusterResponse (StopClusterFailure, StopClusterSuccess), + ) + +startClusterHandler :: ServerOptions -> StartClusterRequest -> AppM StartClusterResponse +startClusterHandler + _ + StartClusterRequest + { keysToGenerate + , slotLength + , epochSize + , maxTxSize + , raiseExUnitsToMax + } = interpret $ do + -- Check that lovelace amounts are positive + for_ keysToGenerate $ \lovelaceAmounts -> + for_ lovelaceAmounts $ \lovelaces -> + unless (unLovelace lovelaces > 0) $ + throwError NegativeLovelaces + statusMVar <- asks status + isClusterDown <- liftIO $ isEmptyMVar statusMVar + unless isClusterDown $ throwError ClusterIsRunningAlready + let cfg = def {extraConfig = extraConf} + keysToGenerate' = map fromIntegral <$> keysToGenerate + (statusTVar, (clusterEnv, keys)) <- liftIO $ startFundedCluster cfg keysToGenerate' (curry pure) + liftIO $ putMVar statusMVar statusTVar + + let nodeConfigPath = getNodeConfigFile clusterEnv + -- safeguard against directory tree structure changes + unlessM (liftIO $ doesFileExist nodeConfigPath) $ throwError NodeConfigNotFound + pure $ + ClusterStartupSuccess $ + ClusterStartupParameters + { privateKeys = signKeyCBORHex <$> keys + , nodeSocketPath = getNodeSocketFile clusterEnv + , nodeConfigPath = nodeConfigPath + , keysDirectory = keysDir clusterEnv + } + where + getNodeSocketFile (runningNode -> RunningNode conn _ _ _) = nodeSocketFile conn + getNodeConfigFile = + -- assumption is that node.config lies in the same directory as node.socket + flip replaceFileName "node.config" . getNodeSocketFile + interpret = fmap (either ClusterStartupFailure id) . runExceptT + + extraConf :: ExtraConfig + extraConf = + let defConfig = def + in ExtraConfig + (fromMaybe (ecSlotLength defConfig) slotLength) + (fromMaybe (ecEpochSize defConfig) epochSize) + (fromMaybe (ecMaxTxSize defConfig) maxTxSize) + (fromMaybe (ecRaiseExUnitsToMax defConfig) raiseExUnitsToMax) + +stopClusterHandler :: StopClusterRequest -> AppM StopClusterResponse +stopClusterHandler StopClusterRequest = do + statusMVar <- asks status + maybeClusterStatus <- liftIO $ tryTakeMVar statusMVar + case maybeClusterStatus of + Nothing -> pure $ StopClusterFailure "Cluster is not running" + Just statusTVar -> do + liftIO $ stopCluster statusTVar + pure StopClusterSuccess diff --git a/plutip-server/src/Main.hs b/plutip-server/src/Main.hs new file mode 100644 index 000000000..35f26c573 --- /dev/null +++ b/plutip-server/src/Main.hs @@ -0,0 +1,59 @@ +module Main (main) where + +import Api (app) +import Control.Applicative ((<**>)) +import Control.Concurrent.MVar (newEmptyMVar) +import Data.Function ((&)) +import Network.HTTP.Types (Status) +import Network.Wai (Request) +import Network.Wai.Handler.Warp ( + Port, + Settings, + defaultSettings, + runSettings, + setLogger, + setPort, + ) +import Network.Wai.Logger (withStdoutLogger) +import Options.Applicative qualified as Options +import System.Exit (die) +import Types (Env (Env, options, status), ServerOptions (ServerOptions, port)) + +main :: IO () +main = do + serverOptions@ServerOptions {port} <- Options.execParser opts + withStdoutLogger $ \logger -> do + putStrLn $ "Plutip server starting on port " <> show port + runSettings (mkSettings port logger) + . app + =<< either die pure + =<< newEnvIO serverOptions + where + mkSettings :: + Port -> (Request -> Status -> Maybe Integer -> IO ()) -> Settings + mkSettings port logger = defaultSettings & setPort port & setLogger logger + +newEnvIO :: ServerOptions -> IO (Either String Env) +newEnvIO options = do + status <- newEmptyMVar + pure . Right $ Env {status, options} + +opts :: Options.ParserInfo ServerOptions +opts = + Options.info (serverOptionsParser <**> Options.helper) $ + Options.fullDesc + <> Options.progDesc + "plutip-server is used for integration with cardano-transaction-lib" + +serverOptionsParser :: Options.Parser ServerOptions +serverOptionsParser = + ServerOptions + <$> Options.option + Options.auto + ( Options.long "port" + <> Options.short 'p' + <> Options.help "Server port" + <> Options.showDefault + <> Options.value 8082 + <> Options.metavar "INT" + ) diff --git a/plutip-server/src/Types.hs b/plutip-server/src/Types.hs new file mode 100644 index 000000000..d5aae5632 --- /dev/null +++ b/plutip-server/src/Types.hs @@ -0,0 +1,135 @@ +module Types ( + AppM (AppM), + ClusterStartupFailureReason ( + ClusterIsRunningAlready, + NegativeLovelaces, + NodeConfigNotFound + ), + Env (Env, status, options), + ErrorMessage, + Lovelace (unLovelace), + PrivateKey, + ServerOptions (ServerOptions, port), + StartClusterRequest ( + StartClusterRequest, + keysToGenerate, + slotLength, + epochSize, + maxTxSize, + raiseExUnitsToMax + ), + StartClusterResponse ( + ClusterStartupSuccess, + ClusterStartupFailure + ), + ClusterStartupParameters ( + ClusterStartupParameters, + keysDirectory, + nodeSocketPath, + privateKeys, + nodeConfigPath + ), + StopClusterRequest (StopClusterRequest), + StopClusterResponse (StopClusterSuccess, StopClusterFailure), +) where + +import Cardano.Ledger.Slot (EpochSize) +import Control.Concurrent.MVar (MVar) +import Control.Monad.Catch (MonadThrow) +import Control.Monad.IO.Class (MonadIO) +import Control.Monad.Reader (MonadReader, ReaderT) +import Data.Aeson (FromJSON, ToJSON, parseJSON) +import Data.Kind (Type) +import Data.Text (Text) +import Data.Time (NominalDiffTime) +import GHC.Generics (Generic) +import Network.Wai.Handler.Warp (Port) +import Numeric.Natural (Natural) +import Plutip.Cluster (StopClusterRef) + +-- TVar is used for signaling by 'startCluster'/'stopCluster' (STM is used +-- for blocking). +-- MVar is used by plutip-server to store current TVar (we allow maximum of one +-- cluster at any given moment). +-- This MVar is used by start/stop handlers. +-- The payload of ClusterStatus is irrelevant. +type ClusterStatusRef = MVar StopClusterRef + +data Env = Env + { status :: ClusterStatusRef + , options :: ServerOptions + } + +data ServerOptions = ServerOptions + { port :: Port + } + deriving stock (Generic) + +newtype AppM (a :: Type) = AppM (ReaderT Env IO a) + deriving newtype + ( Functor + , Applicative + , Monad + , MonadIO + , MonadReader Env + , MonadThrow + ) + +type ErrorMessage = Text + +newtype Lovelace = Lovelace {unLovelace :: Integer} + deriving stock (Show, Eq, Generic) + deriving newtype (ToJSON, Num, Enum, Ord, Real, Integral) + +instance FromJSON Lovelace where + parseJSON json = do + Lovelace <$> parseJSON json + +data StartClusterRequest = StartClusterRequest + { keysToGenerate :: [[Lovelace]] + -- ^ Lovelace amounts for each UTXO of each wallet + , slotLength :: Maybe NominalDiffTime + -- ^ Set the SlotLength. If set to Nothing use the default + , epochSize :: Maybe EpochSize + -- ^ Set the EpochSize. If set to Nothing use the default + , maxTxSize :: Maybe Natural + -- ^ Set The maxTxSize. If set to Nothing use the default + , raiseExUnitsToMax :: Maybe Bool + -- ^ Raise the execustion units to the maxbound when true. + -- If set to Nothing use the default + } + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + +-- CborHex +type PrivateKey = Text + +data ClusterStartupFailureReason + = ClusterIsRunningAlready + | NegativeLovelaces + | NodeConfigNotFound + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + +data ClusterStartupParameters = ClusterStartupParameters + { privateKeys :: [PrivateKey] + , nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + , keysDirectory :: FilePath + } + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + +data StartClusterResponse + = ClusterStartupFailure ClusterStartupFailureReason + | ClusterStartupSuccess ClusterStartupParameters + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + +data StopClusterRequest = StopClusterRequest + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + +data StopClusterResponse = StopClusterSuccess | StopClusterFailure ErrorMessage + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index e62667931..2c2c0bf0e 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -122,12 +122,8 @@ instance Show PrivateKeyResponse where instance DecodeAeson PrivateKeyResponse where decodeAeson json = do cborStr <- decodeAeson json - let splitted = String.splitAt 4 cborStr - -- 5820 prefix comes from Cbor - if splitted.before == "5820" then do - cborBytes <- note err $ hexToByteArray splitted.after - PrivateKeyResponse <$> note err (privateKeyFromBytes (RawBytes cborBytes)) - else Left err + cborBytes <- note err $ hexToByteArray cborStr + PrivateKeyResponse <$> note err (privateKeyFromBytes (RawBytes cborBytes)) where err :: JsonDecodeError err = TypeMismatch "PrivateKey" From da92420b8c35d2c16dfc86f487dc38be8450df7c Mon Sep 17 00:00:00 2001 From: Amir Rad Date: Thu, 26 Jan 2023 13:11:42 +0000 Subject: [PATCH 005/478] Rename plutip dep to plutip-core --- flake.lock | 1497 ++++++++++++++++++----------- flake.nix | 4 +- plutip-server/plutip-server.cabal | 2 +- 3 files changed, 944 insertions(+), 559 deletions(-) diff --git a/flake.lock b/flake.lock index 7ad3ece3a..40f3183b6 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1674130532, - "narHash": "sha256-NMmWWxKSW7pI8DKaZNZmTu/kwVAoUvYV++U6ZcDXfWM=", + "lastModified": 1674576169, + "narHash": "sha256-C1ZcthHsrGFrybcGF3YHM581obGaK8CMS1M8TFQOoLk=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "d45467c05a6a99a21dcf3cb17c946c9cab15270b", + "rev": "f6fa2238d406ce11f9adcad27e823795c4e4627b", "type": "github" }, "original": { @@ -246,6 +246,22 @@ "type": "github" } }, + "HTTP_18": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -502,10 +518,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { @@ -536,10 +552,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -584,6 +600,23 @@ } }, "cabal-32_16": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_17": { "flake": false, "locked": { "lastModified": 1603716527, @@ -600,7 +633,7 @@ "type": "github" } }, - "cabal-32_17": { + "cabal-32_18": { "flake": false, "locked": { "lastModified": 1603716527, @@ -638,10 +671,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -689,10 +722,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { @@ -723,10 +756,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -788,6 +821,23 @@ } }, "cabal-34_11": { + "flake": false, + "locked": { + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_12": { "flake": false, "locked": { "lastModified": 1640353650, @@ -804,7 +854,7 @@ "type": "github" } }, - "cabal-34_12": { + "cabal-34_13": { "flake": false, "locked": { "lastModified": 1640353650, @@ -821,7 +871,7 @@ "type": "github" } }, - "cabal-34_13": { + "cabal-34_14": { "flake": false, "locked": { "lastModified": 1622475795, @@ -838,7 +888,7 @@ "type": "github" } }, - "cabal-34_14": { + "cabal-34_15": { "flake": false, "locked": { "lastModified": 1622475795, @@ -855,7 +905,7 @@ "type": "github" } }, - "cabal-34_15": { + "cabal-34_16": { "flake": false, "locked": { "lastModified": 1622475795, @@ -872,7 +922,7 @@ "type": "github" } }, - "cabal-34_16": { + "cabal-34_17": { "flake": false, "locked": { "lastModified": 1640353650, @@ -889,7 +939,7 @@ "type": "github" } }, - "cabal-34_17": { + "cabal-34_18": { "flake": false, "locked": { "lastModified": 1640353650, @@ -926,11 +976,11 @@ "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -977,11 +1027,11 @@ "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { @@ -1011,11 +1061,11 @@ "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1077,6 +1127,23 @@ } }, "cabal-36_11": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_12": { "flake": false, "locked": { "lastModified": 1640163203, @@ -1093,7 +1160,7 @@ "type": "github" } }, - "cabal-36_12": { + "cabal-36_13": { "flake": false, "locked": { "lastModified": 1640163203, @@ -1110,7 +1177,7 @@ "type": "github" } }, - "cabal-36_13": { + "cabal-36_14": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1127,7 +1194,7 @@ "type": "github" } }, - "cabal-36_14": { + "cabal-36_15": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1164,11 +1231,11 @@ "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1198,11 +1265,11 @@ "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { @@ -1232,11 +1299,11 @@ "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1266,11 +1333,11 @@ "cabal-36_9": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { @@ -1363,7 +1430,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1642701714, @@ -1382,7 +1449,7 @@ }, "cardano-mainnet-mirror_2": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1642701714, @@ -1401,7 +1468,7 @@ }, "cardano-mainnet-mirror_3": { "inputs": { - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1642701714, @@ -1420,7 +1487,7 @@ }, "cardano-mainnet-mirror_4": { "inputs": { - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1642701714, @@ -1439,7 +1506,7 @@ }, "cardano-mainnet-mirror_5": { "inputs": { - "nixpkgs": "nixpkgs_15" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1642701714, @@ -1458,7 +1525,7 @@ }, "cardano-mainnet-mirror_6": { "inputs": { - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_17" }, "locked": { "lastModified": 1642701714, @@ -1477,7 +1544,7 @@ }, "cardano-mainnet-mirror_7": { "inputs": { - "nixpkgs": "nixpkgs_21" + "nixpkgs": "nixpkgs_22" }, "locked": { "lastModified": 1642701714, @@ -1496,7 +1563,7 @@ }, "cardano-mainnet-mirror_8": { "inputs": { - "nixpkgs": "nixpkgs_23" + "nixpkgs": "nixpkgs_24" }, "locked": { "lastModified": 1642701714, @@ -1515,7 +1582,7 @@ }, "cardano-mainnet-mirror_9": { "inputs": { - "nixpkgs": "nixpkgs_24" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1642701714, @@ -1939,6 +2006,22 @@ "type": "github" } }, + "cardano-shell_18": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, "cardano-shell_2": { "flake": false, "locked": { @@ -2748,11 +2831,11 @@ }, "flake-utils": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -2762,6 +2845,21 @@ } }, "flake-utils_10": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -2776,7 +2874,7 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_12": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2791,7 +2889,7 @@ "type": "github" } }, - "flake-utils_12": { + "flake-utils_13": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2806,7 +2904,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_14": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2821,7 +2919,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_15": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2836,7 +2934,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_16": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2851,7 +2949,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_17": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -2866,7 +2964,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_18": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -2881,7 +2979,7 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_19": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -2896,13 +2994,13 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_2": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -2911,7 +3009,7 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_20": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2926,7 +3024,7 @@ "type": "github" } }, - "flake-utils_20": { + "flake-utils_21": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2941,7 +3039,7 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_22": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2956,7 +3054,7 @@ "type": "github" } }, - "flake-utils_22": { + "flake-utils_23": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -2971,7 +3069,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_24": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2986,7 +3084,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_25": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3001,7 +3099,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_26": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -3016,7 +3114,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_27": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3031,7 +3129,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_28": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3063,11 +3161,11 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -3108,11 +3206,11 @@ }, "flake-utils_7": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -3123,11 +3221,11 @@ }, "flake-utils_8": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -3138,11 +3236,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3304,7 +3402,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "ghc-8.6.5-iohk_18": { "flake": false, "locked": { "lastModified": 1600920045, @@ -3321,7 +3419,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { "lastModified": 1600920045, @@ -3338,7 +3436,24 @@ "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { "lastModified": 1600920045, @@ -3442,7 +3557,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_9", "utils": "utils_5" }, "locked": { @@ -3461,7 +3576,7 @@ }, "gomod2nix_2": { "inputs": { - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_19", "utils": "utils_10" }, "locked": { @@ -3480,7 +3595,7 @@ }, "gomod2nix_3": { "inputs": { - "nixpkgs": "nixpkgs_26", + "nixpkgs": "nixpkgs_27", "utils": "utils_15" }, "locked": { @@ -3500,11 +3615,11 @@ "hackage": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1653441966, + "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", "type": "github" }, "original": { @@ -3562,6 +3677,22 @@ } }, "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1667783503, + "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { "flake": false, "locked": { "lastModified": 1643073363, @@ -3577,7 +3708,7 @@ "type": "github" } }, - "hackage_11": { + "hackage_12": { "flake": false, "locked": { "lastModified": 1643073363, @@ -3593,7 +3724,7 @@ "type": "github" } }, - "hackage_12": { + "hackage_13": { "flake": false, "locked": { "lastModified": 1639098768, @@ -3609,7 +3740,7 @@ "type": "github" } }, - "hackage_13": { + "hackage_14": { "flake": false, "locked": { "lastModified": 1667783503, @@ -3625,7 +3756,7 @@ "type": "github" } }, - "hackage_14": { + "hackage_15": { "flake": false, "locked": { "lastModified": 1653441966, @@ -3644,11 +3775,11 @@ "hackage_2": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { @@ -3676,11 +3807,11 @@ "hackage_4": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", "type": "github" }, "original": { @@ -3692,11 +3823,11 @@ "hackage_5": { "flake": false, "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", "type": "github" }, "original": { @@ -3708,11 +3839,11 @@ "hackage_6": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", "type": "github" }, "original": { @@ -3740,11 +3871,11 @@ "hackage_8": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", "type": "github" }, "original": { @@ -3756,11 +3887,11 @@ "hackage_9": { "flake": false, "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", "type": "github" }, "original": { @@ -3776,14 +3907,13 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "nix-tools": "nix-tools", "nixpkgs": [ - "kupo-nixos", "haskell-nix", "nixpkgs-unstable" ], @@ -3794,6 +3924,45 @@ "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, + "locked": { + "lastModified": 1674575951, + "narHash": "sha256-m1uLB0tMV3nO3O//09gNGmlxlnfwMgAQnM+MliVhofU=", + "owner": "mlabs-haskell", + "repo": "haskell.nix", + "rev": "1eaffea8eee8bc446fbc869288dab9a08f742c06", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_3", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" + }, "locked": { "lastModified": 1654219238, "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", @@ -3809,32 +3978,32 @@ "type": "github" } }, - "haskell-nix_2": { + "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_6", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_7", "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_7", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_3", + "flake-utils": "flake-utils_8", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_4", "iserv-proxy": "iserv-proxy", "nixpkgs": [ "ogmios", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", "nixpkgs-2205": "nixpkgs-2205_2", "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7", "tullia": "tullia" }, "locked": { @@ -3851,31 +4020,31 @@ "type": "github" } }, - "haskell-nix_3": { + "haskell-nix_4": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_11", + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_12", "flake-compat": "flake-compat_11", - "flake-utils": "flake-utils_15", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_5", + "flake-utils": "flake-utils_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_6", "nixpkgs": [ "ogmios-datum-cache-nixos", "ogmios", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_12", "tullia": "tullia_2" }, "locked": { @@ -3892,30 +4061,30 @@ "type": "github" } }, - "haskell-nix_4": { + "haskell-nix_5": { "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_16", + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_17", "flake-compat": "flake-compat_15", - "flake-utils": "flake-utils_23", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_13", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_7", + "flake-utils": "flake-utils_24", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "hackage": "hackage_14", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_8", "nixpkgs": [ "ogmios-nixos", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_17", "tullia": "tullia_3" }, "locked": { @@ -3932,30 +4101,30 @@ "type": "github" } }, - "haskell-nix_5": { + "haskell-nix_6": { "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_17", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "hackage": "hackage_14", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_8", - "nix-tools": "nix-tools_13", + "HTTP": "HTTP_18", + "cabal-32": "cabal-32_18", + "cabal-34": "cabal-34_18", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_18", + "flake-utils": "flake-utils_28", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", + "hackage": "hackage_15", + "hpc-coveralls": "hpc-coveralls_18", + "hydra": "hydra_9", + "nix-tools": "nix-tools_14", "nixpkgs": [ "plutip", "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_17" + "nixpkgs-2003": "nixpkgs-2003_18", + "nixpkgs-2105": "nixpkgs-2105_18", + "nixpkgs-2111": "nixpkgs-2111_18", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_18", + "stackage": "stackage_18" }, "locked": { "lastModified": 1653486569, @@ -3973,33 +4142,33 @@ }, "haskellNix": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_3", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "flake-utils": "flake-utils_4", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": [ "ogmios", "cardano-node", "hackageNix" ], - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", "nixpkgs": [ "ogmios", "cardano-node", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" }, "locked": { "lastModified": 1665882789, @@ -4016,45 +4185,6 @@ } }, "haskellNix_10": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_20", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_13", - "nix-tools": "nix-tools_10", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_11": { "inputs": { "HTTP": "HTTP_14", "cabal-32": "cabal-32_14", @@ -4070,8 +4200,6 @@ "ogmios-nixos", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_14", @@ -4095,11 +4223,12 @@ "type": "github" } }, - "haskellNix_12": { + "haskellNix_11": { "inputs": { "HTTP": "HTTP_15", "cabal-32": "cabal-32_15", "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_13", "cardano-shell": "cardano-shell_15", "flake-utils": "flake-utils_22", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", @@ -4110,7 +4239,8 @@ "ogmios-nixos", "cardano-node", "node-snapshot", - "plutus-example", + "membench", + "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_15", @@ -4121,11 +4251,11 @@ "stackage": "stackage_15" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", "type": "github" }, "original": { @@ -4134,37 +4264,37 @@ "type": "github" } }, - "haskellNix_2": { + "haskellNix_12": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_4", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "nix-tools": "nix-tools_2", + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cardano-shell": "cardano-shell_16", + "flake-utils": "flake-utils_23", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "hackage": "hackage_13", + "hpc-coveralls": "hpc-coveralls_16", + "nix-tools": "nix-tools_13", "nixpkgs": [ - "ogmios", + "ogmios-nixos", "cardano-node", "node-snapshot", + "plutus-example", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_16" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", "type": "github" }, "original": { @@ -4173,7 +4303,7 @@ "type": "github" } }, - "haskellNix_3": { + "haskellNix_2": { "inputs": { "HTTP": "HTTP_4", "cabal-32": "cabal-32_4", @@ -4189,8 +4319,6 @@ "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_4", @@ -4214,11 +4342,12 @@ "type": "github" } }, - "haskellNix_4": { + "haskellNix_3": { "inputs": { "HTTP": "HTTP_5", "cabal-32": "cabal-32_5", "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", "flake-utils": "flake-utils_6", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", @@ -4229,7 +4358,8 @@ "ogmios", "cardano-node", "node-snapshot", - "plutus-example", + "membench", + "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_5", @@ -4240,11 +4370,11 @@ "stackage": "stackage_5" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", "type": "github" }, "original": { @@ -4253,43 +4383,37 @@ "type": "github" } }, - "haskellNix_5": { + "haskellNix_4": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ogmios-datum-cache-nixos", - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_4", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_7", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_6", "nix-tools": "nix-tools_5", "nixpkgs": [ - "ogmios-datum-cache-nixos", "ogmios", "cardano-node", + "node-snapshot", + "plutus-example", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" }, "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", "type": "github" }, "original": { @@ -4298,7 +4422,7 @@ "type": "github" } }, - "haskellNix_6": { + "haskellNix_5": { "inputs": { "HTTP": "HTTP_8", "cabal-32": "cabal-32_8", @@ -4307,14 +4431,19 @@ "cardano-shell": "cardano-shell_8", "flake-utils": "flake-utils_12", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_6", + "hackage": [ + "ogmios-datum-cache-nixos", + "ogmios", + "cardano-node", + "hackageNix" + ], "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_5", "nix-tools": "nix-tools_6", "nixpkgs": [ "ogmios-datum-cache-nixos", "ogmios", "cardano-node", - "node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_8", @@ -4325,11 +4454,11 @@ "stackage": "stackage_8" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1656898207, + "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", "type": "github" }, "original": { @@ -4338,7 +4467,7 @@ "type": "github" } }, - "haskellNix_7": { + "haskellNix_6": { "inputs": { "HTTP": "HTTP_9", "cabal-32": "cabal-32_9", @@ -4355,8 +4484,6 @@ "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_9", @@ -4380,11 +4507,12 @@ "type": "github" } }, - "haskellNix_8": { + "haskellNix_7": { "inputs": { "HTTP": "HTTP_10", "cabal-32": "cabal-32_10", "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_10", "flake-utils": "flake-utils_14", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", @@ -4396,7 +4524,8 @@ "ogmios", "cardano-node", "node-snapshot", - "plutus-example", + "membench", + "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_10", @@ -4406,6 +4535,46 @@ "old-ghc-nix": "old-ghc-nix_10", "stackage": "stackage_10" }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_8": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_15", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_11", + "nix-tools": "nix-tools_9", + "nixpkgs": [ + "ogmios-datum-cache-nixos", + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11" + }, "locked": { "lastModified": 1639098904, "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", @@ -4422,32 +4591,32 @@ }, "haskellNix_9": { "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_19", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_13", + "flake-utils": "flake-utils_20", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", "hackage": [ "ogmios-nixos", "cardano-node", "hackageNix" ], - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_6", - "nix-tools": "nix-tools_9", + "hpc-coveralls": "hpc-coveralls_13", + "hydra": "hydra_7", + "nix-tools": "nix-tools_10", "nixpkgs": [ "ogmios-nixos", "cardano-node", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12" + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_13" }, "locked": { "lastModified": 1656898207, @@ -4607,6 +4776,22 @@ "type": "github" } }, + "hpc-coveralls_18": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, "hpc-coveralls_2": { "flake": false, "locked": { @@ -4756,7 +4941,6 @@ "inputs": { "nix": "nix", "nixpkgs": [ - "kupo-nixos", "haskell-nix", "hydra", "nix", @@ -4780,9 +4964,8 @@ "inputs": { "nix": "nix_2", "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", + "kupo-nixos", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -4806,7 +4989,8 @@ "nix": "nix_3", "nixpkgs": [ "ogmios", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -4829,10 +5013,8 @@ "inputs": { "nix": "nix_4", "nixpkgs": [ - "ogmios-datum-cache-nixos", "ogmios", - "cardano-node", - "haskellNix", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -4857,7 +5039,8 @@ "nixpkgs": [ "ogmios-datum-cache-nixos", "ogmios", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -4880,9 +5063,9 @@ "inputs": { "nix": "nix_6", "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", + "ogmios-datum-cache-nixos", + "ogmios", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -4906,7 +5089,8 @@ "nix": "nix_7", "nixpkgs": [ "ogmios-nixos", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -4928,6 +5112,30 @@ "hydra_8": { "inputs": { "nix": "nix_8", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_9", "nixpkgs": [ "plutip", "haskell-nix", @@ -4974,7 +5182,7 @@ }, "iohk-nix-environments": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1670489000, @@ -5393,8 +5601,8 @@ }, "kupo-nixos": { "inputs": { - "flake-utils": "flake-utils", - "haskell-nix": "haskell-nix", + "flake-utils": "flake-utils_2", + "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", "kupo": [ "kupo" @@ -5548,6 +5756,22 @@ "type": "github" } }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, "mdbook-kroki-preprocessor": { "flake": false, "locked": { @@ -5857,7 +6081,7 @@ }, "n2c": { "inputs": { - "flake-utils": "flake-utils_10", + "flake-utils": "flake-utils_11", "nixpkgs": [ "ogmios", "haskell-nix", @@ -5882,7 +6106,7 @@ }, "n2c_2": { "inputs": { - "flake-utils": "flake-utils_18", + "flake-utils": "flake-utils_19", "nixpkgs": [ "ogmios-datum-cache-nixos", "ogmios", @@ -5908,7 +6132,7 @@ }, "n2c_3": { "inputs": { - "flake-utils": "flake-utils_26", + "flake-utils": "flake-utils_27", "nixpkgs": [ "ogmios-nixos", "haskell-nix", @@ -5934,7 +6158,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -6064,12 +6288,28 @@ "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nix-tools": { + "nix-tools_10": { "flake": false, "locked": { "lastModified": 1649424170, @@ -6085,7 +6325,7 @@ "type": "github" } }, - "nix-tools_10": { + "nix-tools_11": { "flake": false, "locked": { "lastModified": 1636018067, @@ -6101,7 +6341,7 @@ "type": "github" } }, - "nix-tools_11": { + "nix-tools_12": { "flake": false, "locked": { "lastModified": 1636018067, @@ -6117,7 +6357,7 @@ "type": "github" } }, - "nix-tools_12": { + "nix-tools_13": { "flake": false, "locked": { "lastModified": 1636018067, @@ -6133,7 +6373,7 @@ "type": "github" } }, - "nix-tools_13": { + "nix-tools_14": { "flake": false, "locked": { "lastModified": 1649424170, @@ -6152,11 +6392,11 @@ "nix-tools_2": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { @@ -6200,11 +6440,11 @@ "nix-tools_5": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -6216,11 +6456,11 @@ "nix-tools_6": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { @@ -6264,11 +6504,11 @@ "nix-tools_9": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -6279,8 +6519,8 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_9" + "flake-utils": "flake-utils_9", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1658567952, @@ -6298,8 +6538,8 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_16", - "nixpkgs": "nixpkgs_19" + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_20" }, "locked": { "lastModified": 1658567952, @@ -6317,8 +6557,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_27" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_28" }, "locked": { "lastModified": 1658567952, @@ -6385,7 +6625,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -6406,7 +6646,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_5", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -6427,7 +6667,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_14", + "nixpkgs": "nixpkgs_8", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -6448,7 +6688,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_15", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -6469,7 +6709,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_18", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -6490,7 +6730,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_25", + "nixpkgs": "nixpkgs_23", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -6511,7 +6751,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_29", + "nixpkgs": "nixpkgs_26", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -6529,6 +6769,27 @@ "type": "github" } }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, "nixago": { "inputs": { "flake-utils": [ @@ -6648,15 +6909,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1670827406, - "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, @@ -6804,6 +7066,22 @@ "type": "github" } }, + "nixpkgs-2003_18": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -6949,6 +7227,22 @@ } }, "nixpkgs-2105_10": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { "locked": { "lastModified": 1630481079, "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", @@ -6964,7 +7258,7 @@ "type": "github" } }, - "nixpkgs-2105_11": { + "nixpkgs-2105_12": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -6980,7 +7274,7 @@ "type": "github" } }, - "nixpkgs-2105_12": { + "nixpkgs-2105_13": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -6996,7 +7290,7 @@ "type": "github" } }, - "nixpkgs-2105_13": { + "nixpkgs-2105_14": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -7012,7 +7306,7 @@ "type": "github" } }, - "nixpkgs-2105_14": { + "nixpkgs-2105_15": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -7028,7 +7322,7 @@ "type": "github" } }, - "nixpkgs-2105_15": { + "nixpkgs-2105_16": { "locked": { "lastModified": 1630481079, "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", @@ -7044,7 +7338,7 @@ "type": "github" } }, - "nixpkgs-2105_16": { + "nixpkgs-2105_17": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -7060,7 +7354,7 @@ "type": "github" } }, - "nixpkgs-2105_17": { + "nixpkgs-2105_18": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7077,6 +7371,22 @@ } }, "nixpkgs-2105_2": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -7092,7 +7402,7 @@ "type": "github" } }, - "nixpkgs-2105_3": { + "nixpkgs-2105_4": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -7108,7 +7418,7 @@ "type": "github" } }, - "nixpkgs-2105_4": { + "nixpkgs-2105_5": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -7124,7 +7434,7 @@ "type": "github" } }, - "nixpkgs-2105_5": { + "nixpkgs-2105_6": { "locked": { "lastModified": 1630481079, "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", @@ -7140,7 +7450,7 @@ "type": "github" } }, - "nixpkgs-2105_6": { + "nixpkgs-2105_7": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -7156,7 +7466,7 @@ "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs-2105_8": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7172,7 +7482,7 @@ "type": "github" } }, - "nixpkgs-2105_8": { + "nixpkgs-2105_9": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -7188,29 +7498,29 @@ "type": "github" } }, - "nixpkgs-2105_9": { + "nixpkgs-2111": { "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-2111_10": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", "type": "github" }, "original": { @@ -7220,7 +7530,7 @@ "type": "github" } }, - "nixpkgs-2111_10": { + "nixpkgs-2111_11": { "locked": { "lastModified": 1638410074, "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", @@ -7236,7 +7546,7 @@ "type": "github" } }, - "nixpkgs-2111_11": { + "nixpkgs-2111_12": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -7252,7 +7562,7 @@ "type": "github" } }, - "nixpkgs-2111_12": { + "nixpkgs-2111_13": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -7268,7 +7578,7 @@ "type": "github" } }, - "nixpkgs-2111_13": { + "nixpkgs-2111_14": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -7284,7 +7594,7 @@ "type": "github" } }, - "nixpkgs-2111_14": { + "nixpkgs-2111_15": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -7300,7 +7610,7 @@ "type": "github" } }, - "nixpkgs-2111_15": { + "nixpkgs-2111_16": { "locked": { "lastModified": 1638410074, "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", @@ -7316,7 +7626,7 @@ "type": "github" } }, - "nixpkgs-2111_16": { + "nixpkgs-2111_17": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -7332,7 +7642,7 @@ "type": "github" } }, - "nixpkgs-2111_17": { + "nixpkgs-2111_18": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -7350,11 +7660,11 @@ }, "nixpkgs-2111_2": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -7366,11 +7676,11 @@ }, "nixpkgs-2111_3": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -7398,11 +7708,11 @@ }, "nixpkgs-2111_5": { "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", "type": "github" }, "original": { @@ -7414,11 +7724,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", "type": "github" }, "original": { @@ -7430,11 +7740,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -7446,11 +7756,11 @@ }, "nixpkgs-2111_8": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -7676,6 +7986,21 @@ "type": "indirect" } }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1648219316, @@ -7693,6 +8018,22 @@ } }, "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { "locked": { "lastModified": 1635295995, "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", @@ -7708,7 +8049,7 @@ "type": "github" } }, - "nixpkgs-unstable_11": { + "nixpkgs-unstable_12": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -7724,7 +8065,7 @@ "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-unstable_13": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -7740,7 +8081,7 @@ "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-unstable_14": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -7756,7 +8097,7 @@ "type": "github" } }, - "nixpkgs-unstable_14": { + "nixpkgs-unstable_15": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -7772,7 +8113,7 @@ "type": "github" } }, - "nixpkgs-unstable_15": { + "nixpkgs-unstable_16": { "locked": { "lastModified": 1635295995, "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", @@ -7788,7 +8129,7 @@ "type": "github" } }, - "nixpkgs-unstable_16": { + "nixpkgs-unstable_17": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -7804,7 +8145,7 @@ "type": "github" } }, - "nixpkgs-unstable_17": { + "nixpkgs-unstable_18": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -7821,6 +8162,22 @@ } }, "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_3": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -7836,7 +8193,7 @@ "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs-unstable_4": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -7852,7 +8209,7 @@ "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs-unstable_5": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -7868,7 +8225,7 @@ "type": "github" } }, - "nixpkgs-unstable_5": { + "nixpkgs-unstable_6": { "locked": { "lastModified": 1635295995, "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", @@ -7884,7 +8241,7 @@ "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs-unstable_7": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -7900,7 +8257,7 @@ "type": "github" } }, - "nixpkgs-unstable_7": { + "nixpkgs-unstable_8": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -7916,7 +8273,7 @@ "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs-unstable_9": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -7932,23 +8289,22 @@ "type": "github" } }, - "nixpkgs-unstable_9": { + "nixpkgs_10": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_10": { + "nixpkgs_11": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -7964,7 +8320,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_12": { "locked": { "lastModified": 1634172192, "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", @@ -7980,7 +8336,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_13": { "locked": { "lastModified": 1634172192, "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", @@ -7996,7 +8352,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_14": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8010,7 +8366,7 @@ "type": "indirect" } }, - "nixpkgs_14": { + "nixpkgs_15": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8025,7 +8381,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_16": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8039,7 +8395,7 @@ "type": "indirect" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8053,7 +8409,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8068,7 +8424,7 @@ "type": "indirect" } }, - "nixpkgs_18": { + "nixpkgs_19": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -8084,37 +8440,36 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_2": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1670827406, + "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_2": { + "nixpkgs_20": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_20": { + "nixpkgs_21": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -8130,7 +8485,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8144,7 +8499,7 @@ "type": "indirect" } }, - "nixpkgs_22": { + "nixpkgs_23": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8159,7 +8514,7 @@ "type": "indirect" } }, - "nixpkgs_23": { + "nixpkgs_24": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8173,7 +8528,7 @@ "type": "indirect" } }, - "nixpkgs_24": { + "nixpkgs_25": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8187,7 +8542,7 @@ "type": "indirect" } }, - "nixpkgs_25": { + "nixpkgs_26": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8202,7 +8557,7 @@ "type": "indirect" } }, - "nixpkgs_26": { + "nixpkgs_27": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -8218,7 +8573,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_28": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -8233,7 +8588,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_29": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -8249,7 +8604,7 @@ "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_3": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8264,7 +8619,22 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_30": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8278,7 +8648,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8293,7 +8663,7 @@ "type": "indirect" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8307,7 +8677,7 @@ "type": "indirect" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -8321,7 +8691,7 @@ "type": "indirect" } }, - "nixpkgs_7": { + "nixpkgs_8": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8336,7 +8706,7 @@ "type": "indirect" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -8352,21 +8722,6 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, "node-process": { "flake": false, "locked": { @@ -8516,7 +8871,7 @@ "cardano-configurations": "cardano-configurations_2", "cardano-node": "cardano-node", "flake-compat": "flake-compat_4", - "haskell-nix": "haskell-nix_2", + "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", "nixpkgs": [ "ogmios", @@ -8542,7 +8897,7 @@ "ogmios-datum-cache": { "inputs": { "flake-compat": "flake-compat_7", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_12", "unstable_nixpkgs": "unstable_nixpkgs" }, "locked": { @@ -8569,7 +8924,7 @@ "cardano-node" ], "flake-compat": "flake-compat_8", - "nixpkgs": "nixpkgs_12", + "nixpkgs": "nixpkgs_13", "ogmios": "ogmios_2", "unstable_nixpkgs": "unstable_nixpkgs_2" }, @@ -8595,7 +8950,7 @@ "cardano-configurations": "cardano-configurations_4", "cardano-node": "cardano-node_3", "flake-compat": "flake-compat_14", - "haskell-nix": "haskell-nix_4", + "haskell-nix": "haskell-nix_5", "iohk-nix": "iohk-nix_4", "nixpkgs": [ "ogmios-nixos", @@ -8623,7 +8978,7 @@ "blank": "blank_3", "cardano-node": "cardano-node_2", "flake-compat": "flake-compat_10", - "haskell-nix": "haskell-nix_3", + "haskell-nix": "haskell-nix_4", "iohk-nix": "iohk-nix_3", "nixpkgs": [ "ogmios-datum-cache-nixos", @@ -8800,6 +9155,23 @@ "type": "github" } }, + "old-ghc-nix_18": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -9039,7 +9411,7 @@ "cardano-node": "cardano-node_4", "cardano-wallet": "cardano-wallet", "flake-compat": "flake-compat_17", - "haskell-nix": "haskell-nix_5", + "haskell-nix": "haskell-nix_6", "hw-aeson": "hw-aeson", "iohk-nix": "iohk-nix_5", "nixpkgs": [ @@ -9049,11 +9421,11 @@ ] }, "locked": { - "lastModified": 1674564441, - "narHash": "sha256-S/tDhNzumvUIuqYZWGF2RRb0doX+AR8M7tVfFQL2rgM=", + "lastModified": 1674738526, + "narHash": "sha256-sD7kokCpikxuNaplEy5NLYtJ5uR5x8Qd0a6YVtFF1fw=", "owner": "zmrocze", "repo": "plutip", - "rev": "1f5d33182b8c7909a3e0617d6278f1989a0e51ca", + "rev": "fcef76191f3683d89c186c382f31e43600e9669e", "type": "github" }, "original": { @@ -9212,10 +9584,7 @@ ], "easy-purescript-nix": "easy-purescript-nix", "flake-compat": "flake-compat", - "haskell-nix": [ - "plutip", - "haskell-nix" - ], + "haskell-nix": "haskell-nix", "iohk-nix": [ "plutip", "iohk-nix" @@ -9237,11 +9606,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "lastModified": 1653355076, + "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "rev": "71b16ca68d6acd639121db43238896357fe53f54", "type": "github" }, "original": { @@ -9251,6 +9620,22 @@ } }, "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_11": { "flake": false, "locked": { "lastModified": 1639012797, @@ -9266,7 +9651,7 @@ "type": "github" } }, - "stackage_11": { + "stackage_12": { "flake": false, "locked": { "lastModified": 1667610757, @@ -9282,7 +9667,7 @@ "type": "github" } }, - "stackage_12": { + "stackage_13": { "flake": false, "locked": { "lastModified": 1656898145, @@ -9298,7 +9683,7 @@ "type": "github" } }, - "stackage_13": { + "stackage_14": { "flake": false, "locked": { "lastModified": 1643073493, @@ -9314,7 +9699,7 @@ "type": "github" } }, - "stackage_14": { + "stackage_15": { "flake": false, "locked": { "lastModified": 1643073493, @@ -9330,7 +9715,7 @@ "type": "github" } }, - "stackage_15": { + "stackage_16": { "flake": false, "locked": { "lastModified": 1639012797, @@ -9346,7 +9731,7 @@ "type": "github" } }, - "stackage_16": { + "stackage_17": { "flake": false, "locked": { "lastModified": 1667610757, @@ -9362,7 +9747,7 @@ "type": "github" } }, - "stackage_17": { + "stackage_18": { "flake": false, "locked": { "lastModified": 1653355076, @@ -9381,11 +9766,11 @@ "stackage_2": { "flake": false, "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { @@ -9397,11 +9782,11 @@ "stackage_3": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1665537461, + "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", "type": "github" }, "original": { @@ -9429,11 +9814,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { @@ -9445,11 +9830,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { @@ -9461,11 +9846,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { @@ -9477,11 +9862,11 @@ "stackage_8": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1656898145, + "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", "type": "github" }, "original": { @@ -9511,7 +9896,7 @@ "blank": "blank_2", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_10", "makes": [ "ogmios", "haskell-nix", @@ -9529,7 +9914,7 @@ ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_11", "yants": "yants" }, "locked": { @@ -9551,7 +9936,7 @@ "blank": "blank_4", "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_18", "makes": [ "ogmios-datum-cache-nixos", "ogmios", @@ -9571,7 +9956,7 @@ ], "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_21", "yants": "yants_2" }, "locked": { @@ -9593,7 +9978,7 @@ "blank": "blank_6", "devshell": "devshell_3", "dmerge": "dmerge_3", - "flake-utils": "flake-utils_25", + "flake-utils": "flake-utils_26", "makes": [ "ogmios-nixos", "haskell-nix", @@ -9611,7 +9996,7 @@ ], "n2c": "n2c_3", "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", + "nixpkgs": "nixpkgs_29", "yants": "yants_3" }, "locked": { diff --git a/flake.nix b/flake.nix index e25a79fc7..54ed72019 100644 --- a/flake.nix +++ b/flake.nix @@ -44,9 +44,9 @@ }; # Plutip server related inputs - # todo: change this when https://github.com/mlabs-haskell/plutip/pull/169 is merged + # TODO: change this when https://github.com/mlabs-haskell/plutip/pull/169 is merged plutip.url = "github:zmrocze/plutip/plutip-core"; - haskell-nix.follows = "plutip/haskell-nix"; + haskell-nix.url = "github:mlabs-haskell/haskell.nix"; iohk-nix = { follows = "plutip/iohk-nix"; flake = false; diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal index a69f27686..da121dc1b 100644 --- a/plutip-server/plutip-server.cabal +++ b/plutip-server/plutip-server.cabal @@ -76,7 +76,7 @@ executable plutip-server , http-types , mtl , optparse-applicative - , plutip + , plutip-core , positive , servant-server , stm From c129fadf5b5301cf0e0535af0297eccfa133d6b9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 27 Jan 2023 19:10:47 +0400 Subject: [PATCH 006/478] Fix a warning --- src/Internal/Plutip/Types.purs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 2c2c0bf0e..7423e49a7 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -50,7 +50,6 @@ import Data.Log.Message (Message) import Data.Maybe (Maybe) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -import Data.String as String import Data.Time.Duration (Seconds(Seconds)) import Data.UInt (UInt) import Effect.Aff (Aff) From 42302b8fb91ca189b3ae7f9f3a1752dc0064c0a1 Mon Sep 17 00:00:00 2001 From: Amir Rad Date: Tue, 31 Jan 2023 12:33:34 +0000 Subject: [PATCH 007/478] Fix formatting --- flake.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index cab988e00..f9b9c84be 100644 --- a/flake.nix +++ b/flake.nix @@ -205,15 +205,15 @@ }; }; - plutipServerFor = system: - let - pkgs = import inputs.plutip-nixpkgs { - inherit system; + plutipServerFor = system: + let + pkgs = import inputs.plutip-nixpkgs { + inherit system; overlays = [ inputs.haskell-nix.overlay (import "${inputs.iohk-nix}/overlays/crypto") ]; - }; + }; in import ./plutip-server { inherit pkgs; From 0bfc0a4fb91222a504dd0e5b35f56a43edd43782 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 17 Feb 2023 13:06:44 +0400 Subject: [PATCH 008/478] Add plutip-server README --- plutip-server/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 plutip-server/README.md diff --git a/plutip-server/README.md b/plutip-server/README.md new file mode 100644 index 000000000..d1aedfc20 --- /dev/null +++ b/plutip-server/README.md @@ -0,0 +1,3 @@ +# plutip-server + +Plutip-server is a simple HTTP interface for [Plutip](https://github.com/mlabs-haskell/plutip) to start and stop local plutip clusters on demand. From 47b96da3d6b985c032d45cdc02a92bbc69f8ea76 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 17 Feb 2023 13:13:22 +0400 Subject: [PATCH 009/478] Add .gitignore and fix hie.yaml in plutip-server --- plutip-server/.gitignore | 1 + plutip-server/hie.yaml | 10 +--------- 2 files changed, 2 insertions(+), 9 deletions(-) create mode 100644 plutip-server/.gitignore diff --git a/plutip-server/.gitignore b/plutip-server/.gitignore new file mode 100644 index 000000000..838458f20 --- /dev/null +++ b/plutip-server/.gitignore @@ -0,0 +1 @@ +/dist/ \ No newline at end of file diff --git a/plutip-server/hie.yaml b/plutip-server/hie.yaml index daa7318b0..14f279877 100644 --- a/plutip-server/hie.yaml +++ b/plutip-server/hie.yaml @@ -1,12 +1,4 @@ cradle: cabal: - - path: "./src" - component: "lib:plutip" - - path: "./test" - component: "test-suite:plutip-tests" - - path: "./local-cluster/" - component: "exe:local-cluster" - - path: "./contract-execution/" - component: "exe:contract-execution" - - path: "./plutip-server/" + - path: "./src/" component: "exe:plutip-server" From 7b1331608d80d20f538526e9931263979e99d317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Mon, 20 Feb 2023 17:58:17 +0100 Subject: [PATCH 010/478] Reexport ConnectToNuFi in Contract.Wallet --- CHANGELOG.md | 24 ++++++++++++++++-------- src/Contract/Wallet.purs | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6851822fa..c34e2ce14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,46 +7,54 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +- [[Unreleased]](#unreleased) + - [Fixed](#fixed) - [[v5.0.0]](#v500) - [Added](#added) - [Changed](#changed) - [Removed](#removed) - - [Fixed](#fixed) + - [Fixed](#fixed-1) - [Runtime Dependencies](#runtime-dependencies) - [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-1) + - [Fixed](#fixed-2) - [[v4.0.1] - 2022-12-20](#v401---2022-12-20) - [Added](#added-1) - [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-2) - [Changed](#changed-1) - [Removed](#removed-1) - - [Fixed](#fixed-2) + - [Fixed](#fixed-3) - [Runtime Dependencies](#runtime-dependencies-1) - [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-3) - [Changed](#changed-2) - [Removed](#removed-2) - - [Fixed](#fixed-3) + - [Fixed](#fixed-4) - [Runtime Dependencies](#runtime-dependencies-2) - [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-4) - [Changed](#changed-3) - [Removed](#removed-3) - - [Fixed](#fixed-4) + - [Fixed](#fixed-5) - [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) - [Added](#added-5) - [Removed](#removed-4) - [Changed](#changed-4) - - [Fixed](#fixed-5) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-6) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-7) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-8) - [[1.0.0] - 2022-06-10](#100---2022-06-10) +## [Unreleased] + +### Fixed + +- `ConnectToNuFi` now reexported in `Contract.Wallet` + ## [v5.0.0] ### Added diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index db283b5f4..1caec5912 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -59,6 +59,7 @@ import Ctl.Internal.Wallet.Spec , ConnectToFlint , ConnectToLode , ConnectToEternl + , ConnectToNuFi ) ) import Data.Maybe (Maybe(Just)) From 9846332eea27775e127b2ce1d2dcc24f2a031721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Mon, 20 Feb 2023 17:59:43 +0100 Subject: [PATCH 011/478] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c34e2ce14..c78de2e2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,7 +53,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed -- `ConnectToNuFi` now reexported in `Contract.Wallet` +- `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) ## [v5.0.0] From 13adac22532a9bbedc7f52a11a975a6a53cdee21 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 20 Feb 2023 21:58:39 +0400 Subject: [PATCH 012/478] Retry requests failed due to 503 in Kupo --- src/Internal/QueryM/Kupo.purs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 8f8a1d967..62b366c04 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -22,6 +22,7 @@ import Aeson ) import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat +import Affjax.StatusCode (StatusCode(StatusCode)) import Control.Alt ((<|>)) import Control.Bind (bindFlipped) import Control.Monad.Error.Class (throwError) @@ -88,17 +89,19 @@ import Data.Either (Either(Left, Right), note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET)) +import Data.Lens (_Right, to, (^?)) import Data.Map (Map) import Data.Map (fromFoldable, isEmpty, lookup) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.String (Pattern(Pattern), drop, indexOf, splitAt) as String +import Data.Time.Duration (Milliseconds(Milliseconds)) import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (toString) as UInt -import Effect.Aff (Aff) +import Effect.Aff (Aff, delay) import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object (toUnfoldable) as Object @@ -460,9 +463,23 @@ kupoGetRequestAff :: ServerConfig -> String -> Aff (Either Affjax.Error (Affjax.Response String)) -kupoGetRequestAff config endpoint = do - Affjax.request $ Affjax.defaultRequest +kupoGetRequestAff = kupoGetRequestRetryAff (Milliseconds 1000.0) + +-- | Retry on `503 Service Unavailable` error with exponentially-increasing +-- | interval (to not DOS the service even more). +kupoGetRequestRetryAff + :: Milliseconds + -> ServerConfig + -> String + -> Aff (Either Affjax.Error (Affjax.Response String)) +kupoGetRequestRetryAff delayMs config endpoint = do + result <- Affjax.request $ Affjax.defaultRequest { method = Left GET , url = mkHttpUrl config <> endpoint , responseFormat = Affjax.ResponseFormat.string } + if result ^? _Right <<< to _.status == Just (StatusCode 503) then + delay delayMs *> + kupoGetRequestRetryAff (Milliseconds (unwrap delayMs * 2.0)) config + endpoint + else pure result From 3b3afacf94e4be565e6e63ec0f59c99877e1456b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 20 Feb 2023 22:12:55 +0400 Subject: [PATCH 013/478] Update CHANGELOG --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6851822fa..cc65df7ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,46 +7,63 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -- [[v5.0.0]](#v500) +- [Unreleased](#unreleased) - [Added](#added) - [Changed](#changed) - - [Removed](#removed) - [Fixed](#fixed) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-1) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed) +- [[v5.0.0]](#v500) - [Added](#added-1) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-2) - [Changed](#changed-1) - [Removed](#removed-1) + - [Fixed](#fixed-1) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-2) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-2) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-3) - [Changed](#changed-2) - [Removed](#removed-2) - [Fixed](#fixed-3) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-4) - [Changed](#changed-3) - [Removed](#removed-3) - [Fixed](#fixed-4) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-5) - - [Removed](#removed-4) - [Changed](#changed-4) + - [Removed](#removed-4) - [Fixed](#fixed-5) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-6) + - [Removed](#removed-5) + - [Changed](#changed-5) - [Fixed](#fixed-6) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-7) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-8) - [[1.0.0] - 2022-06-10](#100---2022-06-10) +## Unreleased + +### Added + +- Automatic retries for `403 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) + +### Changed + +### Fixed + +### Removed + ## [v5.0.0] ### Added From 7cdfde17184cb8c4349ce4653e990794f8f2ff49 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 20 Feb 2023 22:27:43 +0300 Subject: [PATCH 014/478] Fix unwanted recursion in e2e.env --- test/e2e.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e.env b/test/e2e.env index 9ffb8615f..7b8163794 100755 --- a/test/e2e.env +++ b/test/e2e.env @@ -31,7 +31,7 @@ nami:http://localhost:4008/?nami:OneShotMinting # Uncomment these to test with Blockfrost. -# Run `npm run e2e-browser` for instructions on how to set up the API key +# Run 'npm run e2e-browser' for instructions on how to set up the API key # nami:http://localhost:4008/?blockfrost-nami-preview:Schnorr # nami:http://localhost:4008/?blockfrost-nami-preview:ECDSA # nami:http://localhost:4008/?blockfrost-nami-preview:SignMultiple From 8812d289ab3290ecbce2662d2fe6556036d62164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Tue, 21 Feb 2023 09:57:51 +0100 Subject: [PATCH 015/478] Fallback WS error --- src/Internal/JsWebSocket.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index a21eac518..7a0c537e7 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -45,7 +45,17 @@ exports._onWsConnect = ws => fn => () => { exports._onWsError = ws => fn => () => { const listener = function (event) { - fn(event.message)(); + if ( + "message" in event && + typeof event.message === "string" && + event.message.length > 0 + ) { + fn(event.message)(); + } else if ("error" in event && event.error instanceof Error) { + fn(event.error.toString())(); + } else { + fn(event.toString())(); + } }; ws.addEventListener("error", listener); ws.finalizers.push(() => { From 72f6bc86a73a2f5b7f0207ce6c66d7c81a4566fd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 21 Feb 2023 22:29:31 +0300 Subject: [PATCH 016/478] Better changelog line --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 750e62f4f..b2c7c10f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,7 +63,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) -- Error message from `reconnecting-websocket` is passed correctly in `Ctl.Internal.JsWebSocket._onWsError` ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) +- Better reporting for WebSocket errors ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) ### Removed From d4008cbbdbfac2d015525aabfa067858554fdda3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 21 Feb 2023 23:50:56 +0400 Subject: [PATCH 017/478] SignMultiple example creates UTxOs for itself instead of failing --- examples/SignMultiple.purs | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 82b295012..7a8efbc8a 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -7,7 +7,7 @@ import Contract.Prelude import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Log (logInfo') +import Contract.Log (logInfo', logWarn') import Contract.Monad ( Contract , launchAff_ @@ -21,8 +21,10 @@ import Contract.Transaction ( BalancedSignedTransaction , TransactionHash , awaitTxConfirmed + , awaitTxConfirmedWithTimeout , signTransaction , submit + , submitTxFromConstraints , withBalancedTxs ) import Contract.TxConstraints as Constraints @@ -54,8 +56,9 @@ contract = do ownStakePubKeysHashes -- Early fail if not enough utxos present for 2 transactions - unlessM hasSufficientUtxos $ throwContractError - "Insufficient Utxos for 2 transactions" + unlessM hasSufficientUtxos do + logWarn' "Insufficient Utxos for 2 transactions" + createAdditionalUtxos let constraints :: Constraints.TxConstraints Void Void @@ -108,6 +111,33 @@ contract = do pure $ length walletValidUtxos >= 2 -- 2 transactions +createAdditionalUtxos :: Contract Unit +createAdditionalUtxos = do + logInfo' "Creating additional UTxOs for SignMultiple example" + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + skh <- liftedM "Failed to get own SKH" $ join <<< head <$> + ownStakePubKeysHashes + + let + constraints :: Constraints.TxConstraints Void Void + constraints = + Constraints.mustPayToPubKeyAddress pkh skh + ( Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + ) <> + Constraints.mustPayToPubKeyAddress pkh skh + ( Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + ) + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + txId <- submitTxFromConstraints lookups constraints + + awaitTxConfirmedWithTimeout (wrap 100.0) txId + logInfo' $ "Tx submitted successfully!" + example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract From 936d381284346a03d1934436950ea1af8f7bdefc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 15:55:51 +0400 Subject: [PATCH 018/478] Filter out collateral UTxOs correctly --- src/Internal/Wallet/Cip30Mock.purs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 7bd180da8..c9ca7a9b5 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -154,10 +154,11 @@ mkCip30Mock pKey mSKey = do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos let - -- filter UTxOs that will be used as collateral + -- filter out UTxOs that will be used as collateral nonCollateralUtxos = Map.filter - (flip Array.elem (collateralUtxos <#> unwrap >>> _.output)) + (\utxo -> + not $ Array.elem utxo (collateralUtxos <#> unwrap >>> _.output)) utxos -- Convert to CSL representation and serialize cslUtxos <- traverse (liftEffect <<< convertTransactionUnspentOutput) From 573bea5e282c0ed4805fb207e3792a945adcd8f8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 15:58:39 +0400 Subject: [PATCH 019/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d6f78ff5..6c58ac5c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) +- Fix a bug in UTxO selection in `Cip30Mock` (only affects Cip30Mock users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) ### Removed From 1ef981b387c5f628d56c17eae564395e395268fc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 16:01:45 +0400 Subject: [PATCH 020/478] More optimal computation path, fix formatting --- src/Internal/Wallet/Cip30Mock.purs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index c9ca7a9b5..ca15256a9 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -154,12 +154,10 @@ mkCip30Mock pKey mSKey = do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos let + collateralOutputs = collateralUtxos <#> unwrap >>> _.output -- filter out UTxOs that will be used as collateral nonCollateralUtxos = - Map.filter - (\utxo -> - not $ Array.elem utxo (collateralUtxos <#> unwrap >>> _.output)) - utxos + Map.filter (not <<< flip Array.elem collateralOutputs) utxos -- Convert to CSL representation and serialize cslUtxos <- traverse (liftEffect <<< convertTransactionUnspentOutput) $ Map.toUnfoldable nonCollateralUtxos <#> \(input /\ output) -> From a01d34c55610fcb7e35bb5e238335d75d5cda758 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 17:14:50 +0400 Subject: [PATCH 021/478] Examples should use getWalletUtxos instead of utxosAt --- examples/OneShotMinting.purs | 4 ++-- examples/PlutusV2/ReferenceInputs.purs | 22 +++++++--------------- examples/Utxos.purs | 12 ++++-------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index f9914f158..b08d19691 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -47,9 +47,9 @@ import Contract.Transaction , submitTxFromConstraintsReturningFee ) import Contract.TxConstraints as Constraints -import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName) import Contract.Value (singleton) as Value +import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers @@ -96,7 +96,7 @@ mkContractWithAssertions exampleName mkMintingPolicy = do ownAddress <- liftedM "Failed to get own address" $ head <$> getWalletAddresses - utxos <- utxosAt ownAddress + utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos oref <- liftContractM "Utxo set is empty" (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 8ffa03eb4..2de3abc72 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -2,12 +2,7 @@ module Ctl.Examples.PlutusV2.ReferenceInputs (contract, example, main) where import Contract.Prelude -import Contract.Address - ( Address - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes - ) +import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -37,8 +32,8 @@ import Contract.Transaction , submit ) import Contract.TxConstraints as Constraints -import Contract.Utxos (utxosAt) import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet (getWalletUtxos) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) as Array @@ -61,9 +56,7 @@ contract = do (Array.head <$> ownPaymentPubKeysHashes) skh <- join <<< Array.head <$> ownStakePubKeysHashes - ownAddress <- liftedM "Failed to get own address" - (Array.head <$> getWalletAddresses) - utxos <- utxosAt ownAddress + utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos oref <- liftContractM "Utxo set is empty" (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) @@ -87,11 +80,10 @@ contract = do awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" - pure { ownAddress, referenceInput: oref, balancedSignedTx } + pure { referenceInput: oref, balancedSignedTx } type ContractResult = - { ownAddress :: Address - , referenceInput :: TransactionInput + { referenceInput :: TransactionInput , balancedSignedTx :: BalancedSignedTransaction } @@ -109,11 +101,11 @@ assertTxContainsReferenceInput = assertReferenceInputNotSpent :: ContractCheck ContractResult assertReferenceInputNotSpent = assertionToCheck "A reference input UTxO" - \{ ownAddress, referenceInput } -> do + \{ referenceInput } -> do let assertionFailure :: ContractAssertionFailure assertionFailure = CustomFailure "Reference input has been spent" - utxos <- lift $ utxosAt ownAddress + utxos <- lift $ liftedM "Failed to get UTxOs from wallet" getWalletUtxos assertContract assertionFailure do Map.member referenceInput utxos diff --git a/examples/Utxos.purs b/examples/Utxos.purs index fc6602a8b..93f56654e 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -31,10 +31,8 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (Value) import Contract.Value (lovelaceValueOf, singleton) as Value -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - ) as Helpers +import Contract.Wallet (getWalletUtxos) +import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array import Data.BigInt (fromInt) as BigInt @@ -54,7 +52,6 @@ contract = do logInfo' "Running Examples.Utxos" pkh <- liftedM "Failed to get own PKH" ownPaymentPubKeyHash skh <- ownStakePubKeyHash - address <- liftedM "Failed to get own address" getWalletAddress datum <- liftEffect $ Datum @@ -62,7 +59,7 @@ contract = do <<< BigInt.fromInt <$> randomSampleOne arbitrary - utxos <- utxosAt address + utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos oref <- liftContractM "Utxo set is empty" (map fst <<< Array.head <<< Map.toUnfoldable $ utxos) @@ -100,7 +97,7 @@ contract = do awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" - utxos' <- utxosAt address + utxos' <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos logInfo (tag "utxos" $ show utxos') "Utxos after transaction confirmation:" -------------------------------------------------------------------------------- @@ -120,4 +117,3 @@ mustPayWithDatumAndScriptRef pkh Nothing = Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh mustPayWithDatumAndScriptRef pkh (Just skh) = Constraints.mustPayToPubKeyAddressWithDatumAndScriptRef pkh skh - From 6cac0c73b6c4d66533b3ba13332f177ec543362b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 17:16:03 +0400 Subject: [PATCH 022/478] Add getOutputAddressesByTxHash to QueryHandle --- src/Internal/Contract/QueryHandle.purs | 7 ++++++- src/Internal/QueryM/Kupo.purs | 20 +++++++++++++++++++- src/Internal/Service/Blockfrost.purs | 20 ++++++++++++++++---- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 3c4ebc255..ef30ef3de 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -31,6 +31,7 @@ import Ctl.Internal.QueryM.CurrentEpoch (getCurrentEpoch) as QueryM import Ctl.Internal.QueryM.EraSummaries (getEraSummaries) as QueryM import Ctl.Internal.QueryM.Kupo ( getDatumByHash + , getOutputAddressesByTxHash , getScriptByHash , getTxMetadata , getUtxoByOref @@ -82,12 +83,13 @@ type QueryHandle = TransactionHash -> Aff (Either GetTxMetadataError GeneralTransactionMetadata) , getUtxoByOref :: TransactionInput -> AffE (Maybe TransactionOutput) + , getOutputAddressesByTxHash :: TransactionHash -> AffE (Array Address) , doesTxExist :: TransactionHash -> AffE Boolean , utxosAt :: Address -> AffE UtxoMap , getChainTip :: AffE Chain.Tip , getCurrentEpoch :: Aff CurrentEpoch -- TODO Capture errors from all backends - , submitTx :: Transaction -> Aff (Either ClientError TransactionHash) + , submitTx :: Transaction -> AffE TransactionHash , evaluateTx :: Transaction -> AdditionalUtxoSet -> Aff TxEvaluationR , getEraSummaries :: AffE EraSummaries , getPoolIds :: AffE (Array PoolPubKeyHash) @@ -110,6 +112,7 @@ queryHandleForCtlBackend contractEnv backend = { getDatumByHash: runQueryM' <<< Kupo.getDatumByHash , getScriptByHash: runQueryM' <<< Kupo.getScriptByHash , getUtxoByOref: runQueryM' <<< Kupo.getUtxoByOref + , getOutputAddressesByTxHash: runQueryM' <<< Kupo.getOutputAddressesByTxHash , doesTxExist: runQueryM' <<< map (map isJust) <<< Kupo.isTxConfirmed , getTxMetadata: runQueryM' <<< Kupo.getTxMetadata , utxosAt: runQueryM' <<< Kupo.utxosAt @@ -148,6 +151,8 @@ queryHandleForBlockfrostBackend contractEnv backend = { getDatumByHash: runBlockfrostServiceM' <<< Blockfrost.getDatumByHash , getScriptByHash: runBlockfrostServiceM' <<< Blockfrost.getScriptByHash , getUtxoByOref: runBlockfrostServiceM' <<< Blockfrost.getUtxoByOref + , getOutputAddressesByTxHash: runBlockfrostServiceM' <<< + Blockfrost.getOutputAddressesByTxHash , doesTxExist: runBlockfrostServiceM' <<< Blockfrost.doesTxExist , getTxMetadata: runBlockfrostServiceM' <<< Blockfrost.getTxMetadata , utxosAt: runBlockfrostServiceM' <<< Blockfrost.utxosAt diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 62b366c04..d8e6de1ce 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -3,6 +3,7 @@ module Ctl.Internal.QueryM.Kupo , getScriptByHash , getTxMetadata , getUtxoByOref + , getOutputAddressesByTxHash , isTxConfirmed , isTxConfirmedAff , utxosAt @@ -83,6 +84,7 @@ import Ctl.Internal.Types.Transaction ) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Array (uncons) +import Data.Array as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), note) @@ -91,7 +93,7 @@ import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET)) import Data.Lens (_Right, to, (^?)) import Data.Map (Map) -import Data.Map (fromFoldable, isEmpty, lookup) as Map +import Data.Map (fromFoldable, isEmpty, lookup, values) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) @@ -134,6 +136,22 @@ getUtxoByOref oref = runExceptT do txHashHex :: String txHashHex = byteArrayToHex (unwrap txHash) +-- | Specialized function to get addresses only, without resolving script +-- | references. Used internally. +getOutputAddressesByTxHash + :: TransactionHash -> QueryM (Either ClientError (Array Address)) +getOutputAddressesByTxHash txHash = runExceptT do + (kupoUtxoMap :: KupoUtxoMap) <- ExceptT $ handleAffjaxResponse <$> + kupoGetRequest endpoint + pure $ Array.fromFoldable (Map.values $ unwrap kupoUtxoMap) <#> + unwrap >>> _.address + where + endpoint :: String + endpoint = "/matches/*@" <> txHashHex <> "?unspent" + where + txHashHex :: String + txHashHex = byteArrayToHex (unwrap txHash) + getDatumByHash :: DataHash -> QueryM (Either ClientError (Maybe Datum)) getDatumByHash (DataHash dataHashBytes) = do let endpoint = "/datums/" <> byteArrayToHex dataHashBytes diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index e67014b95..3c09cf979 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -36,25 +36,26 @@ module Ctl.Internal.Service.Blockfrost , BlockfrostSystemStart(BlockfrostSystemStart) , OnBlockfrostRawGetResponseHook , OnBlockfrostRawPostResponseHook + , doesTxExist , evaluateTx , getChainTip , getCurrentEpoch , getDatumByHash , getEraSummaries + , getOutputAddressesByTxHash + , getPoolIds , getProtocolParameters + , getPubKeyHashDelegationsAndRewards , getScriptByHash , getScriptInfo , getSystemStart , getTxMetadata , getUtxoByOref - , doesTxExist + , getValidatorHashDelegationsAndRewards , runBlockfrostServiceM , runBlockfrostServiceTestM , submitTx , utxosAt - , getPoolIds - , getPubKeyHashDelegationsAndRewards - , getValidatorHashDelegationsAndRewards ) where import Prelude @@ -555,6 +556,17 @@ getUtxoByOref oref@(TransactionInput { transactionId: txHash }) = runExceptT do traverse (ExceptT <<< resolveBlockfrostTxOutput) (snd <$> Array.find (eq oref <<< fst) (unwrap blockfrostUtxoMap)) +-- | Specialized function to get addresses only, without resolving script +-- | references. Used internally. +getOutputAddressesByTxHash + :: TransactionHash + -> BlockfrostServiceM (Either ClientError (Array Address)) +getOutputAddressesByTxHash txHash = runExceptT do + (blockfrostUtxoMap :: BlockfrostUtxosOfTransaction) <- ExceptT $ + blockfrostGetRequest (UtxosOfTransaction txHash) + <#> handle404AsMempty <<< handleBlockfrostResponse + pure $ _.address <<< unwrap <<< snd <$> unwrap blockfrostUtxoMap + -------------------------------------------------------------------------------- -- Get datum by hash -------------------------------------------------------------------------------- From 8475d90b99229ce70cc13620db0dcfee25ad14e3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Feb 2023 17:20:49 +0400 Subject: [PATCH 023/478] Add wallet/backend sync functions and use them in balancing --- src/Contract/Config.purs | 7 ++ src/Contract/Utxos.purs | 4 +- src/Internal/BalanceTx/BalanceTx.purs | 57 ++++++---- src/Internal/BalanceTx/Sync.purs | 114 ++++++++++++++++++++ src/Internal/Contract/AwaitTxConfirmed.purs | 3 + src/Internal/Contract/Monad.purs | 19 +++- src/Internal/Plutip/Server.purs | 2 + 7 files changed, 183 insertions(+), 23 deletions(-) create mode 100644 src/Internal/BalanceTx/Sync.purs diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 9ca9e43e4..c59d373c9 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -72,6 +72,7 @@ import Ctl.Internal.Wallet.Spec import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just, Nothing)) +import Data.Time.Duration (Milliseconds(Milliseconds)) testnetConfig :: ContractParams testnetConfig = @@ -85,6 +86,12 @@ testnetConfig = , customLogger: Nothing , suppressLogs: false , hooks: emptyHooks + , timeParams: + { syncWallet: + { delay: Milliseconds 1_000.0, timeout: Milliseconds 100_000.0 } + , syncBackend: + { delay: Milliseconds 3_000.0, timeout: Milliseconds 100_000.0 } + } } testnetNamiConfig :: ContractParams diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index dc5efb861..1ce120c0a 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -13,7 +13,6 @@ import Prelude import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) -import Contract.Transaction (TransactionInput, TransactionOutput) import Control.Monad.Reader.Class (asks) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletBalance, getWalletUtxos) as Utxos @@ -24,9 +23,10 @@ import Ctl.Internal.Plutus.Conversion ) import Ctl.Internal.Plutus.Conversion.Value (toPlutusValue) import Ctl.Internal.Plutus.Types.Address (class PlutusAddress, getAddress) -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) +import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X import Ctl.Internal.Plutus.Types.Value (Value) +import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Maybe (Maybe) import Effect.Aff.Class (liftAff) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 45da66fa5..a70ff2893 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -6,6 +6,7 @@ module Ctl.Internal.BalanceTx import Prelude +import Contract.Log (logTrace') import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (trace) as Logger @@ -45,12 +46,12 @@ import Ctl.Internal.BalanceTx.Error ) as BalanceTxErrorExport import Ctl.Internal.BalanceTx.Error ( BalanceTxError - ( CouldNotGetChangeAddress - , CouldNotGetCollateral - , CouldNotGetUtxos - , UtxoLookupFailedFor + ( UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed , BalanceInsufficientError + , CouldNotGetCollateral + , CouldNotGetChangeAddress + , CouldNotGetUtxos ) , InvalidInContext(InvalidInContext) ) @@ -64,6 +65,7 @@ import Ctl.Internal.BalanceTx.Helpers , _transaction' , _unbalancedTx ) +import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction @@ -114,8 +116,11 @@ import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) -import Ctl.Internal.Contract.Wallet (getChangeAddress, getWalletAddresses) as Contract.Wallet -import Ctl.Internal.Contract.Wallet (getWalletCollateral) +import Ctl.Internal.Contract.Wallet + ( getChangeAddress + , getWalletCollateral + , getWalletUtxos + ) as Wallet import Ctl.Internal.Helpers ((??)) import Ctl.Internal.Partition (equipartition, partition) import Ctl.Internal.Plutus.Conversion (toPlutusValue) @@ -167,7 +172,6 @@ balanceTxWithConstraints -> Contract (Either BalanceTxError FinalizedTransaction) balanceTxWithConstraints unbalancedTx constraintsBuilder = do pparams <- getProtocolParameters - queryHandle <- getQueryHandle withBalanceTxConstraints constraintsBuilder $ runExceptT do let @@ -175,16 +179,29 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do certsFee = getStakingBalance (unbalancedTx ^. _transaction') depositValuePerCert - srcAddrs <- - asksConstraints Constraints._srcAddresses - >>= maybe (liftContract Contract.Wallet.getWalletAddresses) pure - changeAddr <- getChangeAddress - utxos <- liftEitherContract $ - parTraverse (queryHandle.utxosAt >>> liftAff >>> map hush) srcAddrs <#> - traverse (note CouldNotGetUtxos) - >>> map (foldr Map.union Map.empty) -- merge all utxos into one map + mbSrcAddrs <- asksConstraints Constraints._srcAddresses + + utxos <- liftEitherContract do + case mbSrcAddrs of + -- Use wallet UTxOs. + Nothing -> do + syncBackendWithWallet + note CouldNotGetUtxos <$> do + Wallet.getWalletUtxos + -- Use UTxOs from source addresses + Just srcAddrs -> do + queryHandle <- getQueryHandle + -- Even though some of the addresses may be controlled by the wallet, + -- we can't query the wallet for available UTxOs, because there's no + -- way to tell it to return UTxOs only from specific subset of the + -- addresses controlled by a CIP-30 wallet. + -- `utxosAt` calls are expensive when there are a lot of wallets to + -- check. + parTraverse (queryHandle.utxosAt >>> liftAff >>> map hush) srcAddrs + <#> traverse (note CouldNotGetUtxos) + >>> map (foldr Map.union Map.empty) -- merge all utxos into one map unbalancedCollTx <- case Array.null (unbalancedTx ^. _redeemersTxIns) of @@ -201,6 +218,9 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do utxos `Map.union` (unbalancedTx ^. _unbalancedTx <<< _utxoIndex) availableUtxos <- liftContract $ filterLockedUtxos allUtxos + logTrace' $ "balanceTxWithConstraints: all UTxOs: " <> show allUtxos + logTrace' $ "balanceTxWithConstraints: available UTxOs: " <> show + availableUtxos selectionStrategy <- asksConstraints Constraints._selectionStrategy @@ -217,7 +237,7 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do getChangeAddress :: BalanceTxM Address getChangeAddress = liftMaybe CouldNotGetChangeAddress - =<< maybe (liftContract Contract.Wallet.getChangeAddress) (pure <<< Just) + =<< maybe (liftContract Wallet.getChangeAddress) (pure <<< Just) =<< asksConstraints Constraints._changeAddress unbalancedTxWithNetworkId :: BalanceTxM Transaction @@ -229,7 +249,8 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction setTransactionCollateral changeAddr transaction = do collateral <- - liftEitherContract $ note CouldNotGetCollateral <$> getWalletCollateral + liftEitherContract $ note CouldNotGetCollateral <$> + Wallet.getWalletCollateral let collaterisedTx = addTxCollateral collateral transaction addTxCollateralReturn collateral collaterisedTx changeAddr @@ -299,7 +320,7 @@ runBalancer p = do -- Some CIP-30 wallets don't allow to sign Txs that spend it. nonSpendableCollateralInputs <- if isCip30 then - liftContract $ getWalletCollateral <#> + liftContract $ Wallet.getWalletCollateral <#> fold >>> map (unwrap >>> _.input) >>> Set.fromFoldable else mempty asksConstraints Constraints._nonSpendableInputs <#> diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs new file mode 100644 index 000000000..4c8e41185 --- /dev/null +++ b/src/Internal/BalanceTx/Sync.purs @@ -0,0 +1,114 @@ +-- | Internal module that handles UTxO set synchronization between backend +-- | and wallet query layers. +module Ctl.Internal.BalanceTx.Sync + ( syncBackendWithWallet + , syncWalletWithTransaction + ) where + +import Prelude + +import Contract.Log (logError', logTrace', logWarn') +import Contract.Monad (Contract) +import Contract.Utxos (getUtxo) +import Contract.Wallet (getChangeAddress, getUnusedAddresses, getWalletUtxos) +import Control.Monad.Reader.Class (asks) +import Control.Parallel (parOneOf) +import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Wallet (getWalletAddresses) +import Ctl.Internal.Helpers (liftEither) +import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) +import Ctl.Internal.Wallet (cip30Wallet) +import Data.Array as Array +import Data.Bifunctor (bimap) +import Data.Foldable (all) +import Data.Map as Map +import Data.Maybe (fromMaybe, isJust) +import Data.Newtype (unwrap) +import Data.Set as Set +import Data.Time.Duration (Milliseconds) +import Data.Traversable (traverse) +import Data.Tuple (fst) +import Effect.Aff (delay) +import Effect.Aff.Class (liftAff) +import Effect.Exception (error) + +-- | Wait until all UTxOs that the wallet returns are visible in the +-- | query layer. +syncBackendWithWallet :: Contract Unit +syncBackendWithWallet = whenM isCip30 do + { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncBackend) + parOneOf [ sync delayMs, waitAndLogError timeout errorMessage ] + where + sync :: Milliseconds -> Contract Unit + sync delayMs = do + utxos <- getWalletUtxos <#> fromMaybe Map.empty + allFound <- all isJust <$> traverse getUtxo + (fst <$> Map.toUnfoldableUnordered utxos :: Array TransactionInput) + if allFound then do + logTrace' "syncBackendWithWallet: synchronization finished" + else do + logTrace' $ + "syncBackendWithWallet: waiting for query layer state synchronization..." + liftAff (delay delayMs) + sync delayMs + errorMessage = "Failed to wait for wallet state synchronization (timeout). " + <> "Continuing anyway. Consider increasing timeParams.syncBackend.timeout " + <> "in ContractParams" + +-- | Wait until the wallet can see the UTxOs created by a given transaction. +-- | This function assumes that the transaction has already been confirmed +-- | (i.e. the backend query layer can see its UTxOs). +-- | This function does not have any effect if `KeyWallet` is used. +-- | This function does not have any effect if none of the outputs are at +-- | addresses controlled by the wallet. +-- | You don't need to use this function if you use `awaitTxConfirmed*`. +syncWalletWithTransaction :: TransactionHash -> Contract Unit +syncWalletWithTransaction txHash = whenM isCip30 do + { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) + queryHandle <- getQueryHandle + -- Collect all the addresses controlled by the wallet + -- (reward addresses are omitted on purpose, we don't need them) + ownAddresses <- do + used <- getWalletAddresses <#> Set.fromFoldable + unused <- getUnusedAddresses <#> Set.fromFoldable + change <- getChangeAddress <#> Set.fromFoldable + pure $ used `Set.union` unused `Set.union` change + outputAddresses <- liftAff $ liftEither =<< do + queryHandle.getOutputAddressesByTxHash txHash <#> + bimap (error <<< show) Set.fromFoldable + if Set.isEmpty (Set.intersection ownAddresses outputAddresses) then do + logWarn' $ + "Skipping wait for wallet state synchronization, because the " <> + "transaction does not include outputs controlled by this wallet." + logTrace' $ + "Wallet addresses: " <> show ownAddresses + logTrace' $ + "Transaction output addresses: " <> show ownAddresses + else do + parOneOf [ sync delayMs, waitAndLogError timeout errorMessage ] + where + sync :: Milliseconds -> Contract Unit + sync delayMs = do + inputs <- map fst <<< Map.toUnfoldable <<< fromMaybe Map.empty <$> + getWalletUtxos + if Array.any (\input -> (unwrap input).transactionId == txHash) inputs then + do + logTrace' "syncWalletWithTransaction: synchronization finished" + pure unit + else do + logTrace' + "syncWalletWithTransaction: Waiting for wallet state synchronization..." + liftAff (delay delayMs) + sync delayMs + errorMessage = + "Failed to wait for wallet state synchronization. Continuing anyway. " + <> "This may indicate UTxO locking in use in the wallet. Consider " + <> "increasing timeParams.syncWallet.timeout in ContractParams" + +isCip30 :: Contract Boolean +isCip30 = asks $ isJust <<< (cip30Wallet <=< _.wallet) + +waitAndLogError :: Milliseconds -> String -> Contract Unit +waitAndLogError timeout errorMessage = do + liftAff $ delay timeout + logError' errorMessage diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index 7946b16f3..c33d7f8b4 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -10,6 +10,7 @@ import Prelude import Contract.Monad (liftedE) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf) +import Ctl.Internal.BalanceTx.Sync (syncWalletWithTransaction) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.QueryBackend (getBlockfrostBackend) @@ -88,6 +89,7 @@ awaitTxConfirmedWithTimeout timeoutSeconds txHash = when isBlockfrost do tryUntilTrue delayTime (utxosPresentForTxHash txHash) for_ confirmTxDelay (liftAff <<< delay <<< fromDuration) + syncWalletWithTransaction txHash pure true where delayTime :: Milliseconds @@ -125,6 +127,7 @@ awaitTxConfirmedWithTimeoutSlots timeoutSlots txHash = do tryUntilTrue delayTime do checkSlotLimit limitSlot utxosPresentForTxHash txHash + syncWalletWithTransaction txHash where addSlots :: Int -> Slot -> Contract Slot addSlots n slot = diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 5b61130e0..a9d936cc2 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -2,6 +2,7 @@ module Ctl.Internal.Contract.Monad ( Contract(Contract) , ContractEnv , ContractParams + , ContractTimeParams , LedgerConstants , ParContract(ParContract) , mkContractEnv @@ -72,6 +73,7 @@ import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Time.Duration (Milliseconds) import Data.Traversable (for_, traverse, traverse_) import Effect (Effect) import Effect.Aff (Aff, ParAff, attempt, error, finally, supervise) @@ -158,13 +160,16 @@ runContractInEnv contractEnv = -- ContractEnv -------------------------------------------------------------------------------- --- `LedgerConstants` contains values that technically may change, but we assume --- to be constant during Contract evaluation +-- | `LedgerConstants` contains values that technically may change, but we assume +-- | to be constant during Contract evaluation. type LedgerConstants = { pparams :: ProtocolParameters , systemStart :: SystemStart } +-- | A record containing `Contract` environment - everything a `Contract` needs +-- | to run. It is recommended to use one environment per application to save +-- | on websocket connections and to keep track of `UsedTxOuts`. type ContractEnv = { backend :: QueryBackend , networkId :: NetworkId @@ -176,6 +181,7 @@ type ContractEnv = , wallet :: Maybe Wallet , usedTxOuts :: UsedTxOuts , ledgerConstants :: LedgerConstants + , timeParams :: ContractTimeParams } -- | Initializes a `Contract` environment. Does not ensure finalization. @@ -198,7 +204,7 @@ mkContractEnv params = do wallet <- buildWallet pure $ merge { wallet } -- Compose the sub-builders together - in b1 >>> b2 >>> merge { usedTxOuts } + in b1 >>> b2 >>> merge { usedTxOuts, timeParams: params.timeParams } pure $ build envBuilder constants where @@ -341,6 +347,12 @@ withContractEnv params action = do -- ContractParams -------------------------------------------------------------------------------- +-- | Delays and timeouts for internal query functions. +type ContractTimeParams = + { syncWallet :: { delay :: Milliseconds, timeout :: Milliseconds } + , syncBackend :: { delay :: Milliseconds, timeout :: Milliseconds } + } + -- | Options to construct an environment for a `Contract` to run. -- | -- | See `Contract.Config` for pre-defined values for testnet and mainnet. @@ -357,6 +369,7 @@ type ContractParams = -- | Suppress logs until an exception is thrown , suppressLogs :: Boolean , hooks :: Hooks + , timeParams :: ContractTimeParams } -------------------------------------------------------------------------------- diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 810314c64..983338b24 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -17,6 +17,7 @@ import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat import Contract.Address (NetworkId(MainnetId)) +import Contract.Config (testnetConfig) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither) import Control.Monad.State (State, execState, modify_) @@ -593,6 +594,7 @@ mkClusterContractEnv plutipCfg logger customLogger = do , wallet: Nothing , usedTxOuts , ledgerConstants + , timeParams: testnetConfig.timeParams -- no effect when KeyWallet is used } defaultRetryPolicy :: RetryPolicy From db56b5bbe2bfe118f52303004c87d5e704c2d90c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 15:03:44 +0400 Subject: [PATCH 024/478] Implement new assertions for wallet total balance --- examples/BalanceTxConstraints.purs | 4 +- examples/OneShotMinting.purs | 35 ++-- examples/PaysWithDatum.purs | 6 +- src/Contract/Test/Assert.purs | 273 +++++++++++++++++++++++------ 4 files changed, 239 insertions(+), 79 deletions(-) diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index fdbe92d12..3346d92fa 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -24,8 +24,8 @@ import Contract.Test.Assert ( ContractAssertionFailure(CustomFailure) , ContractCheck , assertContract + , assertNewUtxosAtAddress , assertionToCheck - , checkNewUtxosAtAddress , label , runChecks ) @@ -72,7 +72,7 @@ assertChangeOutputsPartitionedCorrectly = assertionToCheck "Change is correctly partitioned" \{ txHash, changeAddress: addr, mintedToken: cs /\ tn } -> do let labeledAddr = label addr "changeAddress" - checkNewUtxosAtAddress labeledAddr txHash \changeOutputs -> do + assertNewUtxosAtAddress labeledAddr txHash \changeOutputs -> do let assertionFailure :: ContractAssertionFailure assertionFailure = diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index b08d19691..af98eab83 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -13,7 +13,6 @@ module Ctl.Examples.OneShotMinting import Contract.Prelude -import Contract.Address (Address, getWalletAddresses) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -34,10 +33,8 @@ import Contract.Scripts ) import Contract.Test.Assert ( ContractCheck - , Labeled - , checkLossAtAddress - , checkTokenGainAtAddress' - , label + , checkLossInWallet + , checkTokenGainInWallet' , runChecks ) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) @@ -53,7 +50,6 @@ import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers -import Data.Array (head) import Data.Array (head, singleton) as Array import Data.BigInt (BigInt) import Data.Map (toUnfoldable) as Map @@ -67,21 +63,15 @@ example cfg = launchAff_ do runContract cfg contract mkChecks - :: Address - -> (CurrencySymbol /\ TokenName /\ BigInt) + :: (CurrencySymbol /\ TokenName /\ BigInt) -> Array (ContractCheck { txFinalFee :: BigInt }) -mkChecks ownAddress nft = - let - labeledOwnAddress :: Labeled Address - labeledOwnAddress = label ownAddress "ownAddress" - in - [ checkTokenGainAtAddress' labeledOwnAddress nft - - , checkLossAtAddress labeledOwnAddress - case _ of - Nothing -> pure zero - Just { txFinalFee } -> pure txFinalFee - ] +mkChecks nft = + [ checkTokenGainInWallet' nft + , checkLossInWallet + case _ of + Nothing -> pure zero + Just { txFinalFee } -> pure txFinalFee + ] contract :: Contract Unit contract = @@ -93,9 +83,6 @@ mkContractWithAssertions -> Contract Unit mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' ("Running " <> exampleName) - - ownAddress <- liftedM "Failed to get own address" $ head <$> - getWalletAddresses utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos oref <- liftContractM "Utxo set is empty" @@ -115,7 +102,7 @@ mkContractWithAssertions exampleName mkMintingPolicy = do Lookups.mintingPolicy mp <> Lookups.unspentOutputs utxos - let checks = mkChecks ownAddress (cs /\ tn /\ one) + let checks = mkChecks (cs /\ tn /\ one) void $ runChecks checks $ lift do { txHash, txFinalFee } <- submitTxFromConstraintsReturningFee lookups constraints diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index 6405d3f07..a254da3ac 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -29,8 +29,8 @@ import Contract.Test.Assert ( ContractAssertionFailure(CustomFailure) , ContractCheck , assertContract + , assertNewUtxosAtAddress , assertionToCheck - , checkNewUtxosAtAddress , label , runChecks ) @@ -104,7 +104,7 @@ assertTxCreatesOutputWithInlineDatum = assertionToCheck assertionFailure :: ContractAssertionFailure assertionFailure = CustomFailure "Could not find output with given inline datum" - checkNewUtxosAtAddress (label address "ownAddress") txHash + assertNewUtxosAtAddress (label address "ownAddress") txHash \outputs -> assertContract assertionFailure $ hasOutputWithOutputDatum (OutputDatum datum) outputs @@ -118,7 +118,7 @@ assertTxCreatesOutputWithDatumHash = assertionToCheck assertionFailure :: ContractAssertionFailure assertionFailure = CustomFailure "Could not find output with given datum hash" - checkNewUtxosAtAddress (label address "ownAddress") txHash + assertNewUtxosAtAddress (label address "ownAddress") txHash \outputs -> assertContract assertionFailure $ hasOutputWithOutputDatum (OutputDatumHash datumHash) outputs diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 6715872dc..ca29cb68e 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -20,18 +20,18 @@ module Contract.Test.Assert , assertContractExpectedActual , assertContract , assertContractMaybe - , assertLovelaceDeltaAtAddress + , checkLovelaceDeltaAtAddress , assertOutputHasDatum , assertOutputHasRefScript , assertTxHasMetadata - , assertValueDeltaAtAddress + , checkValueDeltaAtAddress , assertionToCheck , checkExUnitsNotExceed , checkGainAtAddress , checkGainAtAddress' , checkLossAtAddress , checkLossAtAddress' - , checkNewUtxosAtAddress + , assertNewUtxosAtAddress , checkTokenDeltaAtAddress , checkTokenGainAtAddress , checkTokenGainAtAddress' @@ -47,6 +47,17 @@ module Contract.Test.Assert , printExpectedActual , printContractAssertionFailure , printContractAssertionFailures + , checkValueDeltaInWallet + , checkLovelaceDeltaInWallet + , checkGainInWallet + , checkGainInWallet' + , checkLossInWallet + , checkLossInWallet' + , checkTokenDeltaInWallet + , checkTokenGainInWallet + , checkTokenGainInWallet' + , checkTokenLossInWallet + , checkTokenLossInWallet' ) where import Prelude @@ -61,7 +72,7 @@ import Contract.Transaction , TransactionOutputWithRefScript , getTxMetadata ) -import Contract.Utxos (utxosAt) +import Contract.Utxos (getWalletBalance, utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value, valueOf, valueToCoin') import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.Error.Class as E @@ -87,7 +98,7 @@ import Data.Array (foldr) import Data.Array (fromFoldable, length, mapWithIndex, partition) as Array import Data.BigInt (BigInt) import Data.Either (Either, either, hush) -import Data.Foldable (foldMap, null, sum) +import Data.Foldable (fold, foldMap, null, sum) import Data.Generic.Rep (class Generic) import Data.Lens (non, to, traversed, view, (%~), (^.), (^..)) import Data.Lens.Record (prop) @@ -119,11 +130,12 @@ data ContractAssertionFailure | TransactionHasNoMetadata TransactionHash (Maybe Label) | UnexpectedDatumInOutput (Labeled TransactionOutputWithRefScript) (ExpectedActual OutputDatum) - | UnexpectedLovelaceDelta (Labeled Address) (ExpectedActual BigInt) + | UnexpectedLovelaceDelta (Maybe (Labeled Address)) (ExpectedActual BigInt) | UnexpectedMetadataValue Label (ExpectedActual String) | UnexpectedRefScriptInOutput (Labeled TransactionOutputWithRefScript) (ExpectedActual (Maybe ScriptRef)) - | UnexpectedTokenDelta (Labeled Address) TokenName (ExpectedActual BigInt) + | UnexpectedTokenDelta (Maybe (Labeled Address)) TokenName + (ExpectedActual BigInt) | MaxExUnitsExceeded (ExpectedActual ExUnits) | CustomFailure String | SkippedTest String @@ -182,9 +194,13 @@ printContractAssertionFailure = case _ of "Unexpected datum in output " <> printLabeled txOutput <> " " <> printExpectedActual expectedActual - UnexpectedLovelaceDelta addr expectedActual -> + UnexpectedLovelaceDelta (Just addr) expectedActual -> "Unexpected lovelace delta at address " - <> (printLabeled addr <> printExpectedActual expectedActual) + <> printLabeled addr + <> printExpectedActual expectedActual + UnexpectedLovelaceDelta Nothing expectedActual -> + "Unexpected lovelace delta in wallet: " + <> printExpectedActual expectedActual UnexpectedMetadataValue mdLabel expectedActual -> "Unexpected " <> mdLabel <> " metadata value" <> printExpectedActual @@ -194,9 +210,13 @@ printContractAssertionFailure = case _ of "Unexpected reference script in output " <> (printLabeled txOutput <> printExpectedActual expectedActual) - UnexpectedTokenDelta addr tn expectedActual -> + UnexpectedTokenDelta (Just addr) tn expectedActual -> "Unexpected token delta " <> show tn <> " at address " - <> (printLabeled addr <> printExpectedActual expectedActual) + <> printLabeled addr + <> printExpectedActual expectedActual + UnexpectedTokenDelta Nothing tn expectedActual -> + "Unexpected token delta " <> show tn <> " in wallet: " + <> printExpectedActual expectedActual MaxExUnitsExceeded expectedActual -> "ExUnits limit exceeded: " <> printExpectedActual expectedActual @@ -244,7 +264,7 @@ derive instance Functor ExpectedActual printExpectedActual :: forall (a :: Type). Show a => ExpectedActual a -> String printExpectedActual (ExpectedActual expected actual) = - " (Expected: " <> show expected <> ", Actual: " <> show actual <> ")" + " Expected: " <> show expected <> ", Actual: " <> show actual <> " " -------------------------------------------------------------------------------- -- Different types of assertions, Assertion composition, Basic functions @@ -350,24 +370,26 @@ runChecks assertions contract = do reportException :: Error -> String reportException error = "\n\nAn exception has been thrown: \n\n" <> show error -tellFailure - :: ContractAssertionFailure -> ContractAssertion Unit -tellFailure failure = do - ask >>= liftEffect <<< Ref.modify_ (Cons failure) +----------------------- UTxOs --------------------------------------------------- -checkNewUtxosAtAddress +assertNewUtxosAtAddress :: forall (a :: Type) . Labeled Address -> TransactionHash -> (Array TransactionOutputWithRefScript -> ContractAssertion a) -> ContractAssertion a -checkNewUtxosAtAddress addr txHash check = +assertNewUtxosAtAddress addr txHash check = lift (utxosAt $ unlabel addr) >>= \utxos -> check $ Array.fromFoldable $ Map.values $ Map.filterKeys (\oref -> (unwrap oref).transactionId == txHash) utxos --- | Sets a limit on `ExUnits` budget. All ExUnits values of all submitted transactions are combined. Transactions that are constructed, but not submitted, are not considered. --- | The execution of the `Contract` will not be interrupted in case the `ExUnits` limit is reached. +------------------------ Execution units ---------------------------------------- + +-- | Sets a limit on `ExUnits` budget. All ExUnits values of all submitted +-- | transactions are combined. Transactions that are constructed, but not +-- | submitted, are not considered. +-- | The execution of the `Contract` will not be interrupted in case the +-- | `ExUnits` limit is reached. checkExUnitsNotExceed :: forall (a :: Type) . ExUnits @@ -404,12 +426,7 @@ checkExUnitsNotExceed maxExUnits contract = do pure (mapReaderT (local setSubmitHook) contract /\ finalize) -valueAtAddress' - :: Labeled Address - -> ContractAssertion Value -valueAtAddress' = map (foldMap (view (_output <<< _amount))) <<< lift - <<< utxosAt - <<< unlabel +-------------- Values at address ------------------------------------------------ -- | Arguments are: -- | @@ -417,17 +434,17 @@ valueAtAddress' = map (foldMap (view (_output <<< _amount))) <<< lift -- | - a callback that implements the assertion, accepting `Contract` execution -- | result, and values (before and after). The value may not be computed due -- | to an exception, hence it's wrapped in `Maybe`. -assertValueDeltaAtAddress +checkValueDeltaAtAddress :: forall (a :: Type) . Labeled Address -> (Maybe a -> Value -> Value -> ContractAssertion Unit) -> ContractCheck a -assertValueDeltaAtAddress addr check contract = do - valueBefore <- valueAtAddress' addr +checkValueDeltaAtAddress addr check contract = do + valueBefore <- getValueAtAddress addr ref <- liftEffect $ Ref.new Nothing let finalize = do - valueAfter <- valueAtAddress' addr + valueAfter <- getValueAtAddress addr liftEffect (Ref.read ref) >>= \res -> check res valueBefore valueAfter run = do res <- contract @@ -435,14 +452,14 @@ assertValueDeltaAtAddress addr check contract = do pure res pure (run /\ finalize) -assertLovelaceDeltaAtAddress +checkLovelaceDeltaAtAddress :: forall (a :: Type) . Labeled Address -> (Maybe a -> Contract BigInt) -> (BigInt -> BigInt -> Boolean) -> ContractCheck a -assertLovelaceDeltaAtAddress addr getExpected comp contract = do - assertValueDeltaAtAddress addr check contract +checkLovelaceDeltaAtAddress addr getExpected comp contract = do + checkValueDeltaAtAddress addr check contract where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do @@ -453,7 +470,7 @@ assertLovelaceDeltaAtAddress addr getExpected comp contract = do unexpectedLovelaceDelta :: ContractAssertionFailure unexpectedLovelaceDelta = - UnexpectedLovelaceDelta addr (ExpectedActual expected actual) + UnexpectedLovelaceDelta (Just addr) (ExpectedActual expected actual) assertContract unexpectedLovelaceDelta (comp actual expected) @@ -465,7 +482,7 @@ checkGainAtAddress -> (Maybe a -> Contract BigInt) -> ContractCheck a checkGainAtAddress addr getMinGain = - assertLovelaceDeltaAtAddress addr getMinGain eq + checkLovelaceDeltaAtAddress addr getMinGain eq -- | Requires that the passed amount of lovelace was gained at the address -- | by calling the contract. @@ -485,7 +502,7 @@ checkLossAtAddress -> (Maybe a -> Contract BigInt) -> ContractCheck a checkLossAtAddress addr getMinLoss = - assertLovelaceDeltaAtAddress addr (map negate <<< getMinLoss) eq + checkLovelaceDeltaAtAddress addr (map negate <<< getMinLoss) eq -- | Requires that the passed amount of lovelace was lost at the address -- | by calling the contract. @@ -505,7 +522,7 @@ checkTokenDeltaAtAddress -> (BigInt -> BigInt -> Boolean) -> ContractCheck a checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = - assertValueDeltaAtAddress addr check contract + checkValueDeltaAtAddress addr check contract where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do @@ -516,7 +533,7 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = unexpectedTokenDelta :: ContractAssertionFailure unexpectedTokenDelta = - UnexpectedTokenDelta addr tn (ExpectedActual expected actual) + UnexpectedTokenDelta (Just addr) tn (ExpectedActual expected actual) assertContract unexpectedTokenDelta (comp actual expected) @@ -562,6 +579,146 @@ checkTokenLossAtAddress' checkTokenLossAtAddress' addr (cs /\ tn /\ minLoss) = checkTokenLossAtAddress addr (cs /\ tn) (const $ pure minLoss) +------------------- Values in wallet -------------------------------------------- + +-- | Accepts a callback that implements the assetion. The result value of type +-- | `a` may not be computed due to an exception, hence it's wrapped in `Maybe`. +checkValueDeltaInWallet + :: forall (a :: Type) + . (Maybe a -> Value -> Value -> ContractAssertion Unit) + -> ContractCheck a +checkValueDeltaInWallet check contract = do + valueBefore <- lift $ getWalletBalance <#> fold + ref <- liftEffect $ Ref.new Nothing + let + finalize = do + valueAfter <- lift $ getWalletBalance <#> fold + liftEffect (Ref.read ref) >>= \res -> check res valueBefore valueAfter + run = do + res <- contract + liftEffect $ Ref.write (Just res) ref + pure res + pure (run /\ finalize) + +checkLovelaceDeltaInWallet + :: forall (a :: Type) + . (Maybe a -> Contract BigInt) + -> (BigInt -> BigInt -> Boolean) + -> ContractCheck a +checkLovelaceDeltaInWallet getExpected comp contract = do + checkValueDeltaInWallet check contract + where + check :: Maybe a -> Value -> Value -> ContractAssertion Unit + check result valueBefore valueAfter = do + expected <- lift $ getExpected result + let + actual :: BigInt + actual = valueToCoin' valueAfter - valueToCoin' valueBefore + + unexpectedLovelaceDelta :: ContractAssertionFailure + unexpectedLovelaceDelta = + UnexpectedLovelaceDelta Nothing (ExpectedActual expected actual) + + assertContract unexpectedLovelaceDelta (comp actual expected) + +-- | Requires that the computed amount of lovelace was gained in the wallet +-- | by calling the contract. +checkGainInWallet + :: forall (a :: Type) + . (Maybe a -> Contract BigInt) + -> ContractCheck a +checkGainInWallet getMinGain = + checkLovelaceDeltaInWallet getMinGain eq + +-- | Requires that the passed amount of lovelace was gained in the wallet +-- | by calling the contract. +checkGainInWallet' + :: forall (a :: Type) + . BigInt + -> ContractCheck a +checkGainInWallet' minGain = + checkGainInWallet (const $ pure minGain) + +-- | Requires that the computed amount of lovelace was lost in the wallet +-- | by calling the contract. +checkLossInWallet + :: forall (a :: Type) + . (Maybe a -> Contract BigInt) + -> ContractCheck a +checkLossInWallet getMinLoss = + checkLovelaceDeltaInWallet (map negate <<< getMinLoss) eq + +-- | Requires that the passed amount of lovelace was lost in the wallet +-- | by calling the contract. +checkLossInWallet' + :: forall (a :: Type) + . BigInt + -> ContractCheck a +checkLossInWallet' minLoss = + checkLossInWallet (const $ pure minLoss) + +checkTokenDeltaInWallet + :: forall (a :: Type) + . (CurrencySymbol /\ TokenName) + -> (Maybe a -> Contract BigInt) + -> (BigInt -> BigInt -> Boolean) + -> ContractCheck a +checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = + checkValueDeltaInWallet check contract + where + check :: Maybe a -> Value -> Value -> ContractAssertion Unit + check result valueBefore valueAfter = do + expected <- lift $ getExpected result + let + actual :: BigInt + actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn + + unexpectedTokenDelta :: ContractAssertionFailure + unexpectedTokenDelta = + UnexpectedTokenDelta Nothing tn (ExpectedActual expected actual) + + assertContract unexpectedTokenDelta (comp actual expected) + +-- | Requires that the computed number of tokens was gained in the wallet +-- | by calling the contract. +checkTokenGainInWallet + :: forall (a :: Type) + . (CurrencySymbol /\ TokenName) + -> (Maybe a -> Contract BigInt) + -> ContractCheck a +checkTokenGainInWallet token getMinGain = + checkTokenDeltaInWallet token getMinGain eq + +-- | Requires that the passed number of tokens was gained in the wallet +-- | by calling the contract. +checkTokenGainInWallet' + :: forall (a :: Type) + . (CurrencySymbol /\ TokenName /\ BigInt) + -> ContractCheck a +checkTokenGainInWallet' (cs /\ tn /\ minGain) = + checkTokenGainInWallet (cs /\ tn) (const $ pure minGain) + +-- | Requires that the computed number of tokens was lost in the wallet +-- | by calling the contract. +checkTokenLossInWallet + :: forall (a :: Type) + . (CurrencySymbol /\ TokenName) + -> (Maybe a -> Contract BigInt) + -> ContractCheck a +checkTokenLossInWallet token getMinLoss = + checkTokenDeltaInWallet token (map negate <<< getMinLoss) eq + +-- | Requires that the passed number of tokens was lost in the wallet +-- | by calling the contract. +checkTokenLossInWallet' + :: forall (a :: Type) + . (CurrencySymbol /\ TokenName /\ BigInt) + -> ContractCheck a +checkTokenLossInWallet' (cs /\ tn /\ minLoss) = + checkTokenLossInWallet (cs /\ tn) (const $ pure minLoss) + +--------------------- Datums and scripts ---------------------------------------- + -- | Requires that the transaction output contains the specified datum or -- | datum hash. assertOutputHasDatum @@ -586,18 +743,7 @@ assertOutputHasRefScript expectedRefScript txOutput = do (Just expectedRefScript) actualRefScript -tieRef - :: forall (a :: Type) - . ContractAssertion - ((a -> ContractAssertion a) /\ ContractAssertion (Maybe a)) -tieRef = do - ref <- liftEffect $ Ref.new Nothing - let - putResult result = do - liftEffect $ Ref.write (Just result) ref - pure result - getResult = liftEffect (Ref.read ref) - pure (putResult /\ getResult) +------------------------- Metadata --------------------------------------------- assertTxHasMetadata :: forall (metadata :: Type) (a :: Type) @@ -626,3 +772,30 @@ assertTxHasMetadata mdLabel txHash expectedMetadata = do let expectedActual = show <$> ExpectedActual expectedMetadata metadata assertContract (UnexpectedMetadataValue mdLabel expectedActual) (metadata == expectedMetadata) + +-------------------------- Utils ----------------------------------------------- + +getValueAtAddress + :: Labeled Address + -> ContractAssertion Value +getValueAtAddress = map (foldMap (view (_output <<< _amount))) <<< lift + <<< utxosAt + <<< unlabel + +tellFailure + :: ContractAssertionFailure -> ContractAssertion Unit +tellFailure failure = do + ask >>= liftEffect <<< Ref.modify_ (Cons failure) + +tieRef + :: forall (a :: Type) + . ContractAssertion + ((a -> ContractAssertion a) /\ ContractAssertion (Maybe a)) +tieRef = do + ref <- liftEffect $ Ref.new Nothing + let + putResult result = do + liftEffect $ Ref.write (Just result) ref + pure result + getResult = liftEffect (Ref.read ref) + pure (putResult /\ getResult) From b09f0eda8f32e701f407a07111e00fa3e65f572e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 15:06:05 +0400 Subject: [PATCH 025/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c58ac5c2..a05435052 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added - Automatic retries for `403 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) +- New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ### Changed From d0a4e691a38d968f308440adcafb957b0f423a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Boros?= Date: Thu, 23 Feb 2023 14:08:05 +0200 Subject: [PATCH 026/478] bundlePursProject: don't fail if output directory exists --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 9d364cef1..bb8260da8 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -406,7 +406,7 @@ let chmod -R +rwx . spago bundle-module --no-install --no-build -m "${main}" \ --to ${bundledModuleName} - mkdir ./dist + mkdir -p ./dist ${pkgs.lib.optionalString includeBundledModule "cp ${bundledModuleName} ./dist"} webpack --mode=production -c ${webpackConfig} -o ./dist \ --entry ./${entrypoint} From 2a3e51400c83dbc50eff8bd5b2d4d1e4b5a08a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Boros?= Date: Thu, 23 Feb 2023 14:39:48 +0200 Subject: [PATCH 027/478] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2c7c10f3..c6f903879 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- Fixed `bundlePursProject` crashing if build output directory exists ([#1438](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1438)) - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) - Better reporting for WebSocket errors ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) From 73e6e4c742a96a6a39ec04def3e442ff4bc1f27c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 16:41:56 +0400 Subject: [PATCH 028/478] Small refactorings --- doc/blockfrost.md | 2 ++ doc/runtime.md | 22 +------------------ src/Contract/Config.purs | 5 ++++- src/Internal/BalanceTx/Collateral/Select.purs | 9 ++++---- src/Internal/BalanceTx/Sync.purs | 4 ++-- src/Internal/Contract/Wallet.purs | 15 ++++++------- src/Internal/Types/UsedTxOuts.purs | 2 +- src/Internal/Wallet.purs | 3 +++ 8 files changed, 25 insertions(+), 37 deletions(-) diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 1cfdca254..b557f1df4 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -136,6 +136,8 @@ type BlockfrostBackendParams = For convenience, use `blockfrostPublicMainnetServerConfig`, `blockfrostPublicPreviewServerConfig` or `blockfrostPublicPreprodServerConfig` for pre-configured `ServerConfig` setups. +Note that it is possible to use CTL runtime services alongside with Blockfrost for queries it does not support by modifying the `QueryBackendParams` value manually (`CtlBackendParams` is an optional parameter of its constructor). + ## Limitations ### Performance diff --git a/doc/runtime.md b/doc/runtime.md index c78c6d627..c8f6a8672 100644 --- a/doc/runtime.md +++ b/doc/runtime.md @@ -15,8 +15,6 @@ Our nix environment includes CTL backend services, but for now Blockfrost can be - [Using CTL's `runtime` overlay](#using-ctls-runtime-overlay) - [Changing network configurations](#changing-network-configurations) - [Blockfrost Backend](#blockfrost-backend) - - [Blockfrost backend limitations](#blockfrost-backend-limitations) - - [Transaction confirmation delays](#transaction-confirmation-delays) - [Wallet requirements](#wallet-requirements) @@ -63,25 +61,7 @@ When changing networks, make sure that `network.magic` is correctly synchronized ## Blockfrost Backend -Blockfrost backend can be configured by providing a record of values to `mkBlockfrostBackendParams`: - -```purescript -type BlockfrostBackendParams = - { blockfrostConfig :: ServerConfig - , blockfrostApiKey :: Maybe String - , confirmTxDelay :: Maybe Seconds - } - -mkBlockfrostBackendParams :: BlockfrostBackendParams -> QueryBackendParams -``` - -Note that it is possible to use CTL runtime services alongside with Blockfrost for queries it does not support by modifying the `QueryBackendParams` value manually (`CtlBackendParams` is an optional parameter of its constructor). - -### Blockfrost backend limitations - -#### Transaction confirmation delays - -State does not propagate to the chain consistently the moment a transaction gets submitted. So, there's a certain artificial delay that gets added after each Tx submission. You can adjust it with `confirmTxDelay` parameter of `BlockfrostBackendParams`. 20-30 seconds is recommended. +See [here](./blockfrost.md) for the documentation. ## Wallet requirements diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index c59d373c9..3a48d03b9 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -88,7 +88,10 @@ testnetConfig = , hooks: emptyHooks , timeParams: { syncWallet: - { delay: Milliseconds 1_000.0, timeout: Milliseconds 100_000.0 } + -- As clarified in Eternl discord, they synchronize with the server every 2 + -- minutes, so 125 seconds would probably be enough. + -- For other wallets, it is not very important + { delay: Milliseconds 1_000.0, timeout: Milliseconds 130_000.0 } , syncBackend: { delay: Milliseconds 3_000.0, timeout: Milliseconds 100_000.0 } } diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index 642ee1f31..ad091d077 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -85,7 +85,7 @@ instance Ord CollateralCandidate where byNumOfInputs = List.length <<< Tuple.fst <<< unwrap byAdaValue :: CollateralCandidate -> BigInt - byAdaValue = foldl adaValue' zero <<< Tuple.fst <<< unwrap + byAdaValue = foldl consumeUtxoAdaValue zero <<< Tuple.fst <<< unwrap mkCollateralCandidate :: List TransactionUnspentOutput /\ Maybe ReturnOutMinAdaValue @@ -125,7 +125,8 @@ selectCollateral coinsPerUtxoUnit maxCollateralInputs = (\x -> Tuple x <$> collateralReturnMinAdaValue coinsPerUtxoUnit x) -- Filter out all utxo combinations -- with total Ada value < `minRequiredCollateral`: - <<< List.filter (\x -> foldl adaValue' zero x >= minRequiredCollateral) + <<< List.filter + (\x -> foldl consumeUtxoAdaValue zero x >= minRequiredCollateral) -- Get all possible non-empty utxo combinations -- with the number of utxos <= `maxCollateralInputs`: <<< combinations maxCollateralInputs @@ -161,8 +162,8 @@ adaValue :: TransactionUnspentOutput -> BigInt adaValue = Value.valueToCoin' <<< _.amount <<< unwrap <<< _.output <<< unwrap -adaValue' :: BigInt -> TransactionUnspentOutput -> BigInt -adaValue' init = add init <<< adaValue +consumeUtxoAdaValue :: BigInt -> TransactionUnspentOutput -> BigInt +consumeUtxoAdaValue acc = add acc <<< adaValue nonAdaAsset :: TransactionUnspentOutput -> NonAdaAsset nonAdaAsset = diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 4c8e41185..f7d69c7b6 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -52,8 +52,8 @@ syncBackendWithWallet = whenM isCip30 do liftAff (delay delayMs) sync delayMs errorMessage = "Failed to wait for wallet state synchronization (timeout). " - <> "Continuing anyway. Consider increasing timeParams.syncBackend.timeout " - <> "in ContractParams" + <> "Continuing anyway. Consider increasing `timeParams.syncBackend.timeout`" + <> " in `ContractParams`" -- | Wait until the wallet can see the UTxOs created by a given transaction. -- | This function assumes that the transaction has already been confirmed diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 31541a8e7..5d5441b46 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -40,18 +40,15 @@ import Ctl.Internal.Types.PubKeyHash , StakePubKeyHash ) import Ctl.Internal.Types.RawBytes (RawBytes) -import Ctl.Internal.Wallet - ( Wallet - , actionBasedOnWallet - ) +import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Data.Array (catMaybes, cons, foldMap, head) +import Data.Array (catMaybes, cons, foldMap, foldr) import Data.Array as Array import Data.BigInt as BigInt import Data.Either (hush) import Data.Foldable (fold, foldl) import Data.Map as Map -import Data.Maybe (Maybe(Nothing), fromMaybe, maybe) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) import Data.Traversable (for, for_, traverse) import Data.Tuple.Nested ((/\)) @@ -200,8 +197,10 @@ getWalletUtxos = do actionBasedOnWallet (\w conn -> w.getUtxos conn <#> map toUtxoMap) \_ -> do - mbAddress <- getWalletAddresses <#> head - map join $ for mbAddress $ map hush <<< liftAff <<< queryHandle.utxosAt + (addresses :: Array Address) <- getWalletAddresses + res :: Array (Maybe UtxoMap) <- for addresses $ + map hush <<< liftAff <<< queryHandle.utxosAt + pure $ Just $ foldr Map.union Map.empty $ map (fromMaybe Map.empty) res where toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap toUtxoMap = Map.fromFoldable <<< map diff --git a/src/Internal/Types/UsedTxOuts.purs b/src/Internal/Types/UsedTxOuts.purs index 8c17cad06..abb8da6aa 100644 --- a/src/Internal/Types/UsedTxOuts.purs +++ b/src/Internal/Types/UsedTxOuts.purs @@ -59,7 +59,7 @@ instance Semigroup TxOutRefUnlockKeys where instance Monoid TxOutRefUnlockKeys where mempty = wrap Map.empty --- | Stores TxOutRefs in a compact map. +-- | Tracks UTxOs that have already been spent to avoid double-spending attempts. newtype UsedTxOuts = UsedTxOuts (Ref TxOutRefCache) derive instance Newtype UsedTxOuts _ diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 52d00b0ae..876e19261 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -72,6 +72,9 @@ import Effect.Class (liftEffect) import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) +-- NOTE: this data type is defined like this on purpose, don't change it +-- to `(Cip30Wallet /\ WalletExtension)`. The motivation is to make it simpler +-- to special-case each wallet in the future, if needed. data Wallet = Nami Cip30Wallet | Gero Cip30Wallet From b45901a7d19e9bfa1616f7544d51054dc1babbac Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 16:43:24 +0400 Subject: [PATCH 029/478] - Call synchronization functions when using CIP-30 methods - walletWaitForInputs -> syncWalletWithInputs --- src/Contract/Utxos.purs | 6 +- src/Internal/BalanceTx/Sync.purs | 95 ++++++++++++++++++++++++++------ src/Internal/Contract/Sign.purs | 76 +++---------------------- 3 files changed, 92 insertions(+), 85 deletions(-) diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 1ce120c0a..de9736d77 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -14,6 +14,7 @@ import Prelude import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) import Control.Monad.Reader.Class (asks) +import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletBalance, getWalletUtxos) as Utxos import Ctl.Internal.Plutus.Conversion @@ -57,7 +58,9 @@ getUtxo oref = do getWalletBalance :: Contract (Maybe Value) -getWalletBalance = Utxos.getWalletBalance <#> map toPlutusValue +getWalletBalance = do + syncBackendWithWallet + Utxos.getWalletBalance <#> map toPlutusValue -- | Similar to `utxosAt` called on own address, except that it uses CIP-30 -- | wallet state and not query layer state. @@ -68,6 +71,7 @@ getWalletBalance = Utxos.getWalletBalance <#> map toPlutusValue getWalletUtxos :: Contract (Maybe UtxoMap) getWalletUtxos = do + syncBackendWithWallet mCardanoUtxos <- Utxos.getWalletUtxos for mCardanoUtxos $ liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index f7d69c7b6..63c719009 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -3,31 +3,41 @@ module Ctl.Internal.BalanceTx.Sync ( syncBackendWithWallet , syncWalletWithTransaction + , syncWalletWithInputs + , isCip30Wallet ) where import Prelude import Contract.Log (logError', logTrace', logWarn') -import Contract.Monad (Contract) -import Contract.Utxos (getUtxo) -import Contract.Wallet (getChangeAddress, getUnusedAddresses, getWalletUtxos) +import Contract.Monad (Contract, liftedE) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf) +import Ctl.Internal.Cardano.Types.Transaction as Cardano import Ctl.Internal.Contract.QueryHandle (getQueryHandle) -import Ctl.Internal.Contract.Wallet (getWalletAddresses) -import Ctl.Internal.Helpers (liftEither) +import Ctl.Internal.Contract.Wallet + ( getChangeAddress + , getUnusedAddresses + , getWalletAddresses + , getWalletUtxos + ) +import Ctl.Internal.Contract.Wallet as Utxos +import Ctl.Internal.Helpers (liftEither, liftedM) +import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Wallet (cip30Wallet) import Data.Array as Array import Data.Bifunctor (bimap) import Data.Foldable (all) import Data.Map as Map -import Data.Maybe (fromMaybe, isJust) +import Data.Maybe (Maybe, fromMaybe, isJust) import Data.Newtype (unwrap) +import Data.Set (Set) import Data.Set as Set import Data.Time.Duration (Milliseconds) import Data.Traversable (traverse) import Data.Tuple (fst) +import Data.Tuple.Nested ((/\)) import Effect.Aff (delay) import Effect.Aff.Class (liftAff) import Effect.Exception (error) @@ -35,14 +45,14 @@ import Effect.Exception (error) -- | Wait until all UTxOs that the wallet returns are visible in the -- | query layer. syncBackendWithWallet :: Contract Unit -syncBackendWithWallet = whenM isCip30 do +syncBackendWithWallet = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncBackend) parOneOf [ sync delayMs, waitAndLogError timeout errorMessage ] where sync :: Milliseconds -> Contract Unit sync delayMs = do utxos <- getWalletUtxos <#> fromMaybe Map.empty - allFound <- all isJust <$> traverse getUtxo + allFound <- all isJust <$> traverse getUtxo' (fst <$> Map.toUnfoldableUnordered utxos :: Array TransactionInput) if allFound then do logTrace' "syncBackendWithWallet: synchronization finished" @@ -63,16 +73,12 @@ syncBackendWithWallet = whenM isCip30 do -- | addresses controlled by the wallet. -- | You don't need to use this function if you use `awaitTxConfirmed*`. syncWalletWithTransaction :: TransactionHash -> Contract Unit -syncWalletWithTransaction txHash = whenM isCip30 do +syncWalletWithTransaction txHash = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) queryHandle <- getQueryHandle -- Collect all the addresses controlled by the wallet -- (reward addresses are omitted on purpose, we don't need them) - ownAddresses <- do - used <- getWalletAddresses <#> Set.fromFoldable - unused <- getUnusedAddresses <#> Set.fromFoldable - change <- getChangeAddress <#> Set.fromFoldable - pure $ used `Set.union` unused `Set.union` change + ownAddresses <- getControlledAddresses outputAddresses <- liftAff $ liftEither =<< do queryHandle.getOutputAddressesByTxHash txHash <#> bimap (error <<< show) Set.fromFoldable @@ -103,10 +109,65 @@ syncWalletWithTransaction txHash = whenM isCip30 do errorMessage = "Failed to wait for wallet state synchronization. Continuing anyway. " <> "This may indicate UTxO locking in use in the wallet. Consider " - <> "increasing timeParams.syncWallet.timeout in ContractParams" + <> "increasing `timeParams.syncWallet.timeout` in `ContractParams`" -isCip30 :: Contract Boolean -isCip30 = asks $ isJust <<< (cip30Wallet <=< _.wallet) +-- | Waits untill all provided transaction inputs appear in the UTxO +-- | set provided by the wallet. +-- | This is a hacky solution to the problem of wallets not seeing UTxOs that +-- | hasn't been fully confirmed at the moment of a `sign()` call. +-- | Since it can't detect UTxO origin, it can't decide which of the private +-- | keys to use for signing. As a result, we get `MissingVKeyWitnesses`. +syncWalletWithInputs :: Array TransactionInput -> Contract Unit +syncWalletWithInputs txInputs = do + logTrace' "syncWalletWithInputs: starting" + { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) + ownAddrs <- getControlledAddresses + ownInputUtxos <- txInputs # + traverse + ( \txInput -> do + utxo <- liftedM (error "Could not get utxo") $ getUtxo' txInput + pure (txInput /\ utxo) + ) >>> map + ( Map.fromFoldable >>> Map.filter + ( flip Set.member ownAddrs + <<< _.address + <<< unwrap + ) + ) + let + go = do + walletUtxos <- Utxos.getWalletUtxos <#> fromMaybe Map.empty + let difference = ownInputUtxos `Map.difference` walletUtxos + if Map.isEmpty difference then do + logTrace' "syncWalletWithInputs: finished" + else do + liftAff $ delay delayMs + logTrace' $ "syncWalletWithInputs: remaining UTxOs that the wallet " + <> "does not know about: " + <> show difference + go + parOneOf [ go, waitAndLogError timeout errorMessage ] + where + errorMessage = + "syncWalletWithInputs: timeout while waiting for wallet" + <> " UTxO set and CTL query layer UTxO set to synchronize " + <> "(`timeParams.syncWallet.timeout` in `ContractParams`)" + +-- | Without plutus conversion +getUtxo' :: TransactionInput -> Contract (Maybe Cardano.TransactionOutput) +getUtxo' oref = do + queryHandle <- getQueryHandle + liftedE $ liftAff $ queryHandle.getUtxoByOref oref + +getControlledAddresses :: Contract (Set Address) +getControlledAddresses = do + used <- getWalletAddresses <#> Set.fromFoldable + unused <- getUnusedAddresses <#> Set.fromFoldable + change <- getChangeAddress <#> Set.fromFoldable + pure $ used `Set.union` unused `Set.union` change + +isCip30Wallet :: Contract Boolean +isCip30Wallet = asks $ isJust <<< (cip30Wallet <=< _.wallet) waitAndLogError :: Milliseconds -> String -> Contract Unit waitAndLogError timeout errorMessage = do diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index 7fa2b3d6c..6b2fa4c33 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -5,98 +5,40 @@ module Ctl.Internal.Contract.Sign import Prelude import Control.Monad.Reader (asks) +import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithInputs) import Ctl.Internal.Cardano.Types.Transaction (_body, _inputs, _witnessSet) import Ctl.Internal.Cardano.Types.Transaction as Transaction import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) -import Ctl.Internal.Contract.Wallet - ( getWalletAddresses - , getWalletUtxos - , withWallet - ) -import Ctl.Internal.Helpers (liftedM) -import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Contract.Wallet (withWallet) import Ctl.Internal.Wallet ( Wallet(KeyWallet, Lode, Eternl, Flint, Gero, Nami, NuFi) , callCip30Wallet ) -import Data.Array (elem, fromFoldable) -import Data.Either (hush) +import Data.Array (fromFoldable) import Data.Lens ((<>~)) import Data.Lens.Getter ((^.)) -import Data.Map as Map -import Data.Maybe (Maybe(Just), fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Traversable (for_, traverse) -import Data.Tuple.Nested ((/\)) -import Effect.Aff (delay, error) +import Data.Maybe (Maybe(Just)) +import Data.Newtype (unwrap) +import Data.Traversable (for_) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -import Effect.Exception (throw, try) +import Effect.Exception (try) signTransaction :: Transaction.Transaction -> Contract (Maybe Transaction.Transaction) signTransaction tx = do hooks <- asks _.hooks for_ hooks.beforeSign (void <<< liftEffect <<< try) + whenM isCip30Wallet do + syncWalletWithInputs $ fromFoldable $ tx ^. _body <<< _inputs withWallet case _ of Nami nami -> liftAff $ callCip30Wallet nami \nw -> flip nw.signTx tx Gero gero -> liftAff $ callCip30Wallet gero \nw -> flip nw.signTx tx Flint flint -> liftAff $ callCip30Wallet flint \nw -> flip nw.signTx tx Eternl eternl -> do - let - txInputs :: Array TransactionInput - txInputs = fromFoldable $ tx ^. _body <<< _inputs - walletWaitForInputs txInputs liftAff $ callCip30Wallet eternl \nw -> flip nw.signTx tx Lode lode -> liftAff $ callCip30Wallet lode \nw -> flip nw.signTx tx NuFi nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx KeyWallet kw -> liftAff do witnessSet <- (unwrap kw).signTx tx pure $ Just (tx # _witnessSet <>~ witnessSet) - --- | Waits till all provided inputs of a given transaction appear in the UTxO --- | set provided by the wallet. --- | This is a hacky solution to the problem of Eternl not seeing UTxOs that --- | hasn't been fully confirmed at the moment of a `sign()` call. --- | Since it can't detect UTxO origin, it can't decide which of the private --- | keys to use for signing. As a result, we get `MissingVKeyWitnesses`. -walletWaitForInputs :: Array TransactionInput -> Contract Unit -walletWaitForInputs txInputs = do - queryHandle <- getQueryHandle - ownAddrs <- getWalletAddresses - ownInputUtxos :: Map.Map TransactionInput _ <- txInputs # - traverse - ( \txInput -> do - utxo <- liftedM (error "Could not get utxo") $ liftAff $ join <<< hush - <$> queryHandle.getUtxoByOref txInput - pure (txInput /\ utxo) - ) >>> map - ( Map.fromFoldable >>> Map.filter - ( flip elem ownAddrs - <<< _.address - <<< unwrap - ) - ) - let - go attempts = do - walletUtxos <- getWalletUtxos <#> fromMaybe Map.empty - unless (ownInputUtxos `Map.isSubmap` walletUtxos) do - when (attempts == 0) do - liftEffect $ throw $ - "walletWaitForInputs: timeout while waiting for wallet" - <> " UTxO set and CTL query layer UTxO set to synchronize. UTxOs" - <> " from Ogmios: " - <> show ownInputUtxos - <> ", UTxOs from wallet: " - <> show walletUtxos - <> ", UTxOs that didn't appear in the wallet: " - <> - show (Map.difference ownInputUtxos walletUtxos) - liftAff $ delay $ wrap $ 1000.0 - go (attempts - 1) - -- As clarified in Eternl discord, they synchronize with the server every 2 - -- minutes, so 150 seconds would probably be enough to also account for - -- possible network latency. - go 150 - From 0c76a13403459bb1b7d71a381e10d376812999ab Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Fri, 13 Jan 2023 12:26:42 +0100 Subject: [PATCH 030/478] [WIP] New flake app with blockfrost --- flake.lock | 15809 +++++++++++++++++++++++++++++++++------------- flake.nix | 4 + nix/runtime.nix | 71 +- 3 files changed, 11596 insertions(+), 4288 deletions(-) diff --git a/flake.lock b/flake.lock index a63ed223d..8dfa4d8f3 100644 --- a/flake.lock +++ b/flake.lock @@ -132,6 +132,70 @@ "type": "github" } }, + "HTTP_13": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_14": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_15": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_16": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -260,6903 +324,13875 @@ "type": "github" } }, - "blank": { + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_2": { + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_3": { + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_5" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_4": { + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_5": { + "agenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "bot-plutus-interface": { + "agenix_3": { "inputs": { - "CHaP": "CHaP_4", - "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_4", "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs-unstable" + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" ] }, "locked": { - "lastModified": 1670496765, - "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32": { - "flake": false, + "agenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_10": { - "flake": false, + "agenix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_11": { - "flake": false, + "agenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_33" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_12": { - "flake": false, + "agenix_7": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_2": { - "flake": false, + "agenix_8": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_3": { - "flake": false, + "alejandra": { + "inputs": { + "flakeCompat": "flakeCompat", + "nixpkgs": "nixpkgs_28" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1646360966, + "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", + "owner": "kamadorueda", + "repo": "alejandra", + "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "kamadorueda", + "repo": "alejandra", "type": "github" } }, - "cabal-32_4": { + "bats-assert": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_5": { + "bats-assert_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_6": { + "bats-assert_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_7": { + "bats-support": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_8": { + "bats-support_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_9": { + "bats-support_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34": { - "flake": false, + "bitte": { + "inputs": { + "agenix": "agenix", + "agenix-cli": "agenix-cli", + "blank": "blank", + "capsules": "capsules", + "data-merge": "data-merge", + "deploy": "deploy_2", + "fenix": "fenix_4", + "hydra": "hydra_2", + "n2c": "n2c", + "nix": "nix_4", + "nixpkgs": "nixpkgs_22", + "nixpkgs-docker": "nixpkgs-docker", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "nomad-driver-nix": "nomad-driver-nix_2", + "nomad-follower": "nomad-follower_2", + "ops-lib": "ops-lib_2", + "ragenix": "ragenix_3", + "std": "std", + "terranix": "terranix_2", + "utils": "utils_10" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1661790449, + "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_10": { - "flake": false, + "bitte-cells": { + "inputs": { + "cardano-db-sync": [ + "db-sync", + "cardano-world", + "cardano-db-sync" + ], + "cardano-iohk-nix": [ + "db-sync", + "cardano-world", + "iohk-nix" + ], + "cardano-node": [ + "db-sync", + "cardano-world", + "cardano-node" + ], + "cardano-wallet": [ + "db-sync", + "cardano-world", + "cardano-wallet" + ], + "cicero": "cicero", + "data-merge": [ + "db-sync", + "cardano-world", + "data-merge" + ], + "n2c": [ + "db-sync", + "cardano-world", + "n2c" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ], + "std": [ + "db-sync", + "cardano-world", + "std" + ] + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1660761733, + "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", + "owner": "input-output-hk", + "repo": "bitte-cells", + "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte-cells", "type": "github" } }, - "cabal-34_11": { - "flake": false, + "bitte_2": { + "inputs": { + "agenix": "agenix_2", + "agenix-cli": "agenix-cli_2", + "blank": "blank_2", + "deploy": "deploy", + "fenix": "fenix_2", + "hydra": "hydra", + "nix": "nix", + "nixpkgs": "nixpkgs_8", + "nixpkgs-unstable": "nixpkgs-unstable", + "nomad": "nomad", + "nomad-driver-nix": "nomad-driver-nix", + "nomad-follower": "nomad-follower", + "ops-lib": "ops-lib", + "ragenix": "ragenix", + "terranix": "terranix", + "utils": "utils_5", + "vulnix": "vulnix" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_12": { - "flake": false, + "bitte_3": { + "inputs": { + "agenix": "agenix_6", + "agenix-cli": "agenix-cli_3", + "blank": "blank_3", + "deploy": "deploy_3", + "fenix": "fenix_6", + "hydra": "hydra_3", + "nix": "nix_8", + "nixpkgs": "nixpkgs_37", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "nomad": "nomad_2", + "nomad-driver-nix": "nomad-driver-nix_3", + "nomad-follower": "nomad-follower_3", + "ops-lib": "ops-lib_3", + "ragenix": "ragenix_4", + "terranix": "terranix_3", + "utils": "utils_19", + "vulnix": "vulnix_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "blank": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_3": { - "flake": false, + "blank_2": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_4": { - "flake": false, + "blank_3": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_5": { - "flake": false, + "blank_4": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_6": { - "flake": false, + "blank_5": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_7": { - "flake": false, + "blank_6": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_8": { - "flake": false, + "blank_7": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_9": { - "flake": false, + "blank_8": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36": { - "flake": false, + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1673436749, + "narHash": "sha256-ptvmkWkNAhjYyyJZA+Ii4q6W9DIT646xngSlBsj05oA=", + "owner": "mlabs-haskell", + "repo": "blockfrost-backend-ryo", + "rev": "3816e79db6f9d7f6e128f8e70700238597dd9538", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "mlabs-haskell", + "ref": "aciceri/nix-flake", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "cabal-36_10": { + "bot-plutus-interface": { + "inputs": { + "CHaP": "CHaP_4", + "flake-compat": "flake-compat_18", + "haskell-nix": "haskell-nix_6", + "iohk-nix": "iohk-nix_5", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1670496765, + "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + } + }, + "byron-chain": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-36_2": { + "cabal-32": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-32_10": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-32_11": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-32_12": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_6": { + "cabal-32_13": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_7": { + "cabal-32_14": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_8": { + "cabal-32_15": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_9": { + "cabal-32_16": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cardano-configurations": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1671845278, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "36a75a920de312519c3a9086061daccb997f9cd0", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_2": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_3": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_3" - }, + "cabal-32_5": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, + "cabal-32_6": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_6" - }, + "cabal-32_7": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_11" - }, + "cabal-32_8": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_5": { - "inputs": { - "nixpkgs": "nixpkgs_13" - }, + "cabal-32_9": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_6": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "cabal-34": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "cardano-node-workbench": [ - "ogmios", - "blank" - ], - "customConfig": "customConfig", - "flake-compat": "flake-compat_2", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nixTools": "nixTools", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_4" - }, + "cabal-34_10": { + "flake": false, "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_3", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "membench": "membench_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils" - }, + "cabal-34_11": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_7", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", - "membench": "membench_4", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_6" - }, + "cabal-34_12": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_7", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixTools": "nixTools_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_9" - }, + "cabal-34_13": { + "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell": { + "cabal-34_14": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_10": { + "cabal-34_15": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_11": { + "cabal-34_16": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_12": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_2": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_3": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_4": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_5": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_6": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_7": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_8": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_9": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig": { + "cabal-36_10": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_2": { + "cabal-36_11": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_3": { + "cabal-36_12": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_4": { + "cabal-36_13": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_5": { + "cabal-36_14": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_6": { + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_7": { + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_8": { + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_3": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] + "cabal-36_8": { + "flake": false, + "locked": { + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "type": "github" }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_9": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "dmerge_2": { + "capsules": { "inputs": { - "nixlib": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_16", + "ragenix": "ragenix_2" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "dmerge_3": { + "capsules_2": { "inputs": { - "nixlib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "yants" - ] + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_45", + "ragenix": "ragenix_5" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "easy-purescript-nix": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "lastModified": 1670549339, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "c1b2b9a426a78bb5812898368714631900299701", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1670462928, + "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_10": { + "cardano-configurations_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1667387423, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_11": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "flake-compat_12": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "repo": "cardano-graphql", "type": "github" } }, - "flake-compat_13": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_64" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_14": { - "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_66" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_67" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" + "cardano-mainnet-mirror_4": { + "inputs": { + "nixpkgs": "nixpkgs_72" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "cardano-mainnet-mirror_5": { + "inputs": { + "nixpkgs": "nixpkgs_74" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "cardano-mainnet-mirror_6": { + "inputs": { + "nixpkgs": "nixpkgs_75" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_8": { + "cardano-node": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "cardano-node-snapshot": { + "inputs": { + "customConfig": "customConfig_5", + "haskellNix": "haskellNix_5", + "iohkNix": "iohkNix_5", + "membench": "membench_2", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_22" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-utils": { + "cardano-node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_9", + "haskellNix": "haskellNix_9", + "iohkNix": "iohkNix_9", + "membench": "membench_4", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_27" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-utils_10": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "cardano-node_2": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "cardano-node-workbench": [ + "ogmios", + "blank" + ], + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_9", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nixTools": "nixTools", + "nixpkgs": [ + "ogmios", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ogmios", + "blank" + ], + "node-process": "node-process", + "node-snapshot": "node-snapshot", + "plutus-apps": "plutus-apps", + "utils": "utils_25" + }, + "locked": { + "lastModified": 1667644902, + "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "1.35.4", + "repo": "cardano-node", "type": "github" } }, - "flake-utils_11": { + "cardano-node_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", + "cardano-node-workbench": [ + "ogmios-nixos", + "blank" + ], + "customConfig": "customConfig_7", + "flake-compat": "flake-compat_14", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_7", + "hostNixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_7", + "nixTools": "nixTools_2", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ogmios-nixos", + "blank" + ], + "node-process": "node-process_2", + "node-snapshot": "node-snapshot_2", + "plutus-apps": "plutus-apps_2", + "utils": "utils_30" + }, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-utils_12": { + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_13": { + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_14": { + "cardano-shell_11": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_15": { + "cardano-shell_12": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_16": { + "cardano-shell_13": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_17": { + "cardano-shell_14": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_18": { + "cardano-shell_15": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_19": { + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_2": { + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_20": { + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_21": { + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_3": { + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_4": { + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_5": { + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_6": { + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_7": { + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_8": { + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_5", + "flake-utils": "flake-utils_20", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "flake-utils_9": { + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_6", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_2", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_56", + "nixpkgs-haskell": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_2", + "tullia": "tullia" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_7", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_7", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_32", + "poetry2nix": "poetry2nix", + "utils": "utils_14" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "cicero", "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, + "customConfig_10": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_12": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "custom-config", + "type": "path" + }, + "original": { + "path": "custom-config", + "type": "path" + } + }, + "customConfig_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_2": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "customConfig_6": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "customConfig_7": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "customConfig_8": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "customConfig_9": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "ghc-8.6.5-iohk_9": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix": { + "data-merge_3": { "inputs": { - "nixpkgs": "nixpkgs_8", - "utils": "utils_5" + "nixlib": "nixlib_3", + "yants": "yants_3" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix_2": { + "db-sync": { "inputs": { - "nixpkgs": "nixpkgs_16", - "utils": "utils_10" + "cardano-world": "cardano-world", + "customConfig": "customConfig_2", + "flake-compat": "flake-compat_7", + "haskellNix": "haskellNix_2", + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_21" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673522919, + "narHash": "sha256-cX3mxaXm/ASRHiIOosHq+DXwsU5PbKwzhraEssGn8Kk=", + "owner": "mlabs-haskell", + "repo": "cardano-db-sync", + "rev": "e49d0a1fbf48e96bf0f09ffd98096d0f3ddd214e", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "mlabs-haskell", + "ref": "aciceri/customConfig-input-fix", + "repo": "cardano-db-sync", "type": "github" } }, - "gomod2nix_3": { + "deploy": { "inputs": { - "nixpkgs": "nixpkgs_20", - "utils": "utils_11" + "fenix": "fenix", + "flake-compat": "flake-compat", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "hackage": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_7" + }, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackageNix": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_15" + }, "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackageNix_2": { - "flake": false, + "devshell": { "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_10": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1669338728, - "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_2": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_3": { - "flake": false, + "devshell_12": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_4": { - "flake": false, + "devshell_13": { "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_5": { - "flake": false, + "devshell_14": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_6": { - "flake": false, + "devshell_15": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_7": { - "flake": false, + "devshell_16": { + "inputs": { + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_8": { - "flake": false, + "devshell_17": { + "inputs": { + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_9": { - "flake": false, + "devshell_18": { + "inputs": { + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "nix-tools": "nix-tools", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, + "devshell_2": { "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_6", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ogmios", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6", - "tullia": "tullia" - }, + "devshell_3": { "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_9", - "flake-utils": "flake-utils_14", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_5", - "nixpkgs": [ - "ogmios-nixos", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" - }, + "devshell_4": { "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_18", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_6", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12", - "tullia": "tullia_3" - }, + "devshell_5": { "locked": { - "lastModified": 1669338917, - "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix": { + "devshell_6": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": [ - "ogmios", - "cardano-node", - "hackageNix" + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" ], - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", "nixpkgs": [ - "ogmios", - "cardano-node", + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + ] }, "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_2": { + "devshell_7": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_3", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_29" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_4", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_4", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "devshell_8": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_9": { "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_4": { + "dmerge": { "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_5": { + "dmerge_2": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_10", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_4", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", + "nixlib": [ + "db-sync", + "cardano-world", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] }, "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_6": { + "dmerge_3": { "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_6", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", + "nixlib": [ + "ogmios", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" + "yants": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_7": { + "dmerge_4": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_7", - "nixpkgs": [ + "nixlib": [ "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" + "yants": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_5": { + "inputs": { + "nixlib": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "driver": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_6", + "nix": "nix_6", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_11" + }, + "locked": { + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nomad-driver-nix", "type": "github" } }, - "haskellNix_8": { + "easy-purescript-nix": { + "flake": false, + "locked": { + "lastModified": 1666686938, + "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "type": "github" + } + }, + "ema": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_47", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "ema", + "type": "github" + } + }, + "ema_2": { + "flake": false, + "locked": { + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "multisite", + "repo": "ema", + "type": "github" + } + }, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_50", + "tailwind-haskell": "tailwind-haskell" + }, + "locked": { + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "emanote", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs_6", + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_13", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_8", "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_19", + "rust-analyzer-src": "rust-analyzer-src_3" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, + "locked": { + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_35", + "rust-analyzer-src": "rust-analyzer-src_5" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, + "locked": { + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_12": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_13": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_14": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_15": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_16": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_17": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_18": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_19": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_20": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_21": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs": "nixpkgs_49" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_10": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_14": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_15": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_16": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_17": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_18": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_19": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_49": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_7", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_12" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_12": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_13": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_14": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_15": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_16": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_69", + "utils": "utils_26" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_77", + "utils": "utils_31" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_81", + "utils": "utils_32" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1665882657, + "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1656898050, + "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_12": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_13": { + "flake": false, + "locked": { + "lastModified": 1667783503, + "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_14": { + "flake": false, + "locked": { + "lastModified": 1669338728, + "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_7": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_8": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_9": { + "flake": false, + "locked": { + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-utils": "flake-utils_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_22", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_34", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_9", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ogmios", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_10", + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1670464865, + "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_16", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "hackage": "hackage_13", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_11", + "nixpkgs": [ + "ogmios-nixos", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_15", + "tullia": "tullia_3" + }, + "locked": { + "lastModified": 1667783630, + "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_46", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "hackage": "hackage_14", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_12", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_16", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1669338917, + "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_21", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_4", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_10": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cardano-shell": "cardano-shell_14", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "hackage": "hackage_12", + "hpc-coveralls": "hpc-coveralls_14", + "nix-tools": "nix-tools_12", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_10", + "flake-utils": "flake-utils_30", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": [ + "ogmios", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "nixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1665882789, + "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9af167fb4343539ca99465057262f289b44f55da", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_7", + "nix-tools": "nix-tools_6", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": "hackage_7", + "hpc-coveralls": "hpc-coveralls_8", + "nix-tools": "nix-tools_7", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_8", + "hpc-coveralls": "hpc-coveralls_9", + "nix-tools": "nix-tools_8", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_7": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": [ + "ogmios-nixos", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_10", + "nix-tools": "nix-tools_9", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11" + }, + "locked": { + "lastModified": 1656898207, + "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_8": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_12", + "flake-utils": "flake-utils_39", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_12", + "nix-tools": "nix-tools_10", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_12" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_9": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_13", + "flake-utils": "flake-utils_40", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "hackage": "hackage_11", + "hpc-coveralls": "hpc-coveralls_13", + "nix-tools": "nix-tools_11", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_13" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_12": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_13": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_14": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_15": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_16": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_3": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_11", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": "nix_13", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_7": { + "inputs": { + "nix": "nix_14", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_8": { + "inputs": { + "nix": "nix_15", + "nixpkgs": [ + "ogmios", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_16", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_3", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_15", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_44", + "utils": "utils_20" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix-environments": { + "inputs": { + "nixpkgs": "nixpkgs_62" + }, + "locked": { + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ogmios", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1649070135, + "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_10": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_7": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_8": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_9": { + "inputs": { + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1639165170, + "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "revCount": 7, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + }, + "original": { + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "flake-utils": "flake-utils_28", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "kupo": [ + "kupo" + ], + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667868387, + "narHash": "sha256-YDlUUkbut7Oil5t1njquiSjnu+CQLHxnNFQd2A1eWCc=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_3": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_4": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_5": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "membench": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "cardano-node-measured": [ + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_2" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_2": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "cardano-node-measured": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", + "cardano-node-measured": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot_2", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_4" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_4": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", + "cardano-node-measured": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_3" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_20" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_37", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_49", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_7", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_10", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_13" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_17", + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_10": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_11": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_12": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_5": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_6": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_7": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_8": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_9": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_58" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_70" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_78" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_47", + "nixpkgs": "nixpkgs_82" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nixTools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nixTools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_40", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_52", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_54", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_63", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_65", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_80", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_11", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_21", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_23", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_31", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_36", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_38" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1672791794, + "narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1669997163, + "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_4": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_6": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_7": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_13": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_14": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_15": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_16": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_17": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_18": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_4": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_5": { + "locked": { + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_6": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_10": { - "flake": false, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_11": { - "flake": false, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_12": { - "flake": false, + "nixpkgs_10": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nixpkgs_11": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "hpc-coveralls_3": { - "flake": false, + "nixpkgs_12": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nixpkgs_13": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "nixpkgs_14": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nixpkgs_15": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nixpkgs_16": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_8": { - "flake": false, + "nixpkgs_17": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_9": { - "flake": false, + "nixpkgs_18": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs_19": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", "type": "indirect" } }, - "hydra_2": { - "inputs": { - "nix": "nix_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs_20": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "hydra_3": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_22": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_4": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_23": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "hydra_5": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_24": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_6": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_25": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_26": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix-environments": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "nixpkgs_27": { "locked": { - "lastModified": 1675397182, - "narHash": "sha256-uVqKdtxUDSbLJfaHEs+t+wc9K4iMfPVmcYF5psbK4rI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "03a6755865b7461b3b75dc34c3dd2d5e74920196", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ogmios", - "nixpkgs" - ] - }, + "nixpkgs_28": { "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "nixpkgs" - ] - }, + "nixpkgs_29": { "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "nixpkgs" - ] - }, + "nixpkgs_3": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ] + "nixpkgs_30": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_31": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_32": { + "locked": { + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] + "nixpkgs_33": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_34": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_35": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "nixpkgs_36": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ] - }, + "nixpkgs_37": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_38": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "nixpkgs_39": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_8": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "nixpkgs_4": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs_40": { "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "kupo": { - "flake": false, + "nixpkgs_41": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix", - "iohk-nix": "iohk-nix", - "kupo": [ - "kupo" - ], - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_42": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs_43": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs_44": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs_45": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs_46": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs_47": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs_48": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs_49": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs_5": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_3": { - "flake": false, + "nixpkgs_50": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "membench": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" - }, + "nixpkgs_51": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, + "nixpkgs_52": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, + "nixpkgs_53": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "membench_4": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" - }, + "nixpkgs_54": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } - }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + }, + "nixpkgs_55": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_56": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_57": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_2", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs_58": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_6", - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_59": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_10", - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_6": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_60": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools": { - "flake": false, + "nixpkgs_61": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs_62": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1670827406, + "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs_63": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs_64": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools_5": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "nixpkgs_65": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools_6": { - "flake": false, + "nixpkgs_66": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools_7": { - "flake": false, + "nixpkgs_67": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools_8": { - "flake": false, + "nixpkgs_68": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_9" - }, + "nixpkgs_69": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_17" - }, + "nixpkgs_7": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_21" - }, + "nixpkgs_70": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nixTools": { - "flake": false, + "nixpkgs_71": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixTools_2": { - "flake": false, + "nixpkgs_72": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_4", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs_73": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs_74": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_12", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs_75": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs_76": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_19", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs_77": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_78": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_79": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_8": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs": { + "nixpkgs_80": { "locked": { - "lastModified": 1676549890, - "narHash": "sha256-sq/WcOEAl7gWrrfGkWdnyYazRyTf+enEim/o6LOQzI8=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8c66bd1b68f4708c90dcc97c6f7052a5a7b33257", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs-2003": { + "nixpkgs_81": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_10": { + "nixpkgs_82": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_11": { + "nixpkgs_83": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_12": { + "nixpkgs_9": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "node-process": { + "flake": false, + "locked": { + "lastModified": 1648681325, + "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", "type": "github" } }, - "nixpkgs-2003_2": { + "node-process_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1654323094, + "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "cardano-node", "type": "github" } }, - "nixpkgs-2003_3": { + "node-snapshot": { + "inputs": { + "customConfig": "customConfig_4", + "haskellNix": "haskellNix_4", + "iohkNix": "iohkNix_4", + "membench": "membench", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example", + "utils": "utils_24" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + } + }, + "node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_8", + "haskellNix": "haskellNix_8", + "iohkNix": "iohkNix_8", + "membench": "membench_3", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example_2", + "utils": "utils_29" + }, + "locked": { + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", "type": "github" } }, - "nixpkgs-2003_4": { + "nomad": { + "inputs": { + "nix": "nix_2", + "nixpkgs": "nixpkgs_10", + "utils": "utils_2" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2003_5": { + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell", + "inclusive": "inclusive", + "nix": "nix_3", + "nixpkgs": "nixpkgs_12", + "utils": "utils_3" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_6": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_4", + "inclusive": "inclusive_4", + "nix": "nix_5", + "nixpkgs": "nixpkgs_24", + "utils": "utils_8" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_7": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_11", + "inclusive": "inclusive_9", + "nix": "nix_10", + "nixpkgs": "nixpkgs_41", + "utils": "utils_17" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_8": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_2", + "inclusive": "inclusive_2", + "nixpkgs": "nixpkgs_13", + "utils": "utils_4" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2003_9": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_5", + "inclusive": "inclusive_5", + "nixpkgs": "nixpkgs_25", + "utils": "utils_9" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105": { + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_12", + "inclusive": "inclusive_10", + "nixpkgs": "nixpkgs_42", + "utils": "utils_18" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105_10": { + "nomad_2": { + "inputs": { + "nix": "nix_9", + "nixpkgs": "nixpkgs_39", + "utils": "utils_16" + }, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2105_11": { + "ogmios": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_12": { + "ogmios-nixos": { + "inputs": { + "CHaP": "CHaP_3", + "blank": "blank_6", + "cardano-configurations": "cardano-configurations_3", + "cardano-node": "cardano-node_3", + "flake-compat": "flake-compat_15", + "haskell-nix": "haskell-nix_5", + "iohk-nix": "iohk-nix_4", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1668087435, + "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "3b229c1795efa30243485730b78ea053992fdc7a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_2": { + "ogmios_2": { + "inputs": { + "CHaP": "CHaP", + "blank": "blank_4", + "cardano-configurations": "cardano-configurations_2", + "cardano-node": "cardano-node_2", + "flake-compat": "flake-compat_11", + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "nixpkgs": [ + "ogmios", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1670513793, + "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" } }, - "nixpkgs-2105_3": { + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_4": { + "old-ghc-nix_10": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_5": { + "old-ghc-nix_11": { + "flake": false, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_6": { + "old-ghc-nix_12": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_7": { + "old-ghc-nix_13": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_8": { + "old-ghc-nix_14": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_9": { + "old-ghc-nix_15": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111": { + "old-ghc-nix_16": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_10": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_11": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_12": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_2": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_3": { + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_4": { + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_5": { + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_6": { + "old-ghc-nix_9": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_7": { + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_8": { + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_9": { + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2205": { + "ouroboros-network": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_2": { + "ouroboros-network_2": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_3": { + "ouroboros-network_3": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_4": { + "ouroboros-network_4": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2211": { + "plutip": { + "inputs": { + "CHaP": [ + "plutip", + "bot-plutus-interface", + "CHaP" + ], + "bot-plutus-interface": "bot-plutus-interface", + "flake-compat": "flake-compat_21", + "haskell-nix": [ + "plutip", + "bot-plutus-interface", + "haskell-nix" + ], + "iohk-nix": [ + "plutip", + "bot-plutus-interface", + "iohk-nix" + ], + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "lastModified": 1671024770, + "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" } }, - "nixpkgs-regression": { + "plutus-apps": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1647347289, + "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_2": { + "plutus-apps_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1654271253, + "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "61de89d33340279b8452a0dbb52a87111db87e82", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_3": { + "plutus-example": { + "inputs": { + "customConfig": "customConfig_6", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_23" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_4": { + "plutus-example_2": { + "inputs": { + "customConfig": "customConfig_10", + "haskellNix": "haskellNix_10", + "iohkNix": "iohkNix_10", + "nixpkgs": [ + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_5": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", + "type": "github" } }, - "nixpkgs-regression_6": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_48" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" } }, - "nixpkgs-unstable": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_10": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_17", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_11": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_12": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_14", + "nixpkgs": "nixpkgs_43", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_2": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_16", + "nixpkgs": "nixpkgs_46", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_3": { + "root": { + "inputs": { + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": [ + "ogmios-nixos", + "cardano-node" + ], + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_8", + "iohk-nix-environments": "iohk-nix-environments", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ogmios", + "nixpkgs" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_4": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_5": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_6": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_7": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_8": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_9": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_10": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_11": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_12": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_13": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_14": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_15": { + "stackage_10": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_16": { + "stackage_11": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1656898145, + "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_17": { + "stackage_12": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_18": { + "stackage_13": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_19": { + "stackage_14": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_2": { + "stackage_15": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1667610757, + "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_20": { + "stackage_16": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1669338854, + "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_21": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_22": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_3": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_4": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_5": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1665537461, + "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_6": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_7": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_8": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_9": { + "std": { + "inputs": { + "devshell": "devshell_6", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago", + "nixpkgs": "nixpkgs_27", + "yants": "yants_2" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process": { - "flake": false, + "std_2": { + "inputs": { + "devshell": "devshell_14", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_24", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_57", + "yants": "yants_4" + }, "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process_2": { - "flake": false, + "std_3": { + "inputs": { + "devshell": "devshell_15", + "nixpkgs": "nixpkgs_60", + "yants": "yants_5" + }, "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot": { + "std_4": { "inputs": { - "customConfig": "customConfig_2", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", - "membench": "membench", - "nixpkgs": [ + "blank": "blank_5", + "devshell": "devshell_16", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_36", + "makes": [ "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example", - "utils": "utils_3" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "microvm": [ + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_71", + "yants": "yants_6" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot_2": { + "std_5": { "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "membench": "membench_3", - "nixpkgs": [ + "blank": "blank_7", + "devshell": "devshell_17", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_44", + "makes": [ "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example_2", - "utils": "utils_8" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", + "microvm": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_79", + "yants": "yants_7" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios": { + "std_6": { "inputs": { - "CHaP": "CHaP", - "blank": "blank", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node", - "flake-compat": "flake-compat_4", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix_2", - "nixpkgs": [ - "ogmios", + "blank": "blank_8", + "devshell": "devshell_18", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_48", + "makes": [ + "plutip", + "bot-plutus-interface", "haskell-nix", - "nixpkgs-unstable" - ] + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", + "microvm": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_83", + "yants": "yants_8" }, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_3", - "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_8", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_3", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" - ] - }, + "stdlib": { "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "stdlib_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, + "stdlib_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, + "stdlib_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_12": { - "flake": false, + "stdlib_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_2": { - "flake": false, + "stdlib_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" - } - }, - "old-ghc-nix_3": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + } + }, + "stdlib_4": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_4": { - "flake": false, + "stdlib_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_5": { - "flake": false, + "stdlib_6": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, + "stdlib_7": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "stdlib_8": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, + "stdlib_9": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_9": { - "flake": false, + "tailwind-haskell": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_51" + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1654211622, + "narHash": "sha256-N5Xa/JhF9PRgmt+ZVZFaHT7onezENxp7ktnGhhqOBaw=", + "owner": "srid", + "repo": "tailwind-haskell", + "rev": "8d08cda7a1cb67435de1ba1739f65e25b303364f", "type": "github" }, "original": { - "owner": "angerman", + "owner": "srid", "ref": "master", - "repo": "old-ghc-nix", + "repo": "tailwind-haskell", "type": "github" } }, - "ouroboros-network": { - "flake": false, + "terranix": { + "inputs": { + "bats-assert": "bats-assert", + "bats-support": "bats-support", + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples" + }, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "ouroboros-network_2": { - "flake": false, + "terranix-examples": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_3": { - "flake": false, + "terranix-examples_2": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_4": { - "flake": false, + "terranix-examples_3": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "plutip": { + "terranix_2": { "inputs": { - "CHaP": [ - "plutip", - "bot-plutus-interface", - "CHaP" - ], - "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_14", - "haskell-nix": [ - "plutip", - "bot-plutus-interface", - "haskell-nix" - ], - "iohk-nix": [ - "plutip", - "bot-plutus-interface", - "iohk-nix" - ], + "bats-assert": "bats-assert_2", + "bats-support": "bats-support_2", + "flake-utils": "flake-utils_9", "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ] + "db-sync", + "cardano-world", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_2" }, "locked": { - "lastModified": 1671024770, - "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps": { - "flake": false, + "terranix_3": { + "inputs": { + "bats-assert": "bats-assert_3", + "bats-support": "bats-support_3", + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_3" + }, "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps_2": { - "flake": false, + "tullia": { + "inputs": { + "nix2container": "nix2container", + "nixpkgs": "nixpkgs_59", + "std": "std_3" + }, "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "plutus-apps", + "repo": "tullia", "type": "github" } }, - "plutus-example": { + "tullia_2": { "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", "nixpkgs": [ "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_2" + "std": "std_4" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "plutus-example_2": { + "tullia_3": { "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", "nixpkgs": [ "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_7" + "std": "std_5" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "root": { + "tullia_4": { "inputs": { - "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ogmios-nixos", - "cardano-node" - ], - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat", - "iohk-nix-environments": "iohk-nix-environments", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_4", "nixpkgs": [ - "ogmios", + "plutip", + "bot-plutus-interface", + "haskell-nix", "nixpkgs" ], - "ogmios": "ogmios", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" - } - }, - "stackage": { - "flake": false, + "std": "std_6" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "tullia", "type": "github" } }, - "stackage_10": { - "flake": false, + "utils": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_11": { - "flake": false, + "utils_10": { "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_12": { - "flake": false, + "utils_11": { "locked": { - "lastModified": 1669338854, - "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_2": { - "flake": false, + "utils_12": { "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_3": { - "flake": false, + "utils_13": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_4": { - "flake": false, + "utils_14": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_5": { - "flake": false, + "utils_15": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_6": { - "flake": false, + "utils_16": { "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_7": { - "flake": false, + "utils_17": { "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_8": { - "flake": false, + "utils_18": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_9": { - "flake": false, + "utils_19": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std": { - "inputs": { - "blank": "blank_2", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "makes": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_10", - "yants": "yants" - }, + "utils_2": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std_2": { - "inputs": { - "blank": "blank_4", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_16", - "makes": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "microvm": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_18", - "yants": "yants_2" - }, + "utils_20": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "std_3": { - "inputs": { - "blank": "blank_5", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_20", - "makes": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_22", - "yants": "yants_3" - }, + "utils_21": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std" - }, + "utils_22": { "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_2", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_2" - }, + "utils_23": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_3", - "nixpkgs": [ - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ], - "std": "std_3" - }, + "utils_24": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_25": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7171,7 +14207,7 @@ "type": "github" } }, - "utils_10": { + "utils_26": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7186,13 +14222,13 @@ "type": "github" } }, - "utils_11": { + "utils_27": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -7201,7 +14237,7 @@ "type": "github" } }, - "utils_2": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7216,7 +14252,7 @@ "type": "github" } }, - "utils_3": { + "utils_29": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7231,13 +14267,28 @@ "type": "github" } }, - "utils_4": { + "utils_3": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_30": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7246,7 +14297,7 @@ "type": "github" } }, - "utils_5": { + "utils_31": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7261,13 +14312,13 @@ "type": "github" } }, - "utils_6": { + "utils_32": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7276,7 +14327,22 @@ "type": "github" } }, - "utils_7": { + "utils_4": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_5": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7291,13 +14357,28 @@ "type": "github" } }, - "utils_8": { + "utils_6": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_7": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -7306,22 +14387,178 @@ "type": "github" } }, + "utils_8": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, "utils_9": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, + "vulnix": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, + "vulnix_2": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, "yants": { + "inputs": { + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_53" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { "inputs": { "nixpkgs": [ "ogmios", @@ -7345,7 +14582,7 @@ "type": "github" } }, - "yants_2": { + "yants_7": { "inputs": { "nixpkgs": [ "ogmios-nixos", @@ -7369,7 +14606,7 @@ "type": "github" } }, - "yants_3": { + "yants_8": { "inputs": { "nixpkgs": [ "plutip", diff --git a/flake.nix b/flake.nix index 1137d5bdd..9ea0ab3ae 100644 --- a/flake.nix +++ b/flake.nix @@ -39,6 +39,9 @@ url = "github:justinwoo/easy-purescript-nix/da7acb2662961fd355f0a01a25bd32bf33577fa8"; flake = false; }; + + blockfrost.url = "github:mlabs-haskell/blockfrost-backend-ryo/aciceri/nix-flake"; + db-sync.url = "github:mlabs-haskell/cardano-db-sync/aciceri/customConfig-input-fix"; }; outputs = @@ -257,6 +260,7 @@ in (psProjectFor pkgs).apps // { ctl-runtime = pkgs.launchCtlRuntime { }; + ctl-runtime-blockfrost = pkgs.launchCtlRuntime { blockfrost.enable = true; }; default = self.apps.${system}.ctl-runtime; vm = { type = "app"; diff --git a/nix/runtime.nix b/nix/runtime.nix index 4fa68e8f3..62b7383fe 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -20,13 +20,26 @@ rec { tag = "1.35.4"; }; ogmios = { port = 1337; }; + postgres = { + # User-facing port on host machine. + # Can be set to null in order to not bind postgres port to host. + # Postgres will always be accessible via `postgres:5432` from + # containers. + port = 5432; + user = "ctl"; + password = "ctl"; + db = "ctl-${network.name}"; + }; kupo = { port = 1442; since = "origin"; - match = "*/*"; # matches Shelley addresses only + match = "*/*"; # matches Shelley addresses onlsy tag = "v2.2.0"; # TODO: Do we want to support connection through ogmios? }; + blockfrost = { + enable = false; + }; # Additional config that will be included in Arion's `docker-compose.raw`. This # corresponds directly to YAML that would be written in a `docker-compose` file, # e.g. volumes @@ -155,7 +168,61 @@ rec { ]; }; }; - }; + "postgres-${network.name}" = { + service = { + image = "postgres:13"; + ports = + if postgres.port == null + then [ ] + else [ "${toString postgres.port}:5432" ]; + environment = { + POSTGRES_USER = "${postgres.user}"; + POSTGRES_PASSWORD = "${postgres.password}"; + POSTGRES_DB = "${postgres.db}"; + }; + }; + }; + } // (if config.blockfrost.enable then { + "db-sync-${network.name}" = { + build.image = pkgs.lib.mkForce inputs.db-sync.packages.${pkgs.system}.dockerImage; + service = { + useHostStore = true; + environment = { + NETWORK = network.name; + POSTGRES_HOST = "postgres-${network.name}"; + POSTGRES_PORT = postgres.port; + POSTGRES_USER = postgres.user; + PGPASSWORD = postgres.password; + # POSTGRES_PASSWORD = postgres.password; + }; + depends_on = [ "postgres-${network.name}" ]; + volumes = [ + "${nodeIpcVol}:/ipc" + "${config.cardano-configurations}/network/${config.network.name}/cardano-db-sync:/config" + "${config.cardano-configurations}/network/${config.network.name}/genesis:/genesis" + ]; + }; + }; + blockfrost = { + build.image = pkgs.lib.mkForce inputs.blockfrost.packages.${pkgs.system}.dockerImage; + service = { + useHostStore = true; + ports = [ (bindPort 3000) ]; + environment ={ + BLOCKFROST_CONFIG_SERVER_PORT = 3000; + BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; + BLOCKFROST_CONFIG_SERVER_DEBUG= "false"; + BLOCKFROST_CONFIG_DBSYNC_HOST = "postgres-${network.name}:5432"; + BLOCKFROST_CONFIG_DBSYNC_USER = postgres.user; + BLOCKFROST_CONFIG_DBSYNC_DATABASE = postgres.db; + BLOCKFROST_CONFIG_DBSYNC_MAX_CONN = "1"; + BLOCKFROST_CONFIG_NETWORK = "preview"; + BLOCKFROST_CONFIG_TOKEN_REGISTRY_URL = "https://tokens.cardano.org"; + PGPASSWORD = postgres.password; + }; + }; + }; + } else {}); in { docker-compose.raw = pkgs.lib.recursiveUpdate From 7fc76caa90eff464fbb402bc59e2848049a84d9c Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 14:44:30 +0100 Subject: [PATCH 031/478] Merged lockfile --- flake.lock | 122 +++++++++++++++++++++++------------------------------ 1 file changed, 53 insertions(+), 69 deletions(-) diff --git a/flake.lock b/flake.lock index 8dfa4d8f3..7bd3c4199 100644 --- a/flake.lock +++ b/flake.lock @@ -4320,11 +4320,11 @@ }, "flake-utils_28": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4364,21 +4364,6 @@ } }, "flake-utils_30": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_31": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4393,7 +4378,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_31": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4408,7 +4393,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_32": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4423,7 +4408,7 @@ "type": "github" } }, - "flake-utils_34": { + "flake-utils_33": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4438,7 +4423,7 @@ "type": "github" } }, - "flake-utils_35": { + "flake-utils_34": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4453,7 +4438,7 @@ "type": "github" } }, - "flake-utils_36": { + "flake-utils_35": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -4468,7 +4453,7 @@ "type": "github" } }, - "flake-utils_37": { + "flake-utils_36": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4483,7 +4468,7 @@ "type": "github" } }, - "flake-utils_38": { + "flake-utils_37": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4498,7 +4483,7 @@ "type": "github" } }, - "flake-utils_39": { + "flake-utils_38": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4513,13 +4498,13 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_39": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4528,13 +4513,13 @@ "type": "github" } }, - "flake-utils_40": { + "flake-utils_4": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -4543,7 +4528,7 @@ "type": "github" } }, - "flake-utils_41": { + "flake-utils_40": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4558,7 +4543,7 @@ "type": "github" } }, - "flake-utils_42": { + "flake-utils_41": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4573,7 +4558,7 @@ "type": "github" } }, - "flake-utils_43": { + "flake-utils_42": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4588,7 +4573,7 @@ "type": "github" } }, - "flake-utils_44": { + "flake-utils_43": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -4603,7 +4588,7 @@ "type": "github" } }, - "flake-utils_45": { + "flake-utils_44": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4618,7 +4603,7 @@ "type": "github" } }, - "flake-utils_46": { + "flake-utils_45": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4633,7 +4618,7 @@ "type": "github" } }, - "flake-utils_47": { + "flake-utils_46": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4648,7 +4633,7 @@ "type": "github" } }, - "flake-utils_48": { + "flake-utils_47": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -4663,7 +4648,7 @@ "type": "github" } }, - "flake-utils_49": { + "flake-utils_48": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -5495,7 +5480,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_29", + "flake-utils": "flake-utils_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_5", @@ -5536,7 +5521,7 @@ "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_10", "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_34", + "flake-utils": "flake-utils_33", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", "hackage": "hackage_9", "hpc-coveralls": "hpc-coveralls_10", @@ -5578,7 +5563,7 @@ "cabal-36": "cabal-36_13", "cardano-shell": "cardano-shell_15", "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_42", + "flake-utils": "flake-utils_41", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", "hackage": "hackage_13", "hpc-coveralls": "hpc-coveralls_15", @@ -5618,7 +5603,7 @@ "cabal-36": "cabal-36_14", "cardano-shell": "cardano-shell_16", "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_46", + "flake-utils": "flake-utils_45", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", "hackage": "hackage_14", "hpc-coveralls": "hpc-coveralls_16", @@ -5697,7 +5682,7 @@ "cabal-32": "cabal-32_14", "cabal-34": "cabal-34_14", "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_41", + "flake-utils": "flake-utils_40", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", "hackage": "hackage_12", "hpc-coveralls": "hpc-coveralls_14", @@ -5777,7 +5762,7 @@ "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "hackage": [ "ogmios", @@ -5820,7 +5805,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_31", + "flake-utils": "flake-utils_30", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_6", "hpc-coveralls": "hpc-coveralls_7", @@ -5859,7 +5844,7 @@ "cabal-34": "cabal-34_8", "cabal-36": "cabal-36_8", "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_31", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": "hackage_7", "hpc-coveralls": "hpc-coveralls_8", @@ -5899,7 +5884,7 @@ "cabal-32": "cabal-32_9", "cabal-34": "cabal-34_9", "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": "hackage_8", "hpc-coveralls": "hpc-coveralls_9", @@ -5939,7 +5924,7 @@ "cabal-34": "cabal-34_11", "cabal-36": "cabal-36_10", "cardano-shell": "cardano-shell_11", - "flake-utils": "flake-utils_38", + "flake-utils": "flake-utils_37", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", "hackage": [ "ogmios-nixos", @@ -5982,7 +5967,7 @@ "cabal-34": "cabal-34_12", "cabal-36": "cabal-36_11", "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_39", + "flake-utils": "flake-utils_38", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", "hackage": "hackage_10", "hpc-coveralls": "hpc-coveralls_12", @@ -6021,7 +6006,7 @@ "cabal-34": "cabal-34_13", "cabal-36": "cabal-36_12", "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_40", + "flake-utils": "flake-utils_39", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", "hackage": "hackage_11", "hpc-coveralls": "hpc-coveralls_13", @@ -7264,7 +7249,6 @@ }, "kupo-nixos": { "inputs": { - "flake-utils": "flake-utils_28", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", "kupo": [ @@ -7277,17 +7261,17 @@ ] }, "locked": { - "lastModified": 1667868387, - "narHash": "sha256-YDlUUkbut7Oil5t1njquiSjnu+CQLHxnNFQd2A1eWCc=", + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", "owner": "mlabs-haskell", "repo": "kupo-nixos", - "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "kupo-nixos", - "rev": "438799a67d0e6e17f21b7b3d0ae1b6325e505c61", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" } }, @@ -7883,7 +7867,7 @@ }, "n2c_3": { "inputs": { - "flake-utils": "flake-utils_37", + "flake-utils": "flake-utils_36", "nixpkgs": [ "ogmios", "haskell-nix", @@ -7908,7 +7892,7 @@ }, "n2c_4": { "inputs": { - "flake-utils": "flake-utils_45", + "flake-utils": "flake-utils_44", "nixpkgs": [ "ogmios-nixos", "haskell-nix", @@ -7933,7 +7917,7 @@ }, "n2c_5": { "inputs": { - "flake-utils": "flake-utils_49", + "flake-utils": "flake-utils_48", "nixpkgs": [ "plutip", "bot-plutus-interface", @@ -8360,7 +8344,7 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_34", "nixpkgs": "nixpkgs_70" }, "locked": { @@ -8379,7 +8363,7 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_43", + "flake-utils": "flake-utils_42", "nixpkgs": "nixpkgs_78" }, "locked": { @@ -8398,7 +8382,7 @@ }, "nix2container_4": { "inputs": { - "flake-utils": "flake-utils_47", + "flake-utils": "flake-utils_46", "nixpkgs": "nixpkgs_82" }, "locked": { @@ -13395,7 +13379,7 @@ "blank": "blank_5", "devshell": "devshell_16", "dmerge": "dmerge_3", - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_35", "makes": [ "ogmios", "haskell-nix", @@ -13435,7 +13419,7 @@ "blank": "blank_7", "devshell": "devshell_17", "dmerge": "dmerge_4", - "flake-utils": "flake-utils_44", + "flake-utils": "flake-utils_43", "makes": [ "ogmios-nixos", "haskell-nix", @@ -13475,7 +13459,7 @@ "blank": "blank_8", "devshell": "devshell_18", "dmerge": "dmerge_5", - "flake-utils": "flake-utils_48", + "flake-utils": "flake-utils_47", "makes": [ "plutip", "bot-plutus-interface", From 88459634c3a77171405877c10ed353b58bcab3c7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 18:51:55 +0400 Subject: [PATCH 032/478] Improve logging in Sync.* functions --- src/Internal/BalanceTx/Sync.purs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 63c719009..b573130df 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -24,6 +24,7 @@ import Ctl.Internal.Contract.Wallet import Ctl.Internal.Contract.Wallet as Utxos import Ctl.Internal.Helpers (liftEither, liftedM) import Ctl.Internal.Serialization.Address (Address) +import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Wallet (cip30Wallet) import Data.Array as Array @@ -58,7 +59,8 @@ syncBackendWithWallet = whenM isCip30Wallet do logTrace' "syncBackendWithWallet: synchronization finished" else do logTrace' $ - "syncBackendWithWallet: waiting for query layer state synchronization..." + "syncBackendWithWallet: waiting for query layer state " <> + "synchronization with the wallet..." liftAff (delay delayMs) sync delayMs errorMessage = "Failed to wait for wallet state synchronization (timeout). " @@ -102,14 +104,17 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do logTrace' "syncWalletWithTransaction: synchronization finished" pure unit else do - logTrace' - "syncWalletWithTransaction: Waiting for wallet state synchronization..." + logTrace' $ + "syncWalletWithTransaction: waiting for wallet state synchronization " + <> "with the query layer, querying for Tx: " + <> byteArrayToHex (unwrap txHash) liftAff (delay delayMs) sync delayMs errorMessage = - "Failed to wait for wallet state synchronization. Continuing anyway. " - <> "This may indicate UTxO locking in use in the wallet. Consider " - <> "increasing `timeParams.syncWallet.timeout` in `ContractParams`" + "syncWalletWithTransaction: Failed to wait for wallet state " + <> "synchronization. Continuing anyway. This may indicate UTxO locking" + <> " in use in the wallet. Consider increasing " + <> "`timeParams.syncWallet.timeout` in `ContractParams`" -- | Waits untill all provided transaction inputs appear in the UTxO -- | set provided by the wallet. @@ -119,7 +124,6 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do -- | keys to use for signing. As a result, we get `MissingVKeyWitnesses`. syncWalletWithInputs :: Array TransactionInput -> Contract Unit syncWalletWithInputs txInputs = do - logTrace' "syncWalletWithInputs: starting" { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) ownAddrs <- getControlledAddresses ownInputUtxos <- txInputs # @@ -134,12 +138,16 @@ syncWalletWithInputs txInputs = do <<< unwrap ) ) + logTrace' $ + "syncWalletWithInputs: waiting for UTxO set to synchronize with the " + <> "following inputs: " + <> show ownInputUtxos let go = do walletUtxos <- Utxos.getWalletUtxos <#> fromMaybe Map.empty let difference = ownInputUtxos `Map.difference` walletUtxos if Map.isEmpty difference then do - logTrace' "syncWalletWithInputs: finished" + logTrace' "syncWalletWithInputs: synchronization finished" else do liftAff $ delay delayMs logTrace' $ "syncWalletWithInputs: remaining UTxOs that the wallet " @@ -151,7 +159,7 @@ syncWalletWithInputs txInputs = do errorMessage = "syncWalletWithInputs: timeout while waiting for wallet" <> " UTxO set and CTL query layer UTxO set to synchronize " - <> "(`timeParams.syncWallet.timeout` in `ContractParams`)" + <> "(see `timeParams.syncWallet.timeout` in `ContractParams`)" -- | Without plutus conversion getUtxo' :: TransactionInput -> Contract (Maybe Cardano.TransactionOutput) From 84c236433182c2a180b97ae838a1dbface28b7b5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 19:02:28 +0400 Subject: [PATCH 033/478] Remove E2E_SKIP_JQUERY_DOWNLOAD config variable for E2E --- CHANGELOG.md | 2 ++ doc/e2e-testing.md | 1 - nix/default.nix | 1 - src/Internal/Test/E2E/Options.purs | 11 ++--------- src/Internal/Test/E2E/Runner.purs | 27 ++++++++++----------------- src/Internal/Test/E2E/Wallets.purs | 5 ++++- 6 files changed, 18 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a05435052..10619ea1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +- `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail. + ## [v5.0.0] ### Added diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index c9303b8dc..65647af1d 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -116,7 +116,6 @@ The tests can set up using CLI arguments, environment variables, or both. CLI ar | URL of settings archive asset | `--settings-archive-url` | `E2E_SETTINGS_ARCHIVE_URL` | | Path to the user data directory | `--chrome-user-data` | `E2E_CHROME_USER_DATA` | | Extra browser CLI arguments | `--extra-browser-args` | `E2E_EXTRA_BROWSER_ARGS` | -| Skip downloading jQuery (allows to run E2E+Plutip tests fully offline) | `--skip-jquery-download` | `E2E_SKIP_JQUERY_DOWNLOAD` | |------------------------------------------------------------------------|-----------------------------|----------------------------| | Eternl CRX URL | `--eternl-crx-url` | `ETERNL_CRX_URL` | | Eternl CRX file | `--eternl-crx` | `ETERNL_CRX` | diff --git a/nix/default.nix b/nix/default.nix index 9d364cef1..1548dcc4f 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -348,7 +348,6 @@ let export E2E_NO_HEADLESS=false export PLUTIP_PORT=8087 export OGMIOS_PORT=1345 - export E2E_SKIP_JQUERY_DOWNLOAD=true export E2E_EXTRA_BROWSER_ARGS="--disable-web-security" python -m http.server 4008 --directory ${bundledPursProject}/dist & diff --git a/src/Internal/Test/E2E/Options.purs b/src/Internal/Test/E2E/Options.purs index 267ddbe0d..371558944 100644 --- a/src/Internal/Test/E2E/Options.purs +++ b/src/Internal/Test/E2E/Options.purs @@ -8,7 +8,6 @@ module Ctl.Internal.Test.E2E.Options , CommonOptions_ , ClusterPortsOptions_ , ClusterPortsOptions - , JQuery_ , SettingsOptions , E2ECommand ( RunE2ETests @@ -87,7 +86,7 @@ import Type.Row (type (+)) -- | CLI options for E2E tests. type TestOptions = Record - ( NoHeadless_ + Tests_ + TestTimeout_ + ClusterPortsOptions_ + JQuery_ + ( NoHeadless_ + Tests_ + TestTimeout_ + ClusterPortsOptions_ + CommonOptions_ + () ) @@ -101,8 +100,6 @@ type ClusterPortsOptions_ (r :: Row Type) = type ClusterPortsOptions = Record (ClusterPortsOptions_ ()) -type JQuery_ (r :: Row Type) = (skipJQuery :: Boolean | r) - type NoHeadless_ (r :: Row Type) = (noHeadless :: Boolean | r) type Tests_ (r :: Row Type) = (tests :: Array E2ETest | r) @@ -299,10 +296,6 @@ testOptionsParser = ado [ long "no-headless" , help "Show visible browser window" ] - skipJQuery <- switch $ fold - [ long "skip-jquery-download" - , help "Skip downloading JQuery (useful for offline mode)" - ] testTimeout <- option (Just <$> int) $ fold [ long "test-timeout" , help "Timeout for each test" @@ -313,7 +306,7 @@ testOptionsParser = ado (clusterPorts :: ClusterPortsOptions) <- clusterPortsOptionsParser in build (merge clusterPorts <<< merge res) - { noHeadless, tests, testTimeout, skipJQuery } + { noHeadless, tests, testTimeout } testParser :: ReadM E2ETest testParser = eitherReader \str -> diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 559250095..0777540ea 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -145,14 +145,12 @@ runE2ECommand = case _ of noHeadless <- liftEffect $ readNoHeadless testOptions.noHeadless testTimeout <- liftEffect $ readTestTimeout testOptions.testTimeout portOptions <- liftEffect $ readPorts testOptions - skipJQuery <- liftEffect $ readSkipJQuery testOptions.skipJQuery extraBrowserArgs <- liftEffect $ readExtraArgs testOptions.extraBrowserArgs let testOptions' = build (merge portOptions) $ testOptions { noHeadless = noHeadless , testTimeout = testTimeout , tests = tests - , skipJQuery = skipJQuery , extraBrowserArgs = extraBrowserArgs } runE2ETests testOptions' runtime @@ -229,11 +227,13 @@ testPlan testPlan opts@{ tests } rt@{ wallets } = group "E2E tests" do for_ tests \testEntry@{ specString } -> test specString $ case testEntry of + -- KeyWallet tests { url, wallet: NoWallet } -> do withBrowser opts.noHeadless opts.extraBrowserArgs rt Nothing \browser -> do - withE2ETest opts.skipJQuery (wrap url) browser \{ page } -> do + withE2ETest true (wrap url) browser \{ page } -> do subscribeToTestStatusUpdates page + -- Plutip in E2E tests { url, wallet: PlutipCluster } -> do let distr = withStakeKey privateStakeKey @@ -259,9 +259,10 @@ testPlan opts@{ tests } rt@{ wallets } = _ -> liftEffect $ throw "Unsupported backend" withBrowser opts.noHeadless opts.extraBrowserArgs rt Nothing \browser -> do - withE2ETest opts.skipJQuery (wrap url) browser \{ page } -> do + withE2ETest true (wrap url) browser \{ page } -> do setClusterSetup page clusterSetup subscribeToTestStatusUpdates page + -- E2E tests with a light wallet { url, wallet: WalletExtension wallet } -> do { password, extensionId } <- liftEffect $ liftMaybe @@ -269,7 +270,7 @@ testPlan opts@{ tests } rt@{ wallets } = $ Map.lookup wallet wallets withBrowser opts.noHeadless opts.extraBrowserArgs rt (Just extensionId) \browser -> do - withE2ETest opts.skipJQuery (wrap url) browser \re@{ page } -> do + withE2ETest false (wrap url) browser \re@{ page } -> do let confirmAccess = case wallet of @@ -303,8 +304,11 @@ testPlan opts@{ tests } rt@{ wallets } = ConfirmAccess -> rethrow someWallet.confirmAccess Sign -> rethrow someWallet.sign Success -> pure unit - Failure _ -> pure unit -- error raised directly inside `subscribeToBrowserEvents` + -- error will be raised directly inside + -- `subscribeToBrowserEvents` + Failure _ -> pure unit where + -- A specialized version that does not deal with wallet automation subscribeToTestStatusUpdates :: Toppokki.Page -> Aff Unit subscribeToTestStatusUpdates page = subscribeToBrowserEvents page @@ -345,7 +349,6 @@ readTestRuntime testOptions = do <<< delete (Proxy :: Proxy "testTimeout") <<< delete (Proxy :: Proxy "plutipPort") <<< delete (Proxy :: Proxy "ogmiosPort") - <<< delete (Proxy :: Proxy "skipJQuery") <<< delete (Proxy :: Proxy "kupoPort") ) readBrowserRuntime Nothing $ removeUnneeded testOptions @@ -556,16 +559,6 @@ retrieveJQuery = toAffE <<< _retrieveJQuery foreign import _retrieveJQuery :: Toppokki.Page -> Effect (Promise String) -readSkipJQuery :: Boolean -> Effect Boolean -readSkipJQuery true = pure true -readSkipJQuery false = do - mbStr <- lookupEnv "E2E_SKIP_JQUERY_DOWNLOAD" - case mbStr of - Nothing -> pure false - Just str -> do - liftMaybe (error $ "Failed to read E2E_SKIP_JQUERY_DOWNLOAD: " <> str) $ - readBoolean str - readExtraArgs :: Array BrowserArg -> Effect (Array BrowserArg) readExtraArgs old = do mbStr <- lookupEnv "E2E_EXTRA_BROWSER_ARGS" diff --git a/src/Internal/Test/E2E/Wallets.purs b/src/Internal/Test/E2E/Wallets.purs index bdc265443..44dea9cf6 100644 --- a/src/Internal/Test/E2E/Wallets.purs +++ b/src/Internal/Test/E2E/Wallets.purs @@ -233,7 +233,10 @@ flintSign _ _ _ = do getJQuery :: RunningE2ETest -> Aff String getJQuery re = - liftM (error "JQuery not available (E2E_SKIP_JQUERY_DOWNLOAD=true)") re.jQuery + liftM (error errMessage) re.jQuery + where + errMessage = + "JQuery not available (wrong E2E runtime type? Please report as bug)" lodeConfirmAccess :: ExtensionId -> RunningE2ETest -> Aff Unit lodeConfirmAccess extId re = do From 402888ba659c5893c8c19f9e9a792e3623cbf13e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 19:24:37 +0400 Subject: [PATCH 034/478] Refactoring in Sync.*, fix warnings --- examples/Utxos.purs | 2 - src/Internal/BalanceTx/Sync.purs | 65 +++++++++++++++++--------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 93f56654e..6644d0c1d 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -5,7 +5,6 @@ import Contract.Prelude import Contract.Address ( PaymentPubKeyHash , StakePubKeyHash - , getWalletAddress , ownPaymentPubKeyHash , ownStakePubKeyHash ) @@ -28,7 +27,6 @@ import Contract.Transaction ) import Contract.TxConstraints (DatumPresence(DatumInline, DatumWitness)) import Contract.TxConstraints as Constraints -import Contract.Utxos (utxosAt) import Contract.Value (Value) import Contract.Value (lovelaceValueOf, singleton) as Value import Contract.Wallet (getWalletUtxos) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index b573130df..20df22c56 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -48,21 +48,22 @@ import Effect.Exception (error) syncBackendWithWallet :: Contract Unit syncBackendWithWallet = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncBackend) - parOneOf [ sync delayMs, waitAndLogError timeout errorMessage ] + let + sync :: Contract Unit + sync = do + utxos <- getWalletUtxos <#> fromMaybe Map.empty + allFound <- all isJust <$> traverse getUtxo' + (fst <$> Map.toUnfoldableUnordered utxos :: Array TransactionInput) + if allFound then do + logTrace' "syncBackendWithWallet: synchronization finished" + else do + logTrace' $ + "syncBackendWithWallet: waiting for query layer state " <> + "synchronization with the wallet..." + liftAff (delay delayMs) + sync + parOneOf [ sync, waitAndLogError timeout errorMessage ] where - sync :: Milliseconds -> Contract Unit - sync delayMs = do - utxos <- getWalletUtxos <#> fromMaybe Map.empty - allFound <- all isJust <$> traverse getUtxo' - (fst <$> Map.toUnfoldableUnordered utxos :: Array TransactionInput) - if allFound then do - logTrace' "syncBackendWithWallet: synchronization finished" - else do - logTrace' $ - "syncBackendWithWallet: waiting for query layer state " <> - "synchronization with the wallet..." - liftAff (delay delayMs) - sync delayMs errorMessage = "Failed to wait for wallet state synchronization (timeout). " <> "Continuing anyway. Consider increasing `timeParams.syncBackend.timeout`" <> " in `ContractParams`" @@ -78,6 +79,23 @@ syncWalletWithTransaction :: TransactionHash -> Contract Unit syncWalletWithTransaction txHash = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) queryHandle <- getQueryHandle + + let + sync :: Contract Unit + sync = do + inputs <- map fst <<< Map.toUnfoldable <<< fromMaybe Map.empty <$> + getWalletUtxos + if Array.any (\input -> (unwrap input).transactionId == txHash) inputs then + do + logTrace' "syncWalletWithTransaction: synchronization finished" + pure unit + else do + logTrace' $ + "syncWalletWithTransaction: waiting for wallet state synchronization " + <> "with the query layer, querying for Tx: " + <> byteArrayToHex (unwrap txHash) + liftAff (delay delayMs) + sync -- Collect all the addresses controlled by the wallet -- (reward addresses are omitted on purpose, we don't need them) ownAddresses <- getControlledAddresses @@ -93,23 +111,8 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do logTrace' $ "Transaction output addresses: " <> show ownAddresses else do - parOneOf [ sync delayMs, waitAndLogError timeout errorMessage ] + parOneOf [ sync, waitAndLogError timeout errorMessage ] where - sync :: Milliseconds -> Contract Unit - sync delayMs = do - inputs <- map fst <<< Map.toUnfoldable <<< fromMaybe Map.empty <$> - getWalletUtxos - if Array.any (\input -> (unwrap input).transactionId == txHash) inputs then - do - logTrace' "syncWalletWithTransaction: synchronization finished" - pure unit - else do - logTrace' $ - "syncWalletWithTransaction: waiting for wallet state synchronization " - <> "with the query layer, querying for Tx: " - <> byteArrayToHex (unwrap txHash) - liftAff (delay delayMs) - sync delayMs errorMessage = "syncWalletWithTransaction: Failed to wait for wallet state " <> "synchronization. Continuing anyway. This may indicate UTxO locking" @@ -149,10 +152,10 @@ syncWalletWithInputs txInputs = do if Map.isEmpty difference then do logTrace' "syncWalletWithInputs: synchronization finished" else do - liftAff $ delay delayMs logTrace' $ "syncWalletWithInputs: remaining UTxOs that the wallet " <> "does not know about: " <> show difference + liftAff $ delay delayMs go parOneOf [ go, waitAndLogError timeout errorMessage ] where From 80a6da8098118519a04a588abd3dd2c054fcaa78 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Feb 2023 20:33:19 +0400 Subject: [PATCH 035/478] - Make awaitTxConfirmed delay & timeout configurable - Use Seconds for timeouts - Add logging to Kupo requests --- src/Contract/Config.purs | 8 +++--- src/Internal/BalanceTx/Sync.purs | 12 ++++----- src/Internal/Contract/AwaitTxConfirmed.purs | 30 +++++++++------------ src/Internal/Contract/Monad.purs | 7 ++--- src/Internal/QueryM/Kupo.purs | 10 +++++-- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 3a48d03b9..40fca1d03 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -72,7 +72,7 @@ import Ctl.Internal.Wallet.Spec import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Time.Duration (Milliseconds(Milliseconds)) +import Data.Time.Duration (Milliseconds(Milliseconds), Seconds(Seconds)) testnetConfig :: ContractParams testnetConfig = @@ -91,9 +91,11 @@ testnetConfig = -- As clarified in Eternl discord, they synchronize with the server every 2 -- minutes, so 125 seconds would probably be enough. -- For other wallets, it is not very important - { delay: Milliseconds 1_000.0, timeout: Milliseconds 130_000.0 } + { delay: Milliseconds 1_000.0, timeout: Seconds 130.0 } , syncBackend: - { delay: Milliseconds 3_000.0, timeout: Milliseconds 100_000.0 } + { delay: Milliseconds 3_000.0, timeout: Seconds 100.0 } + , awaitTxConfirmed: + { delay: Milliseconds 1_000.0, timeout: Nothing } } } diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 20df22c56..302995890 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -35,7 +35,7 @@ import Data.Maybe (Maybe, fromMaybe, isJust) import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set as Set -import Data.Time.Duration (Milliseconds) +import Data.Time.Duration (Milliseconds, fromDuration) import Data.Traversable (traverse) import Data.Tuple (fst) import Data.Tuple.Nested ((/\)) @@ -62,7 +62,7 @@ syncBackendWithWallet = whenM isCip30Wallet do "synchronization with the wallet..." liftAff (delay delayMs) sync - parOneOf [ sync, waitAndLogError timeout errorMessage ] + parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] where errorMessage = "Failed to wait for wallet state synchronization (timeout). " <> "Continuing anyway. Consider increasing `timeParams.syncBackend.timeout`" @@ -111,7 +111,7 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do logTrace' $ "Transaction output addresses: " <> show ownAddresses else do - parOneOf [ sync, waitAndLogError timeout errorMessage ] + parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] where errorMessage = "syncWalletWithTransaction: Failed to wait for wallet state " @@ -146,7 +146,7 @@ syncWalletWithInputs txInputs = do <> "following inputs: " <> show ownInputUtxos let - go = do + sync = do walletUtxos <- Utxos.getWalletUtxos <#> fromMaybe Map.empty let difference = ownInputUtxos `Map.difference` walletUtxos if Map.isEmpty difference then do @@ -156,8 +156,8 @@ syncWalletWithInputs txInputs = do <> "does not know about: " <> show difference liftAff $ delay delayMs - go - parOneOf [ go, waitAndLogError timeout errorMessage ] + sync + parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] where errorMessage = "syncWalletWithInputs: timeout while waiting for wallet" diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index c33d7f8b4..589f7e98d 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -23,14 +23,10 @@ import Ctl.Internal.Types.Transaction , TransactionInput(TransactionInput) ) import Data.Either (either) -import Data.Maybe (isJust, maybe) +import Data.Maybe (fromMaybe, isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Number (infinity) -import Data.Time.Duration - ( Milliseconds(Milliseconds) - , Seconds(Seconds) - , fromDuration - ) +import Data.Time.Duration (Milliseconds, Seconds(Seconds), fromDuration) import Data.Traversable (for_) import Data.UInt as UInt import Effect.Aff (delay) @@ -43,14 +39,16 @@ import Effect.Exception (throw) -- | Will fail to confirm if the transaction includes no outputs. -- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 awaitTxConfirmed :: TransactionHash -> Contract Unit -awaitTxConfirmed = awaitTxConfirmedWithTimeout (Seconds infinity) +awaitTxConfirmed txHash = do + { timeout } <- asks (_.timeParams >>> _.awaitTxConfirmed) + awaitTxConfirmedWithTimeout (fromMaybe (Seconds infinity) timeout) txHash -- | Same as `awaitTxConfirmed`, but allows to specify a timeout in seconds for waiting. -- | Throws an exception on timeout. -- | Will fail to confirm if the transaction includes no outputs. -- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 awaitTxConfirmedWithTimeout :: Seconds -> TransactionHash -> Contract Unit -awaitTxConfirmedWithTimeout timeoutSeconds txHash = +awaitTxConfirmedWithTimeout timeoutSeconds txHash = do -- If timeout is infinity, do not use a timeout at all. if unwrap timeoutSeconds == infinity then void waitForConfirmation else do @@ -82,18 +80,16 @@ awaitTxConfirmedWithTimeout timeoutSeconds txHash = -- query, so we need to check for the utxos separately. waitForConfirmation :: Contract Boolean waitForConfirmation = do - tryUntilTrue delayTime (doesTxExist txHash) + { delay: delayMs } <- asks (_.timeParams >>> _.awaitTxConfirmed) + tryUntilTrue delayMs (doesTxExist txHash) confirmTxDelay <- asks _.backend <#> (getBlockfrostBackend >=> _.confirmTxDelay) isBlockfrost <- asks _.backend <#> getBlockfrostBackend >>> isJust when isBlockfrost do - tryUntilTrue delayTime (utxosPresentForTxHash txHash) + tryUntilTrue delayMs (utxosPresentForTxHash txHash) for_ confirmTxDelay (liftAff <<< delay <<< fromDuration) syncWalletWithTransaction txHash pure true - where - delayTime :: Milliseconds - delayTime = wrap 1000.0 -- Perform the check until it returns true. tryUntilTrue :: Milliseconds -> Contract Boolean -> Contract Unit @@ -120,11 +116,12 @@ utxosPresentForTxHash txHash = do -- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 awaitTxConfirmedWithTimeoutSlots :: Int -> TransactionHash -> Contract Unit awaitTxConfirmedWithTimeoutSlots timeoutSlots txHash = do + { delay: delayMs } <- asks (_.timeParams >>> _.awaitTxConfirmed) limitSlot <- getCurrentSlot >>= addSlots timeoutSlots - tryUntilTrue delayTime do + tryUntilTrue delayMs do checkSlotLimit limitSlot doesTxExist txHash - tryUntilTrue delayTime do + tryUntilTrue delayMs do checkSlotLimit limitSlot utxosPresentForTxHash txHash syncWalletWithTransaction txHash @@ -149,9 +146,6 @@ awaitTxConfirmedWithTimeoutSlots timeoutSlots txHash = do "awaitTxConfirmedWithTimeoutSlots: \ \ timeout exceeded, Transaction not confirmed" - delayTime :: Milliseconds - delayTime = Milliseconds 1000.0 - -- | Checks if a Tx is known to the query layer. It may still be unconfirmed. doesTxExist :: TransactionHash -> Contract Boolean doesTxExist txHash = do diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index a9d936cc2..a79175dd9 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -73,7 +73,7 @@ import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Time.Duration (Milliseconds) +import Data.Time.Duration (Milliseconds, Seconds) import Data.Traversable (for_, traverse, traverse_) import Effect (Effect) import Effect.Aff (Aff, ParAff, attempt, error, finally, supervise) @@ -349,8 +349,9 @@ withContractEnv params action = do -- | Delays and timeouts for internal query functions. type ContractTimeParams = - { syncWallet :: { delay :: Milliseconds, timeout :: Milliseconds } - , syncBackend :: { delay :: Milliseconds, timeout :: Milliseconds } + { syncWallet :: { delay :: Milliseconds, timeout :: Seconds } + , syncBackend :: { delay :: Milliseconds, timeout :: Seconds } + , awaitTxConfirmed :: { delay :: Milliseconds, timeout :: Maybe Seconds } } -- | Options to construct an environment for a `Contract` to run. diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index d8e6de1ce..b47bc8749 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -24,6 +24,7 @@ import Aeson import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) +import Contract.Log (logTrace') import Control.Alt ((<|>)) import Control.Bind (bindFlipped) import Control.Monad.Error.Class (throwError) @@ -168,9 +169,13 @@ getScriptByHash scriptHash = do -- FIXME: This can only confirm transactions with at least one output. -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 isTxConfirmed :: TransactionHash -> QueryM (Either ClientError (Maybe Slot)) -isTxConfirmed th = do +isTxConfirmed txHash = do config <- asks (_.kupoConfig <<< _.config) - liftAff $ isTxConfirmedAff config th + do + -- Do this clumsy special case logging. It's better than sending it silently + let endpoint = "/matches/*@" <> byteArrayToHex (unwrap txHash) + logTrace' $ "sending kupo request: " <> endpoint + liftAff $ isTxConfirmedAff config txHash -- Exported due to Ogmios requiring confirmations at a websocket level isTxConfirmedAff @@ -475,6 +480,7 @@ kupoGetRequest :: String -> QueryM (Either Affjax.Error (Affjax.Response String)) kupoGetRequest endpoint = do config <- asks (_.kupoConfig <<< _.config) + logTrace' $ "sending kupo request: " <> endpoint liftAff $ kupoGetRequestAff config endpoint kupoGetRequestAff From dda37d558bf3f785295064eea318de8901074bbe Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:10:02 +0100 Subject: [PATCH 036/478] Using correct versions for `blockfrost` and `cardano-db-sync` --- flake.lock | 1223 ++++++++++++++++++++++++++++++++++++---------------- flake.nix | 5 +- 2 files changed, 862 insertions(+), 366 deletions(-) diff --git a/flake.lock b/flake.lock index 7bd3c4199..cc716be3c 100644 --- a/flake.lock +++ b/flake.lock @@ -957,21 +957,35 @@ "type": "github" } }, + "blank_9": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1673436749, - "narHash": "sha256-ptvmkWkNAhjYyyJZA+Ii4q6W9DIT646xngSlBsj05oA=", - "owner": "mlabs-haskell", + "lastModified": 1677067960, + "narHash": "sha256-tDCxVlHiK1sWN70WwfLt4ZciOfi4qegta2ehgotMI90=", + "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "3816e79db6f9d7f6e128f8e70700238597dd9538", + "rev": "69e9cf145a7fa726e8422a535a1befa2a7ab8722", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "aciceri/nix-flake", + "owner": "blockfrost", "repo": "blockfrost-backend-ryo", "type": "github" } @@ -979,7 +993,7 @@ "bot-plutus-interface": { "inputs": { "CHaP": "CHaP_4", - "flake-compat": "flake-compat_18", + "flake-compat": "flake-compat_20", "haskell-nix": "haskell-nix_6", "iohk-nix": "iohk-nix_5", "nixpkgs": [ @@ -1927,7 +1941,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_64" + "nixpkgs": "nixpkgs_67" }, "locked": { "lastModified": 1642701714, @@ -1946,7 +1960,7 @@ }, "cardano-mainnet-mirror_2": { "inputs": { - "nixpkgs": "nixpkgs_66" + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1642701714, @@ -1965,7 +1979,7 @@ }, "cardano-mainnet-mirror_3": { "inputs": { - "nixpkgs": "nixpkgs_67" + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1642701714, @@ -1984,7 +1998,7 @@ }, "cardano-mainnet-mirror_4": { "inputs": { - "nixpkgs": "nixpkgs_72" + "nixpkgs": "nixpkgs_75" }, "locked": { "lastModified": 1642701714, @@ -2003,7 +2017,7 @@ }, "cardano-mainnet-mirror_5": { "inputs": { - "nixpkgs": "nixpkgs_74" + "nixpkgs": "nixpkgs_77" }, "locked": { "lastModified": 1642701714, @@ -2022,7 +2036,7 @@ }, "cardano-mainnet-mirror_6": { "inputs": { - "nixpkgs": "nixpkgs_75" + "nixpkgs": "nixpkgs_78" }, "locked": { "lastModified": 1642701714, @@ -2071,7 +2085,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_22" + "utils": "utils_23" }, "locked": { "lastModified": 1644954571, @@ -2103,7 +2117,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_27" + "utils": "utils_28" }, "locked": { "lastModified": 1644954571, @@ -2129,7 +2143,7 @@ "blank" ], "customConfig": "customConfig_3", - "flake-compat": "flake-compat_9", + "flake-compat": "flake-compat_11", "hackageNix": "hackageNix", "haskellNix": "haskellNix_3", "hostNixpkgs": [ @@ -2152,7 +2166,7 @@ "node-process": "node-process", "node-snapshot": "node-snapshot", "plutus-apps": "plutus-apps", - "utils": "utils_25" + "utils": "utils_26" }, "locked": { "lastModified": 1667644902, @@ -2177,7 +2191,7 @@ "blank" ], "customConfig": "customConfig_7", - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_16", "hackageNix": "hackageNix_2", "haskellNix": "haskellNix_7", "hostNixpkgs": [ @@ -2200,7 +2214,7 @@ "node-process": "node-process_2", "node-snapshot": "node-snapshot_2", "plutus-apps": "plutus-apps_2", - "utils": "utils_30" + "utils": "utils_31" }, "locked": { "lastModified": 1659625017, @@ -2619,11 +2633,11 @@ "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "custom-config", + "path": "./custom-config", "type": "path" }, "original": { - "path": "custom-config", + "path": "./custom-config", "type": "path" } }, @@ -2800,19 +2814,19 @@ "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_21" + "utils": "utils_22" }, "locked": { - "lastModified": 1673522919, - "narHash": "sha256-cX3mxaXm/ASRHiIOosHq+DXwsU5PbKwzhraEssGn8Kk=", - "owner": "mlabs-haskell", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "owner": "input-output-hk", "repo": "cardano-db-sync", - "rev": "e49d0a1fbf48e96bf0f09ffd98096d0f3ddd214e", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "aciceri/customConfig-input-fix", + "owner": "input-output-hk", + "ref": "13.1.0.0", "repo": "cardano-db-sync", "type": "github" } @@ -3034,6 +3048,37 @@ } }, "devshell_16": { + "inputs": { + "flake-utils": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_17": { "inputs": { "flake-utils": [ "ogmios", @@ -3064,7 +3109,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_18": { "inputs": { "flake-utils": [ "ogmios-nixos", @@ -3095,7 +3140,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_19": { "inputs": { "flake-utils": [ "plutip", @@ -3329,6 +3374,37 @@ } }, "dmerge_3": { + "inputs": { + "nixlib": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_4": { "inputs": { "nixlib": [ "ogmios", @@ -3359,7 +3435,7 @@ "type": "github" } }, - "dmerge_4": { + "dmerge_5": { "inputs": { "nixlib": [ "ogmios-nixos", @@ -3390,7 +3466,7 @@ "type": "github" } }, - "dmerge_5": { + "dmerge_6": { "inputs": { "nixlib": [ "plutip", @@ -3677,6 +3753,39 @@ } }, "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1635892615, @@ -3692,7 +3801,7 @@ "type": "github" } }, - "flake-compat_11": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1668681692, @@ -3708,7 +3817,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1635892615, @@ -3724,7 +3833,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_15": { "flake": false, "locked": { "lastModified": 1650374568, @@ -3740,7 +3849,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_16": { "flake": false, "locked": { "lastModified": 1647532380, @@ -3757,7 +3866,7 @@ "type": "github" } }, - "flake-compat_15": { + "flake-compat_17": { "flake": false, "locked": { "lastModified": 1650374568, @@ -3773,7 +3882,7 @@ "type": "github" } }, - "flake-compat_16": { + "flake-compat_18": { "flake": false, "locked": { "lastModified": 1635892615, @@ -3789,7 +3898,7 @@ "type": "github" } }, - "flake-compat_17": { + "flake-compat_19": { "flake": false, "locked": { "lastModified": 1650374568, @@ -3805,14 +3914,14 @@ "type": "github" } }, - "flake-compat_18": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -3821,39 +3930,39 @@ "type": "github" } }, - "flake-compat_19": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_2": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } }, - "flake-compat_20": { + "flake-compat_22": { "flake": false, "locked": { "lastModified": 1650374568, @@ -3869,7 +3978,7 @@ "type": "github" } }, - "flake-compat_21": { + "flake-compat_23": { "flake": false, "locked": { "lastModified": 1668681692, @@ -3969,15 +4078,15 @@ "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } @@ -3985,16 +4094,15 @@ "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -4320,11 +4428,11 @@ }, "flake-utils_28": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4335,11 +4443,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4365,11 +4473,11 @@ }, "flake-utils_30": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4380,11 +4488,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4395,11 +4503,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4410,11 +4518,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4425,11 +4533,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4440,11 +4548,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4455,11 +4563,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4470,11 +4578,11 @@ }, "flake-utils_37": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4485,11 +4593,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4500,11 +4608,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4529,6 +4637,21 @@ } }, "flake-utils_40": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -4543,7 +4666,37 @@ "type": "github" } }, - "flake-utils_41": { + "flake-utils_42": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4558,7 +4711,7 @@ "type": "github" } }, - "flake-utils_42": { + "flake-utils_45": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4573,7 +4726,7 @@ "type": "github" } }, - "flake-utils_43": { + "flake-utils_46": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -4588,7 +4741,7 @@ "type": "github" } }, - "flake-utils_44": { + "flake-utils_47": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4603,7 +4756,7 @@ "type": "github" } }, - "flake-utils_45": { + "flake-utils_48": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -4618,7 +4771,7 @@ "type": "github" } }, - "flake-utils_46": { + "flake-utils_49": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4633,13 +4786,13 @@ "type": "github" } }, - "flake-utils_47": { + "flake-utils_5": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4648,13 +4801,13 @@ "type": "github" } }, - "flake-utils_48": { + "flake-utils_50": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4663,13 +4816,13 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_51": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5055,8 +5208,8 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_69", - "utils": "utils_26" + "nixpkgs": "nixpkgs_62", + "utils": "utils_21" }, "locked": { "lastModified": 1655245309, @@ -5074,8 +5227,8 @@ }, "gomod2nix_2": { "inputs": { - "nixpkgs": "nixpkgs_77", - "utils": "utils_31" + "nixpkgs": "nixpkgs_72", + "utils": "utils_27" }, "locked": { "lastModified": 1655245309, @@ -5093,7 +5246,7 @@ }, "gomod2nix_3": { "inputs": { - "nixpkgs": "nixpkgs_81", + "nixpkgs": "nixpkgs_80", "utils": "utils_32" }, "locked": { @@ -5110,6 +5263,25 @@ "type": "github" } }, + "gomod2nix_4": { + "inputs": { + "nixpkgs": "nixpkgs_84", + "utils": "utils_33" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, "hackage": { "flake": false, "locked": { @@ -5273,11 +5445,11 @@ "hackage_4": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", "type": "github" }, "original": { @@ -5480,12 +5652,12 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_28", + "flake-utils": "flake-utils_31", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_5", "hydra": "hydra_7", - "nix-tools": "nix-tools_5", + "nix-tools": "nix-tools_4", "nixpkgs": [ "kupo-nixos", "haskell-nix", @@ -5520,13 +5692,13 @@ "cabal-34": "cabal-34_10", "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_33", + "flake-compat": "flake-compat_14", + "flake-utils": "flake-utils_36", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", "hackage": "hackage_9", "hpc-coveralls": "hpc-coveralls_10", "hydra": "hydra_9", - "iserv-proxy": "iserv-proxy", + "iserv-proxy": "iserv-proxy_2", "nixpkgs": [ "ogmios", "nixpkgs" @@ -5534,12 +5706,12 @@ "nixpkgs-2003": "nixpkgs-2003_10", "nixpkgs-2105": "nixpkgs-2105_10", "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_2", "nixpkgs-unstable": "nixpkgs-unstable_12", "old-ghc-nix": "old-ghc-nix_10", "stackage": "stackage_10", - "tullia": "tullia_2" + "tullia": "tullia_3" }, "locked": { "lastModified": 1670464865, @@ -5562,8 +5734,8 @@ "cabal-34": "cabal-34_15", "cabal-36": "cabal-36_13", "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_41", + "flake-compat": "flake-compat_18", + "flake-utils": "flake-utils_44", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", "hackage": "hackage_13", "hpc-coveralls": "hpc-coveralls_15", @@ -5575,11 +5747,11 @@ "nixpkgs-2003": "nixpkgs-2003_15", "nixpkgs-2105": "nixpkgs-2105_15", "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2205": "nixpkgs-2205_5", "nixpkgs-unstable": "nixpkgs-unstable_17", "old-ghc-nix": "old-ghc-nix_15", "stackage": "stackage_15", - "tullia": "tullia_3" + "tullia": "tullia_4" }, "locked": { "lastModified": 1667783630, @@ -5602,8 +5774,8 @@ "cabal-34": "cabal-34_16", "cabal-36": "cabal-36_14", "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_45", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_48", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", "hackage": "hackage_14", "hpc-coveralls": "hpc-coveralls_16", @@ -5616,11 +5788,11 @@ "nixpkgs-2003": "nixpkgs-2003_16", "nixpkgs-2105": "nixpkgs-2105_16", "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2205": "nixpkgs-2205_6", "nixpkgs-unstable": "nixpkgs-unstable_18", "old-ghc-nix": "old-ghc-nix_16", "stackage": "stackage_16", - "tullia": "tullia_4" + "tullia": "tullia_5" }, "locked": { "lastModified": 1669338917, @@ -5682,11 +5854,11 @@ "cabal-32": "cabal-32_14", "cabal-34": "cabal-34_14", "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_40", + "flake-utils": "flake-utils_43", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", "hackage": "hackage_12", "hpc-coveralls": "hpc-coveralls_14", - "nix-tools": "nix-tools_12", + "nix-tools": "nix-tools_11", "nixpkgs": [ "ogmios-nixos", "cardano-node", @@ -5722,12 +5894,13 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_8", "flake-utils": "flake-utils_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_4", "hydra": "hydra_6", - "nix-tools": "nix-tools_4", + "iserv-proxy": "iserv-proxy", "nixpkgs": [ "db-sync", "haskellNix", @@ -5736,16 +5909,19 @@ "nixpkgs-2003": "nixpkgs-2003_4", "nixpkgs-2105": "nixpkgs-2105_4", "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211", "nixpkgs-unstable": "nixpkgs-unstable_6", "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "stackage": "stackage_4", + "tullia": "tullia_2" }, "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "lastModified": 1670464865, + "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "rev": "6c992eacf65c19e29ae5296b11def11813179643", "type": "github" }, "original": { @@ -5761,8 +5937,8 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_29", + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "hackage": [ "ogmios", @@ -5779,7 +5955,7 @@ "nixpkgs-2003": "nixpkgs-2003_6", "nixpkgs-2105": "nixpkgs-2105_6", "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", "stackage": "stackage_6" @@ -5805,11 +5981,11 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_33", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_6", "hpc-coveralls": "hpc-coveralls_7", - "nix-tools": "nix-tools_6", + "nix-tools": "nix-tools_5", "nixpkgs": [ "ogmios", "cardano-node", @@ -5844,11 +6020,11 @@ "cabal-34": "cabal-34_8", "cabal-36": "cabal-36_8", "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_31", + "flake-utils": "flake-utils_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": "hackage_7", "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_7", + "nix-tools": "nix-tools_6", "nixpkgs": [ "ogmios", "cardano-node", @@ -5884,11 +6060,11 @@ "cabal-32": "cabal-32_9", "cabal-34": "cabal-34_9", "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": "hackage_8", "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_8", + "nix-tools": "nix-tools_7", "nixpkgs": [ "ogmios", "cardano-node", @@ -5924,7 +6100,7 @@ "cabal-34": "cabal-34_11", "cabal-36": "cabal-36_10", "cardano-shell": "cardano-shell_11", - "flake-utils": "flake-utils_37", + "flake-utils": "flake-utils_40", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", "hackage": [ "ogmios-nixos", @@ -5933,7 +6109,7 @@ ], "hpc-coveralls": "hpc-coveralls_11", "hydra": "hydra_10", - "nix-tools": "nix-tools_9", + "nix-tools": "nix-tools_8", "nixpkgs": [ "ogmios-nixos", "cardano-node", @@ -5967,11 +6143,11 @@ "cabal-34": "cabal-34_12", "cabal-36": "cabal-36_11", "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_38", + "flake-utils": "flake-utils_41", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", "hackage": "hackage_10", "hpc-coveralls": "hpc-coveralls_12", - "nix-tools": "nix-tools_10", + "nix-tools": "nix-tools_9", "nixpkgs": [ "ogmios-nixos", "cardano-node", @@ -6006,11 +6182,11 @@ "cabal-34": "cabal-34_13", "cabal-36": "cabal-36_12", "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_39", + "flake-utils": "flake-utils_42", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", "hackage": "hackage_11", "hpc-coveralls": "hpc-coveralls_13", - "nix-tools": "nix-tools_11", + "nix-tools": "nix-tools_10", "nixpkgs": [ "ogmios-nixos", "cardano-node", @@ -6878,7 +7054,7 @@ }, "iohk-nix-environments": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1670489000, @@ -7037,11 +7213,11 @@ ] }, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", "type": "github" }, "original": { @@ -7230,6 +7406,22 @@ "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" } }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1639165170, + "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "revCount": 7, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + }, + "original": { + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + } + }, "kupo": { "flake": false, "locked": { @@ -7659,6 +7851,22 @@ "type": "github" } }, + "mdbook-kroki-preprocessor_6": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, "membench": { "inputs": { "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", @@ -7867,10 +8075,10 @@ }, "n2c_3": { "inputs": { - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_30", "nixpkgs": [ - "ogmios", - "haskell-nix", + "db-sync", + "haskellNix", "tullia", "std", "nixpkgs" @@ -7892,9 +8100,9 @@ }, "n2c_4": { "inputs": { - "flake-utils": "flake-utils_44", + "flake-utils": "flake-utils_39", "nixpkgs": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", "std", @@ -7917,10 +8125,9 @@ }, "n2c_5": { "inputs": { - "flake-utils": "flake-utils_48", + "flake-utils": "flake-utils_47", "nixpkgs": [ - "plutip", - "bot-plutus-interface", + "ogmios-nixos", "haskell-nix", "tullia", "std", @@ -7941,12 +8148,38 @@ "type": "github" } }, - "nix": { + "n2c_6": { "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression" - }, + "flake-utils": "flake-utils_51", + "nixpkgs": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_7", + "nixpkgs-regression": "nixpkgs-regression" + }, "locked": { "lastModified": 1646164353, "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", @@ -8015,7 +8248,45 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_9", + "flake-utils": [ + "db-sync", + "haskellNix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "db-sync", + "haskellNix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "db-sync", + "haskellNix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_15", "flake-utils": [ "ogmios", "haskell-nix", @@ -8023,7 +8294,7 @@ "nix2container", "flake-utils" ], - "gomod2nix": "gomod2nix", + "gomod2nix": "gomod2nix_2", "nixpkgs": [ "ogmios", "haskell-nix", @@ -8051,9 +8322,9 @@ "type": "github" } }, - "nix-nomad_2": { + "nix-nomad_3": { "inputs": { - "flake-compat": "flake-compat_17", + "flake-compat": "flake-compat_19", "flake-utils": [ "ogmios-nixos", "haskell-nix", @@ -8061,7 +8332,7 @@ "nix2container", "flake-utils" ], - "gomod2nix": "gomod2nix_2", + "gomod2nix": "gomod2nix_3", "nixpkgs": [ "ogmios-nixos", "haskell-nix", @@ -8089,9 +8360,9 @@ "type": "github" } }, - "nix-nomad_3": { + "nix-nomad_4": { "inputs": { - "flake-compat": "flake-compat_20", + "flake-compat": "flake-compat_22", "flake-utils": [ "plutip", "bot-plutus-interface", @@ -8100,7 +8371,7 @@ "nix2container", "flake-utils" ], - "gomod2nix": "gomod2nix_3", + "gomod2nix": "gomod2nix_4", "nixpkgs": [ "plutip", "bot-plutus-interface", @@ -8178,22 +8449,6 @@ "type": "github" } }, - "nix-tools_12": { - "flake": false, - "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nix-tools_2": { "flake": false, "locked": { @@ -8245,11 +8500,11 @@ "nix-tools_5": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -8293,11 +8548,11 @@ "nix-tools_8": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { @@ -8309,11 +8564,11 @@ "nix-tools_9": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -8344,8 +8599,8 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_70" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_63" }, "locked": { "lastModified": 1658567952, @@ -8363,8 +8618,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_42", - "nixpkgs": "nixpkgs_78" + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_73" }, "locked": { "lastModified": 1658567952, @@ -8382,8 +8637,27 @@ }, "nix2container_4": { "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_82" + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_81" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_49", + "nixpkgs": "nixpkgs_85" }, "locked": { "lastModified": 1658567952, @@ -8517,7 +8791,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_66", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -8538,7 +8812,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_65", + "nixpkgs": "nixpkgs_68", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -8559,7 +8833,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -8580,7 +8854,7 @@ "nix_17": { "inputs": { "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_73", + "nixpkgs": "nixpkgs_76", "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { @@ -8601,7 +8875,7 @@ "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_79", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -8622,7 +8896,7 @@ "nix_19": { "inputs": { "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_80", + "nixpkgs": "nixpkgs_83", "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { @@ -8895,6 +9169,44 @@ } }, "nixago_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { "inputs": { "flake-utils": [ "ogmios", @@ -8932,7 +9244,7 @@ "type": "github" } }, - "nixago_4": { + "nixago_5": { "inputs": { "flake-utils": [ "ogmios-nixos", @@ -8970,7 +9282,7 @@ "type": "github" } }, - "nixago_5": { + "nixago_6": { "inputs": { "flake-utils": [ "plutip", @@ -9058,16 +9370,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1672791794, - "narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=", + "lastModified": 1676253841, + "narHash": "sha256-jhuI8Mmky8VCD45OoJEuF6HdPLFBwNrHA0ljjZ/zkfw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d", + "rev": "a45a8916243a7d27acc358f4fc18c4491f3eeca8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } @@ -9490,11 +9802,11 @@ }, "nixpkgs-2105_4": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -9746,11 +10058,11 @@ }, "nixpkgs-2111_4": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9920,6 +10232,22 @@ "type": "github" } }, + "nixpkgs-2205_6": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2211": { "locked": { "lastModified": 1669997163, @@ -9936,6 +10264,22 @@ "type": "github" } }, + "nixpkgs-2211_2": { + "locked": { + "lastModified": 1669997163, + "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-docker": { "locked": { "lastModified": 1652739558, @@ -10433,11 +10777,11 @@ }, "nixpkgs-unstable_6": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { @@ -11381,40 +11725,58 @@ }, "nixpkgs_62": { "locked": { - "lastModified": 1670827406, - "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_63": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_64": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_65": { + "locked": { + "lastModified": 1670827406, + "narHash": "sha256-nLNk7uiLbhbvb4TVz67XK7+Ezr1zcWYDWmNrWGmEUqA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "ffca9ffaaafb38c8979068cee98b2644bd3f14cb", "type": "github" }, "original": { @@ -11422,7 +11784,7 @@ "type": "indirect" } }, - "nixpkgs_65": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11437,7 +11799,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_67": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11451,7 +11813,22 @@ "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_68": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_69": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11465,7 +11842,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_7": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11480,23 +11857,21 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_70": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_7": { + "nixpkgs_71": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11511,7 +11886,23 @@ "type": "indirect" } }, - "nixpkgs_70": { + "nixpkgs_72": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_73": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11526,7 +11917,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_74": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11542,7 +11933,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_75": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11556,7 +11947,7 @@ "type": "indirect" } }, - "nixpkgs_73": { + "nixpkgs_76": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11571,7 +11962,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_77": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11585,7 +11976,7 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_78": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11599,7 +11990,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_79": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11614,7 +12005,23 @@ "type": "indirect" } }, - "nixpkgs_77": { + "nixpkgs_8": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -11630,7 +12037,7 @@ "type": "github" } }, - "nixpkgs_78": { + "nixpkgs_81": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11645,7 +12052,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_82": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11661,23 +12068,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_83": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11692,7 +12083,7 @@ "type": "indirect" } }, - "nixpkgs_81": { + "nixpkgs_84": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -11708,7 +12099,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_85": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11723,7 +12114,7 @@ "type": "github" } }, - "nixpkgs_83": { + "nixpkgs_86": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11800,7 +12191,7 @@ "nixpkgs-2105" ], "plutus-example": "plutus-example", - "utils": "utils_24" + "utils": "utils_25" }, "locked": { "lastModified": 1645120669, @@ -11831,7 +12222,7 @@ "nixpkgs-2105" ], "plutus-example": "plutus-example_2", - "utils": "utils_29" + "utils": "utils_30" }, "locked": { "lastModified": 1645120669, @@ -12039,10 +12430,10 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_6", + "blank": "blank_7", "cardano-configurations": "cardano-configurations_3", "cardano-node": "cardano-node_3", - "flake-compat": "flake-compat_15", + "flake-compat": "flake-compat_17", "haskell-nix": "haskell-nix_5", "iohk-nix": "iohk-nix_4", "nixpkgs": [ @@ -12068,10 +12459,10 @@ "ogmios_2": { "inputs": { "CHaP": "CHaP", - "blank": "blank_4", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_13", "haskell-nix": "haskell-nix_4", "iohk-nix": "iohk-nix_3", "nixpkgs": [ @@ -12487,7 +12878,7 @@ "CHaP" ], "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_21", + "flake-compat": "flake-compat_23", "haskell-nix": [ "plutip", "bot-plutus-interface", @@ -12565,7 +12956,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_23" + "utils": "utils_24" }, "locked": { "lastModified": 1640022647, @@ -12595,7 +12986,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_28" + "utils": "utils_29" }, "locked": { "lastModified": 1640022647, @@ -12772,7 +13163,7 @@ ], "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_8", + "flake-compat": "flake-compat_10", "iohk-nix-environments": "iohk-nix-environments", "kupo": "kupo", "kupo-nixos": "kupo-nixos", @@ -13213,11 +13604,11 @@ "stackage_4": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { @@ -13376,28 +13767,28 @@ }, "std_4": { "inputs": { - "blank": "blank_5", + "blank": "blank_4", "devshell": "devshell_16", "dmerge": "dmerge_3", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_29", "makes": [ - "ogmios", - "haskell-nix", + "db-sync", + "haskellNix", "tullia", "std", "blank" ], "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", "microvm": [ - "ogmios", - "haskell-nix", + "db-sync", + "haskellNix", "tullia", "std", "blank" ], "n2c": "n2c_3", "nixago": "nixago_3", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_64", "yants": "yants_6" }, "locked": { @@ -13416,12 +13807,12 @@ }, "std_5": { "inputs": { - "blank": "blank_7", + "blank": "blank_6", "devshell": "devshell_17", "dmerge": "dmerge_4", - "flake-utils": "flake-utils_43", + "flake-utils": "flake-utils_38", "makes": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", "std", @@ -13429,7 +13820,7 @@ ], "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", "microvm": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", "std", @@ -13437,7 +13828,7 @@ ], "n2c": "n2c_4", "nixago": "nixago_4", - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_74", "yants": "yants_7" }, "locked": { @@ -13459,10 +13850,9 @@ "blank": "blank_8", "devshell": "devshell_18", "dmerge": "dmerge_5", - "flake-utils": "flake-utils_47", + "flake-utils": "flake-utils_46", "makes": [ - "plutip", - "bot-plutus-interface", + "ogmios-nixos", "haskell-nix", "tullia", "std", @@ -13470,8 +13860,7 @@ ], "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", "microvm": [ - "plutip", - "bot-plutus-interface", + "ogmios-nixos", "haskell-nix", "tullia", "std", @@ -13479,7 +13868,7 @@ ], "n2c": "n2c_5", "nixago": "nixago_5", - "nixpkgs": "nixpkgs_83", + "nixpkgs": "nixpkgs_82", "yants": "yants_8" }, "locked": { @@ -13496,6 +13885,48 @@ "type": "github" } }, + "std_7": { + "inputs": { + "blank": "blank_9", + "devshell": "devshell_19", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_50", + "makes": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_6", + "microvm": [ + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_6", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_86", + "yants": "yants_9" + }, + "locked": { + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, "stdlib": { "locked": { "lastModified": 1590026685, @@ -13850,8 +14281,8 @@ "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", "nixpkgs": [ - "ogmios", - "haskell-nix", + "db-sync", + "haskellNix", "nixpkgs" ], "std": "std_4" @@ -13875,18 +14306,18 @@ "nix-nomad": "nix-nomad_2", "nix2container": "nix2container_3", "nixpkgs": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "nixpkgs" ], "std": "std_5" }, "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { @@ -13899,13 +14330,38 @@ "inputs": { "nix-nomad": "nix-nomad_3", "nix2container": "nix2container_4", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "nixpkgs" + ], + "std": "std_6" + }, + "locked": { + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_5": { + "inputs": { + "nix-nomad": "nix-nomad_4", + "nix2container": "nix2container_5", "nixpkgs": [ "plutip", "bot-plutus-interface", "haskell-nix", "nixpkgs" ], - "std": "std_6" + "std": "std_7" }, "locked": { "lastModified": 1666200256, @@ -14117,6 +14573,21 @@ } }, "utils_21": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_22": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14131,7 +14602,7 @@ "type": "github" } }, - "utils_22": { + "utils_23": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -14146,7 +14617,7 @@ "type": "github" } }, - "utils_23": { + "utils_24": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14161,7 +14632,7 @@ "type": "github" } }, - "utils_24": { + "utils_25": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -14176,7 +14647,7 @@ "type": "github" } }, - "utils_25": { + "utils_26": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -14191,7 +14662,7 @@ "type": "github" } }, - "utils_26": { + "utils_27": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -14206,7 +14677,7 @@ "type": "github" } }, - "utils_27": { + "utils_28": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -14221,7 +14692,7 @@ "type": "github" } }, - "utils_28": { + "utils_29": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14236,37 +14707,37 @@ "type": "github" } }, - "utils_29": { + "utils_3": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_3": { + "utils_30": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "utils_30": { + "utils_31": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -14281,7 +14752,7 @@ "type": "github" } }, - "utils_31": { + "utils_32": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -14296,7 +14767,7 @@ "type": "github" } }, - "utils_32": { + "utils_33": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -14543,6 +15014,30 @@ } }, "yants_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660507851, + "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "owner": "divnix", + "repo": "yants", + "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_7": { "inputs": { "nixpkgs": [ "ogmios", @@ -14566,7 +15061,7 @@ "type": "github" } }, - "yants_7": { + "yants_8": { "inputs": { "nixpkgs": [ "ogmios-nixos", @@ -14590,7 +15085,7 @@ "type": "github" } }, - "yants_8": { + "yants_9": { "inputs": { "nixpkgs": [ "plutip", diff --git a/flake.nix b/flake.nix index 9ea0ab3ae..0b27d94af 100644 --- a/flake.nix +++ b/flake.nix @@ -40,8 +40,9 @@ flake = false; }; - blockfrost.url = "github:mlabs-haskell/blockfrost-backend-ryo/aciceri/nix-flake"; - db-sync.url = "github:mlabs-haskell/cardano-db-sync/aciceri/customConfig-input-fix"; + # TODO use a tag for blockfrost as soon as they tag a recent commit (we need it as a flake) + blockfrost.url = "github:blockfrost/blockfrost-backend-ryo"; + db-sync.url = "github:input-output-hk/cardano-db-sync/13.1.0.0"; }; outputs = From 394be53891613d027a71249c48c0d020c51e0f0f Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:10:26 +0100 Subject: [PATCH 037/478] `blockfrost-backend-ryo` and `cardano-db-sync` in overlay --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 0b27d94af..efa9597ee 100644 --- a/flake.nix +++ b/flake.nix @@ -238,6 +238,8 @@ inputs.plutip.packages.${system}."plutip:exe:plutip-server"; ogmios = ogmios.packages.${system}."ogmios:exe:ogmios"; kupo = inputs.kupo-nixos.packages.${system}.kupo; + cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; + blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; buildCtlRuntime = buildCtlRuntime final; launchCtlRuntime = launchCtlRuntime final; inherit cardano-configurations; From def5b147bd553b481926f0a62800185d9639ee8e Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:11:32 +0100 Subject: [PATCH 038/478] Optional `blockfrost` and `cardano-db-sync` working in `arion` --- nix/runtime.nix | 89 +++++++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 62b7383fe..984a46318 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -39,6 +39,7 @@ rec { }; blockfrost = { enable = false; + port = 3000; }; # Additional config that will be included in Arion's `docker-compose.raw`. This # corresponds directly to YAML that would be written in a `docker-compose` file, @@ -94,6 +95,8 @@ rec { nodeDbVol = "node-${config.network.name}-db"; nodeIpcVol = "node-${config.network.name}-ipc"; kupoDbVol = "kupo-${config.network.name}-db"; + dbSyncStateVol = "db-sync-state-${config.network.name}"; + dbSyncTmpVol = "db-sync-tmp-${config.network.name}"; nodeSocketPath = "/ipc/node.socket"; bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { @@ -170,7 +173,7 @@ rec { }; "postgres-${network.name}" = { service = { - image = "postgres:13"; + image = "postgres:13"; # TODO do not use non reproducible Docker images ports = if postgres.port == null then [ ] @@ -183,44 +186,53 @@ rec { }; }; } // (if config.blockfrost.enable then { - "db-sync-${network.name}" = { - build.image = pkgs.lib.mkForce inputs.db-sync.packages.${pkgs.system}.dockerImage; - service = { - useHostStore = true; - environment = { - NETWORK = network.name; - POSTGRES_HOST = "postgres-${network.name}"; - POSTGRES_PORT = postgres.port; - POSTGRES_USER = postgres.user; - PGPASSWORD = postgres.password; - # POSTGRES_PASSWORD = postgres.password; - }; - depends_on = [ "postgres-${network.name}" ]; - volumes = [ - "${nodeIpcVol}:/ipc" - "${config.cardano-configurations}/network/${config.network.name}/cardano-db-sync:/config" - "${config.cardano-configurations}/network/${config.network.name}/genesis:/genesis" - ]; + "db-sync-${network.name}".service = { + useHostStore = true; + depends_on = [ "postgres-${network.name}" ]; + volumes = [ + "${dbSyncStateVol}:/state" + "${config.cardano-configurations}/network/${config.network.name}:/config" + "${nodeIpcVol}:/ipc" + "${dbSyncTmpVol}:/tmp" + ]; + environment = { + PGPASSFILE = (pkgs.writeText "PGPASSFILE" + "postgres-${network.name}:${toString postgres.port}:${postgres.db}:${postgres.user}:${postgres.password}").outPath; + PGPASSWORD = postgres.password; }; + command = let + start-db-sync = pkgs.writeShellApplication { + name = "start-db-sync"; + runtimeInputs = with pkgs; [ bash busybox cardano-db-sync postgresql ]; + text = '' + mkdir -p /bin + ln -sf "${pkgs.bash}/bin/sh" /bin/sh + cardano-db-sync \ + --config /config/cardano-db-sync/config.json \ + --socket-path /ipc/node.socket \ + --state-dir /state \ + --schema-dir ${inputs.db-sync}/schema + ''; + }; + in [ "${start-db-sync}/bin/start-db-sync" ]; }; - blockfrost = { - build.image = pkgs.lib.mkForce inputs.blockfrost.packages.${pkgs.system}.dockerImage; - service = { - useHostStore = true; - ports = [ (bindPort 3000) ]; - environment ={ - BLOCKFROST_CONFIG_SERVER_PORT = 3000; - BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; - BLOCKFROST_CONFIG_SERVER_DEBUG= "false"; - BLOCKFROST_CONFIG_DBSYNC_HOST = "postgres-${network.name}:5432"; - BLOCKFROST_CONFIG_DBSYNC_USER = postgres.user; - BLOCKFROST_CONFIG_DBSYNC_DATABASE = postgres.db; - BLOCKFROST_CONFIG_DBSYNC_MAX_CONN = "1"; - BLOCKFROST_CONFIG_NETWORK = "preview"; - BLOCKFROST_CONFIG_TOKEN_REGISTRY_URL = "https://tokens.cardano.org"; - PGPASSWORD = postgres.password; - }; + blockfrost.service = { + useHostStore = true; + ports = [ (bindPort blockfrost.port) ]; + environment ={ + BLOCKFROST_CONFIG_SERVER_PORT = toString blockfrost.port; + BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; + BLOCKFROST_CONFIG_SERVER_DEBUG= "false"; + # FIXME after https://github.com/blockfrost/blockfrost-backend-ryo/issues/88 + BLOCKFROST_CONFIG_DBSYNC_HOST = "postgres-${network.name}"; + BLOCKFROST_CONFIG_DBSYNC_USER = postgres.user; + BLOCKFROST_CONFIG_DBSYNC_DATABASE = postgres.db; + BLOCKFROST_CONFIG_DBSYNC_MAX_CONN = "1"; + BLOCKFROST_CONFIG_NETWORK = "${network.name}"; + BLOCKFROST_CONFIG_TOKEN_REGISTRY_URL = "https://tokens.cardano.org"; + PGPASSWORD = postgres.password; }; + command = [ "${pkgs.blockfrost-backend-ryo}/bin/blockfrost-backend-ryo" ]; }; } else {}); in @@ -231,7 +243,10 @@ rec { "${nodeDbVol}" = { }; "${nodeIpcVol}" = { }; "${kupoDbVol}" = { }; - }; + } // (if config.blockfrost.enable then { + "${dbSyncStateVol}" = { }; + "${dbSyncTmpVol}" = { }; + } else {}); } config.extraDockerCompose; services = pkgs.lib.recursiveUpdate defaultServices config.extraServices; From 6f55e5e0752b459b162fa0e8936a01553d7968d9 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:14:33 +0100 Subject: [PATCH 039/478] Useless comment --- nix/runtime.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 984a46318..123fb7953 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -21,10 +21,6 @@ rec { }; ogmios = { port = 1337; }; postgres = { - # User-facing port on host machine. - # Can be set to null in order to not bind postgres port to host. - # Postgres will always be accessible via `postgres:5432` from - # containers. port = 5432; user = "ctl"; password = "ctl"; From 0640c45a61197efcc1694a7cad6f1a78e3894c7e Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:15:30 +0100 Subject: [PATCH 040/478] Typo --- nix/runtime.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 123fb7953..56784d178 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -29,7 +29,7 @@ rec { kupo = { port = 1442; since = "origin"; - match = "*/*"; # matches Shelley addresses onlsy + match = "*/*"; # matches Shelley addresses only tag = "v2.2.0"; # TODO: Do we want to support connection through ogmios? }; From 8ffef907971181b20dbf48d4c7a46462612e0891 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 18:58:45 +0100 Subject: [PATCH 041/478] Upgraded `postgres` docker image `13 -> 15.2` And added some notes about possible improvements --- nix/runtime.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 56784d178..b9396638d 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -96,6 +96,7 @@ rec { nodeSocketPath = "/ipc/node.socket"; bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { + # TODO make this use `cardano-node` from flake inputs cardano-node = { service = { image = "inputoutput/cardano-node:${node.tag}"; @@ -119,6 +120,7 @@ rec { ]; }; }; + # TODO make this use `kupo` from flake inputs kupo = { service = { image = "cardanosolutions/kupo:${kupo.tag}"; @@ -146,6 +148,7 @@ rec { ]; }; }; + # TODO make this use `ogmios` from flake inputs ogmios = { service = { useHostStore = true; @@ -167,9 +170,11 @@ rec { ]; }; }; + # TODO do not directly use Docker images + # Arion allow to run NixOS in containers, explore this direction "postgres-${network.name}" = { service = { - image = "postgres:13"; # TODO do not use non reproducible Docker images + image = "postgres:15.2"; ports = if postgres.port == null then [ ] From 1b8a035e073d779778775813d5e7335c18088dc7 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 19:06:19 +0100 Subject: [PATCH 042/478] Formatting --- nix/runtime.nix | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index b9396638d..e2cc23673 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -201,29 +201,31 @@ rec { "postgres-${network.name}:${toString postgres.port}:${postgres.db}:${postgres.user}:${postgres.password}").outPath; PGPASSWORD = postgres.password; }; - command = let - start-db-sync = pkgs.writeShellApplication { - name = "start-db-sync"; - runtimeInputs = with pkgs; [ bash busybox cardano-db-sync postgresql ]; - text = '' - mkdir -p /bin - ln -sf "${pkgs.bash}/bin/sh" /bin/sh - cardano-db-sync \ - --config /config/cardano-db-sync/config.json \ - --socket-path /ipc/node.socket \ - --state-dir /state \ - --schema-dir ${inputs.db-sync}/schema + command = + let + start-db-sync = pkgs.writeShellApplication { + name = "start-db-sync"; + runtimeInputs = with pkgs; [ bash busybox cardano-db-sync postgresql ]; + text = '' + mkdir -p /bin + ln -sf "${pkgs.bash}/bin/sh" /bin/sh + cardano-db-sync \ + --config /config/cardano-db-sync/config.json \ + --socket-path /ipc/node.socket \ + --state-dir /state \ + --schema-dir ${inputs.db-sync}/schema ''; }; - in [ "${start-db-sync}/bin/start-db-sync" ]; + in + [ "${start-db-sync}/bin/start-db-sync" ]; }; blockfrost.service = { useHostStore = true; ports = [ (bindPort blockfrost.port) ]; - environment ={ + environment = { BLOCKFROST_CONFIG_SERVER_PORT = toString blockfrost.port; BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; - BLOCKFROST_CONFIG_SERVER_DEBUG= "false"; + BLOCKFROST_CONFIG_SERVER_DEBUG = "false"; # FIXME after https://github.com/blockfrost/blockfrost-backend-ryo/issues/88 BLOCKFROST_CONFIG_DBSYNC_HOST = "postgres-${network.name}"; BLOCKFROST_CONFIG_DBSYNC_USER = postgres.user; @@ -235,7 +237,7 @@ rec { }; command = [ "${pkgs.blockfrost-backend-ryo}/bin/blockfrost-backend-ryo" ]; }; - } else {}); + } else { }); in { docker-compose.raw = pkgs.lib.recursiveUpdate @@ -247,7 +249,7 @@ rec { } // (if config.blockfrost.enable then { "${dbSyncStateVol}" = { }; "${dbSyncTmpVol}" = { }; - } else {}); + } else { }); } config.extraDockerCompose; services = pkgs.lib.recursiveUpdate defaultServices config.extraServices; From 369d873ec4a5cae6ad01b155083ddbfcc4c80eb6 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 23 Feb 2023 21:41:19 +0100 Subject: [PATCH 043/478] Added `blockfrost-backend-ryo` to flake default `devShell` --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index efa9597ee..9484c71b0 100644 --- a/flake.nix +++ b/flake.nix @@ -134,6 +134,7 @@ nixpkgs-fmt nodePackages.eslint nodePackages.prettier + blockfrost-backend-ryo ]; }; }; From 5879f2eba2cb6c5b0596499ba45b620f9111821a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 24 Feb 2023 18:45:35 +0400 Subject: [PATCH 044/478] - document query layers and synchronization - add `ContractSynchronizationParams` to configure sync behavior - add `Contract.Sync` to re-export synchronization primitives - `utxosAt` prints warning when used with wallet addresses - optimise number of queries in algorithm for `syncBackendWithWallet` - Update CHANGELOG --- CHANGELOG.md | 10 +- doc/balancing.md | 7 +- doc/images/eternl-utxo-locking.png | Bin 0 -> 57931 bytes doc/query-layers.md | 112 ++++++++++++++++++++ src/Contract/Address.purs | 9 ++ src/Contract/Config.purs | 88 ++++++++++++--- src/Contract/Sync.purs | 9 ++ src/Contract/Utxos.purs | 49 +++++++-- src/Internal/BalanceTx/BalanceTx.purs | 11 +- src/Internal/BalanceTx/Sync.purs | 96 +++++++++++------ src/Internal/Contract/AwaitTxConfirmed.purs | 26 +++-- src/Internal/Contract/Monad.purs | 27 ++++- src/Internal/Contract/Sign.purs | 10 +- src/Internal/Plutip/Server.purs | 24 +++-- 14 files changed, 400 insertions(+), 78 deletions(-) create mode 100644 doc/images/eternl-utxo-locking.png create mode 100644 doc/query-layers.md create mode 100644 src/Contract/Sync.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 10619ea1b..0f8d5704d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,15 +56,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- Automatic retries for `403 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) +- **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info. +- Automatic retries for `503 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) - New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ### Changed +- **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md). +- All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer. +- `ContractParams` has new fields: `ContractTimeParams` and `ContractSynchronizationParams`. Default values are `Contract.Config.defaultTimeParams` and `Contract.Config.defaultSynchronizationParams` . + ### Fixed +- Performance issues when using Eternl in multi-address mode - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) -- Fix a bug in UTxO selection in `Cip30Mock` (only affects Cip30Mock users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) +- Fix a bug in UTxO selection in `Cip30Mock` (that affected `Cip30Mock` users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) ### Removed diff --git a/doc/balancing.md b/doc/balancing.md index a78527ea5..007a0c860 100644 --- a/doc/balancing.md +++ b/doc/balancing.md @@ -4,6 +4,7 @@ - [Configuring balancing process](#configuring-balancing-process) - [Balancer constraints](#balancer-constraints) - [Concurrent spending](#concurrent-spending) + - [Synchronization](#synchronization) - [Balancing process limitations](#balancing-process-limitations) @@ -23,10 +24,14 @@ CTL allows tweaking the default balancer behavior by letting the user impose con ## Concurrent spending -Attempting to spend UTxOs concurrently leads to some of the transactions being rejected. To ensure that no concurrent spending is happening, CTL uses it's own UTxO locking machinery. `balanceTxs` and `balanceTxsWithConstraints` functions can be used to construct multiple transactions at once, ensuring that the sets of inputs do not intersect. +Attempting to spend UTxOs concurrently leads to some of the transactions being rejected. To ensure that no concurrent spending is happening, CTL uses it's own UTxO locking machinery. `balanceTxs` or `balanceTxsWithConstraints` can be used to construct multiple transactions at once, ensuring that the sets of inputs do not intersect. Obviously, the number of available UTxOs must be greater than the number of transactions. CTL will throw an exception if it's not the case. +## Synchronization + +Before balancing, CTL synchronizes the wallet with the query layer, i.e. waits until all UTxOs that the wallet returns are visible in the query layer. Thus the situation when the query layer refuses to validate a Tx (either during ex-units evaluation or on Tx submission) is only possible due to a rollback. Please see [our docs for query layer synchronization](./query-layers.md). + ## Balancing process limitations It may be surprising at first, but balancing a transaction on Cardano is generally undecidable. diff --git a/doc/images/eternl-utxo-locking.png b/doc/images/eternl-utxo-locking.png new file mode 100644 index 0000000000000000000000000000000000000000..25fa6f45493c4f203b7e1c3a5e7a816734a06db1 GIT binary patch literal 57931 zcmb5UV~}P|&^Fk%t!dk~?Y^7Snx3|8+qP}nwr$(CvGcs|x4RMhZ{x&?$jXY7m8U98 zd0k-uc?ozJ92g)VAb2TBQ6(TCP+TA&U{5HBf0~loVh|u8EHQT#bw?#V7eZTm8)Gv| zBSJ?vTO&dvS2JTEAlLP(bTel>j^v;p1N1Ji$pL#t-b`hl)1w!cxJ249=e25cMSZ0) zNwC{s9-zHTpC6~KpWBk)`9JhkD~c5-3ixh=V~ATm-;pnTubVOK zi0e3woiOhluRv1Vr0nqDUg5*NE__t`e33ub_;q{t_1-AVXFWZ<*~NDf2;78xvdz}c zAUZuhAE>OX2!34jb0pRHynQtCGraeFoJENz%I}F&iOUeZy>$5)$38L?z3EW=Fs}r? z$V+YC#Vfz!MEZU ze2fs-WOmO`et$+R2!CzacYkkrymvioY)vMGF4u&+_kCj!{b_}Ab0?_qWcx<=NF?a_+P4TnCe~=9KeX+K<5>0B(qkFIqhr@G*ktN@aW}Uc%t|b&tg$taA<0@C z+lfAw{40O=q21qcv^cqv)S`;B=BbcVjVy}_Nk_IcEn}(XYXl2xUcDf4Txxe zJ7_FW6v7j}ED*;tqAo}fj|Vz^QoE~eRFIMkpB&pknynqfW3lT^7WQUcT|del*OC~S zY-w?HN;1LlNV_yAnTL&4hPo|LNd|OvoU)-f-J-0inL0Luu4z-cqN-_IJcI9PQ>Lct zX zrRDxu`bWzx!Y7HVWbw<#a5}Di=i~~p-Wja#!{~A$D7;L;aYybz-NEFK@gfAly2G^d zv9$}!Y}r>e2ywsB@^#?K_&%!7J@Cr_#rO1+k2~lK2mjp%F5Y(sWsr(m%kt~?mSI`4 zeo^=EHCxuUG2X&?z48LvwQhwhGjB^ea4s#J;|Bj(vyh@6C|??GN7VZDZnV?K#Y&q; ztP{CUV6a;b3M?F9Rd!wWE{F=_#h6!_F{G+TXM?A=#CPO%l z>9GzQj&y^zdP`YaGX>@uR(vO9TxhxRlV3jW>?v3(U&D*5Zax3dy+I`5RU~ggWGM%s zrcs5m$FEh`XEW{BV_e%wXa#0Zg?cgZpJayS;UaK%LX?QLzcu6hOY(YzrAL|ko?8Ba z;_oIL;S1Gw_AUg&Ib*Evd?r>K9!w?%#n^Ui`WHrB2)O>?^$uWI*ZkEYriKKA)gU0$ zZ7tG@6%nurrIU^hJIi!Q27NVRp&nst^X5UxfLKlYq+@(O99gV3Kg2Kcb3e7c__k^M z=Kbxcn}A&n2A2_bY^}m2MB4QSjR`AT8r26sj7~#+AehRcN-3hGbOq^;N7qU5(}m|& zWZ66DalsLQb=_7{NgLm%MsM(wI3Vo^80r~k%f4`sxQPX2kE_gbUj&GRZl;}OB`^$5 zZRI_vQYwnM9I}7uM6*?bPQ+|I@aG~dV{9<9Pt4u;WShejc*oC)9TkTsdo4?erLPeT z#A!GJEpIrZDY{l#yI@#p_>jjmW8gMr7AY#Rudv7nyt>BPNfSJHVgs`%pROSE8X13~ z&JjOrB9zp7N$9F_9BNT*YuFI*hY7WLmvpdH>3x4%BhtL3Ly6m?q$#r55E^+<%j+5S zOn}h`AV%6$1m8Zl(jfU(V3tw5IJ#2R0oEX#sR7~k2R$m$*-GLn;bhVT!y4syTbD&~ z)N7et*lwFwI_uQtd^U6#L^VtxM`4UNO45NBX#;tZd(&{XZ@N2()z9$!Jm=@IWgb!6Ii;~GAS5IY$>G0|DK)uMMT%*Ny?3zi?vAUA|3nOa@>3RoHk*(FqN8G+b zZ<~0@bV6W363W!^k=n7xv|W0`k)>7AUd;d{{9)F(V6+)9e#}&Okf=>wEW8apFBQ(9 z8M!>evoCiR-cGu{X;bsj(YdEEH9_`R9vxK4ORF&J-(7W>ZY`KCwbH3h! z>b6!w_drKmg?+z4DgBE;#?=in{ z)O<`#Yznkr^|Vc1`E-X1bWV0%oGwuZK^@FUL6HPW!4I>v_x$3wAS5=A!72HR@fb@F z-V*0TIRs`1CZV{d4oIElj7CTv4t5K+SE7Fd1$5@k?YK24+I-s?sNpSY10N%3D* z`2xoB(P8#C#9g;exzJtdW<~9-%uA<+iibWGuUG6u4jJ}0i9gOd3Vu>QORk zd+1=HhPGry;-BjNI@oUtn}N#HNptX3;p(oX8lVu0$vEsFj**nl6A?puVP-Pi6qY-F zzTg4R94bLmMSM9HsE7k;-vJ|qm!*WKgz$l-Wk35w4a49JFU|$B2vM7Xsf-dL;_{L~ zD}#B``CLylC$trwYvNch&~199%Tbr14aN5V8)hlKSBo=*v*s0wffTUre+Wj$yKLPek;VqJfyCXma#<|LQ^+7urxivK0uT*MkuRMpejKj4JZlQ zI6!FQowrg^-no;u@Ig-jS2$Y`eeXlp?E+`FC}JGlArZ(7Zkki z)A#~8Td+WBVznn+YnHJD(CC;HkOAAku#qq=L6|QTREsI*Lo9*j1$^W90wzS~Od>BT zv>q+uOm2%OkH7aZ_=GOAX0-1#c(lY}N+Uo*@)1YP-X615WfUp4=bI|VcObw;k!O+D zC^$*VJ}D#DA?dkgR%a4n2-Ow@b7hy1eDPt>0R>XQH4SS>8q_@;+g0AYNmo90MFmc?eX~&}DBM`g-iEF2frpe!w5SQTAN1UTRB@tMdi}Z|vX7 zNDijPqy|vOkPy}pKYRAe%|eias<6dg1hHhkXo(8gkcuMh3k^sL1)EHm>w$dgp=4&>y+vUD@KTj>FYKZ+?I=);NW}zL zBX~rx^xTMzN!w|I?1Z*v;x~ej#&H(G*G1yFjDh3nXv`@A;=vx}s9^()Zhp(H3&lYT zpo8dEbqK*Td@rHUQSTn(EWEg4(W;a4qm|5(PB24A4^p(PWtxo&=B}%hph8eg-lH~` z=kCqWd%T@Q^r`wg55o{y*#6?66{R4&a-f;bf)i1~U#z>or_;s}V(BP1 ziL=X1n01tcT1=rWl}ky@g)AVjls9sjq0-ObZ>VoUgRI|Uv-5bS9-%i80g6k|a>l@T zMQ4g3%!-Z5LMRJHbi0S_-zB*Xeq5E9Sm7UWfM=}o(V=y)0Jzu(^xGNymDoI51^@KNnsj1AvH` z;Ug9)pS`R6HWkg{l1Hgq4m>pT_HG=Bgrj!wINp@qS4r;cZlCgX9Vkpu6-yZdC|ivj zw+UTr33)gJVOkQKr8qIp8`%4zumxl|L~YrcFWrx4LFHFxZwlc37DO#zh&q)M(i}9Y zM+1kFX+KM02?H#Ueb~<^7ak5zXcs5=H3Ybv-ae984d=j0V8l<$pQsHw5Kt$4ru>|`-5>9yA$kYwsg1{1Ca-N+wO0VH| zPVnUkb)!NT0h8C&@lb_;`sI=nnCD|0pb9D=YTs+0`)H`S)?@mI)K}%QU2r?u}stE zr2-a5(ZvGgNZdP9=MX8GDtc@rE)su{076!$JzWUMOR^s9VFC4{RPucsUGoPaYvC_Fo5OUoz>QwH5t)iJ{b&kjs<_O-A3cL#oshG97NMvQ0%ap~*%sQV4 zQ;Y)HIwgI%tIXlgU{L|7GL?@pn*|;__QWTDy)zB@m>+uiv2>$UxK@MdQ1l5_eYO9{0xHak;sp<32AW86nWA>xOz!aD{X8W)Xc14 zYj>lgylU?}h`4MG&uX-$7awJJ65fXr39O=0z1~lI+O)gUdJ47*fL~wx?Dxy*fS20U zl-?ZZ+o`wQYcTXRH$ZunCRaQbzm~shj%@C)${p-4uGw7=Okfc4&0S$W4R4pcOg*MktaPC+!F>GT;4k+L~KPPoXBan*R4BLpLTCCM-?1HM&tLMxoQQ+lY zdcp0Y=s_Kdt*x(X^snYUNuz6kwioMyoMk6hTH-=-h0 zdpVa%_e}?K>ge`JF}}n^4u;sr@SyiN<`Ngl|33z|$ zGZDq)-2h9>0nZbUQXf0;olPW?_%{|KVO~dq6vbaxN=-Ze*ps|$WXXQkF~YbK%Dl3? z0~=(nXTwH6+Gl(6t8Vh>!{QW!q)FsPv#X)GMTzoov&2{RIepVJC=_8>H4nA$IgHG9 z6N3ev>#_sfT^d>F!e#Zg#FlHs&x7U~?ev%< z`a=emo0oM4JD&3imbHA#-`Xd*dOB{R{yy?+Xy^B`qC-8DmvjEDRL3KydLZ$g&kug(Hjp2JJG<3-;5FRab@Xav?;XF~(g${udwqg(xD08r=9Zoe$JkO? zn_mAR_O<<%H9>x18BMb6RL&v}yBFnbZBr_8{J^~=MD(33OWJmOD@K{=@<4M_( zXhI7ggn81y8U(L)DFNiMnLvjRou-QE=QqN6JLUUCF6VT;vcC&LV)zQnc$>M6_PN+` zHHvyT^FxjE(lzI<9jQYli?`2{R!8)$y|3mD0T_8hcg}KMDoF1lCIPmX*QR6($k_Su zI9Q20z2=CwA&)oeSnlVg+`0qheHNlWIF-65{+i$`=RTcV1 z4hr0?#C=uk$u@KU!ch0FvZx-z5nTSBgc>YSNlVi0G#r7fSL z90uV}#$Q2DN-jU?7;AY&#KT9z-hy$9*}g{_qgbLzhhPgHie(*gJ0gi(OxR^|qhx_6 z?k6k3$fe+wKJ2~}c41)#?a#U(Qx)@Bjb@I^M>7lQPmyLy7<16O_QoG1dg9$QPD7@C z*NaSeeYyPL#+Qv|nb@6*0>_UzAzPXuo2)Oed<8_qg#?9Em`f&qqI2C~3>=7i1C1B6 z_0lqcF{n7b7q{YZl~@m@Y`aQF1%9L06;djEFr)GE9Xx{Xb@q*4jIYLy+-MbxCk19C zM=I+1ppVG~m8}t`{&_9{w_=mT(DW)Xm}?;(z%7Jk&*XfH$9&!13@0pQAr;f(eGss+ zVE$@VIJTuGkq}2lD)+(Qaym+3!*?B&RKmg(w64G9%Bj%X$Gq;EA-@NN-$qa48p=xmV3zai5MY<#))`F7yeTMiQ&DoaE4bK^Hz#tC7Pu;}{VQ zT<$z$Ft3qWq|s08pEb-Q^C6pzzfL~t1IpXVMc1PYyY#CZF08Rkv<@Zg9YYlli41LU zQP5>p1VpDIAjFyNH4NaVAe()Jp?jFsi+>fi^B9gqlB^IjXb*1%IUfmwH312;Qw1anH0l;&{d4##T!UPNc#!uLX2$TI?{BDW~ zq1=ddS(42|Pv|tr1an_JDFu$MF)fZ%CSA;7V$*kquQ~_ssbIQYRxAf}9=ROi?*@l% zLzq)(mxABBCuj-JxHido-=CZ^p5%XNqro3SC;6@0BHGF*0*&j;drG$vr2>=VLE~$p zMCkr1m{*4IhNX+A=X7xSg#~w&Fb{NVgbhwX4+}eOK~St#9m}}ntlUm(oeBp$8nd(& zT|q4xq9OPhf(5yiM&b{NIGg7ImKhB@C|fB=4letrVyHq+;%b>(Gk2)`YjmhJe?>V}u3x3&eJAKJ2RA);`7Pd0c$yg2M z+x;=u8c0t7ZV}S;>JGBVLIM5yJl9y6!SU>Z4$3-cD~HM=+9V;Y`haiU&GEc9><^@4 z16W9o=}7SjXVV^jGc0~oSdT%cuW+#%QBP3*n){@_bfNri9LmTomc|Ocq0MZub5x_) zp_J!e`FeVDRlg_yYTU1eN5RzNwnAcYaXxKA@VY$D(7Wp~f-mx`z`-gU$s|wB`qbsJ z*1W(0Z0?;o3}QcEM$w9z0if*&S?^l{6E5yk_25m)==KErhu=B|uqo`x51l3++n%Oz zc@LPs=>PK8WE-95Y;Dar$Pn&}yCp>Ug+Y{qO?D-`GTHnnJ2(BzC zzc9`C*a~{LCr)qRm_~QA-4Jm=BT{dtfRThnoULrm+RD)d-YSp`2mze;Z8Yg&-I}6^ zpfyM+9UFELH?p}87VW}_m^@bNpf9+|n*BLJ*|Q0bbZA*$RHLU@!P!Xc@G-00D$3}j zfI$^8zfrxoK*6FlO}7}De)NAi>pWx+#WhQ?eP4}YY?iB6iJI#T#LyS9LV5Mya!QW( zJWNRA2t$Ng6@O&&o&1>H-}!h~W{W3gm)Fcv(&8BReI=<-St-atSC~IcN}N#x1=5BQ zYp!ePU$trg=>bb!9|Gp0u)lKj(V73D3xQ@LA^<57k^dV|_y;3odd2Zc4hZ56{Z%gV zR>8Xj3=)Yr)f1`?DpmjjVe-^Wm--Ip8BFJ63tKs1s=*-zFe(t}r`x$(Vf=R?Ln|T@ z@*@&odkSZXmje#GJ3C%lJs_c;m=`Lmp#>MLSdu~`(k{!fT!VZW-H}ClCTR`iO^u_-jIHq6+AXX`h^?Ez{R+XBr@rhwqt66ma=s!AsGpK*GY zG(!6Sk7=T@;Qwt`I3E6g+9C=x^|3|)`A-g&5xg5P4ewa7^Emhz!ZIVU=Vg$#CPCC*VRA5Ov0Po`iK^vz){;E>c7ry z{*Dki7@^JHoh+E{%@kpcD{H9xd)}EK;a0N#-+%p7Q^5xX!N&XI>|O_;$paMMHV_NuPY>L7+Zn@qvPZ-l4qg-sn^suf zhv!}~z7yCwBK~#uevG5gh1UhC^-YP{!us=8PQCp^-;SPo=Pe@K;D&ST*AOO`s8Chz zu+VgH5bfsre1t6}>R*jXtfqO}lGm4YV&%>`Nbo(Y8M2X0EE5~?Y4^CYU~RQ&jq&Ap z8pk|L8$ERaC^APaZ8F5&BjQ|-~1VrGRzOzTdr=X-cfO_*wB%%D@~mo zDpe%3&eRcd1!J=EhHJwSl84ip3^Ow$NPbjG3h&Demh_Ii5!qoujbxKj<7a{;ERZ4H zo@tBM4q<03I6mc6+fN`jKdakO9&9>WkzlTgbt9Yg;?3d&aw<83%q=-bax0SLpEvr% zRy3~OSMK38iKvAyjIy8wc52mpPr|=FJ3{ugk_P<3m&siJMWJ2L-8n~Ko=B6G=F0JA zaD7pcm0plH>R;XKDR1>2x3Hg-)~mW}jhO>7A^xg`8#sP(_x|FqVBN?h^ni zMH`ijdP_qQE}Z^8jgN_Jjl-{8$7J3`J6uQUS5b_q=>GUmEEZ*)gUTU^60xeKycLjN zglhm{2^Kzn|G T59$p1=Aa&r>|j~7BJ!wQJ;^7|Drjz0KsJQ^)50j(rA5$Bvejo z=KK(L(@o7Ei_4DK4jIDzt<-Ln7VT2*q)YW;bxr65v|FSDyCKJhgfH4 zUY0z#ErJ~7+M#^ys#cHbBq59ljnbgrOl6S^nH54lQ;HQnn*M^qep z)_Ri1$8uVE+8)lNA_cQSfZI`%?$wM(-0#Yn0`akolWk z3V-UYcK={1RP$zmQR;M?UKXivDp0_Q6nFOySV_sVinKbl5+HAY__VaqAymPm(Td&PuL?gv`OhwynJ-g04E$YTI=Y8!H`88P>!^bw)G) z85;2=qJ_)(+o^5+bmh*kLPFXwLY1} zM2%R1HxA_3KiV!}j4t+@V_QacPz3K)kB)}jOFZaGB_^OFu6uh3k8{193s+}_b~kJz zIIoQQcs36&^ZNVMg=6=^85%_Mi)rHb;ht8~N^}>FKtfu=2%n$cBY`fM!}D2-Hc1%V z8HDPFq`)Fm_9EH8ZQ{3ay3pQB&i(azO=&Htj!0+@f0AOJrfuS_*S!p>wOK34!_vB_ zyFCF1JiO%+#jE(vIM5Yx^QQ#?C_#5xhBdtIgolYE)d#}fHslSlyCC8ADkaw|RhW#x z5#cvngimZo@N+>4$7=NDaaT%mT@kDA1qI*e9})M15>6_r&FPXci#7XMgz=|I_Xj+`FKnih0m)SJ*SSpou~+G*S>&8UJ;MlLfc(&~*c zbigA?DkoVsWdH&=u9^c*m_z*NT#WHGSM%EJE8f)LD^nok86fj0bpa(UWuX?c?{4Ca z5nq>~f&qS(;!_)Y4&@Phkxj)4IzJVjYkva&ECYL};SQszhk=wJ; z+&0r)fGG%%Cl?GkfibD|me3JqwX&_S^O2Uyt;&p+&fxyf#I&8qbm+V*tY#GnwH|W& z?Gq_QNn8aMHY&l)Y3c4lSa|+%rj;aFs*pH=?IoGnaYJEtJ6jc{^g^Jyn1Fv6>Ikyl zY~GNxkQxll?-C{5-;B{Y6N8j|?luIA=8)_%^k-uglIEE#`+T8y(5Ot<9(w^n1Iy2C z3zplTC^1H5by;z1=I}4~lY_Q8nyHKYe9Yh(QnH)twFK{+7+qK~ME#-wdwe(fTYT1R zsyoHNvo1wT<9ZJAI_e{pnUH*w!NIV|2*&vdNXw80DV_F2l?I4|)3U)BXo^v-KI1VW zt1aneqazCCQb~icNBchaw_2Yn=TIv9{&f69V@;(Mmuc%2Ns(_6?WD6m+{Z^&(JF#jU-%ts&eng@ zM?qKYAj{`Bn{*YZwgMdnbHvK=G)Vbc9e?tX#LZ#d2SH(t3kPdv?qX-u%g+}`8hVc` zfcMN}!h#ohEnuGk)%Dv#fm~KwT;)jfxU<_oyn^7Q4!7X$^5U<_ zyzSVz^iJqV8%2KJN>DngO5$&?vX2 zJS;%ZI9Ow|t2q01(0+xt-~MU#?0`Kf&1f@tm3#c44EvH7JR2EYgWlX+7>o1TY1paW zJ!;fBLHA%m@iFuRXpx&VXTXM+`Ndr)9uXU^uFP zB?Av9==uPkPawH`H|BAcvw?t%G@fV04N@RiUUhX~xxwvbX!L6c?SICSE5gF&n-jg| z8j;`}-O3a-*ZKIR;pIvitiyiKvOr}^Z3;8FTFFg&j92N#e#?%6Y^{Hu=xLw56{=}N zSee3+ylGiKnadH3%I^#TeLSMxiY|+a8VcVKm(iW3oq;3Jgk6DJt2xs)6`#v#JQFqI z8?<@pNNa9`7SU9usFIx_uhtEp368efTcgoogoJuBO{iu_!Sx!iLjE5 zv%TNj%#lrL{kd58OwLLixf%#I3GT3J zy3FGKZaEz6XJkWu#!mNd%d_?K*gfeHvNm-5T$^afe-Xj8)P44(o4_ECU&LV@$zTrNj7{3*J~!*rL3&ME8Y{pI z#AQf{H=}xqq8XIT^m02O;L?={R2LIQWZtXG1`A;&(%NU{;u;EuL_Jn&J2E-UbY(@H zX2IgLg!aV1Tbp0nG&X;-(HCcC73gSIVNABI9cpBm!UcpzrjM)0(6g+dv(`|Mn8YG& zz-k>=&}yWFu&|b|eVj0qzz7|jFuPbX;!TqqG=M+urS|tTo-XzdWrlhnVZR{aGdT~K zZ3&&PYycp51IJz|W3V&Y;Y&*$cWp9rrkg2C<@U@@6Qjz|DV6 zp$c3e%zIM~h6RWiA(V29o2?-@qpA6y=t8_;PaX2ybJjY0J>WY1+vDR#1uwZ^-#%8j zIKwP;;JuGYJgHZw>vcm{S84TLUMaOpY&nZM&e9*AL|@i5zgJckP-e8q-ziAVWJvIZC&+sC|l zFMn<}7bq#da-|9U2601MlAH-f@vPm!y;Yr9C<;{3=nH{ccHM97L4Z?x6kbQ7}7qyzR;A zfq$}g{c2O7g7CC?r(uxA8U4ipe!C<=_o-jBp`P(dHRNiyP??g(dixK#Tu8K3vHXcG zRM@b4&&sDDUUuBpQ`z>|;8-(_RWRRYR?4VeaI4fz2d1P9=Xitt9xBu&=^GcvSr?c8 zcXEzPJrae^>c1bV!y<;G)S`QJtLRG}I4)GR9iDy z(V%EC#URS%q|rdVXneyYCpw8T{ia0k@nH-Ws~7EF0>(oPlgF6!)@bmQ2HI*Lk3JlE zRzO!pN?fWQ_$OsfM`~SwY#RJ z@`M(z+dgfhkmyi4W9Ch^4Ff8)vV)tx-uaMR&s;_-HyK>xHW+pkSj8{AX=##`G9>BCy%x0xvt1y<#C#7|+m%*}YLY|02vPxNjtLJ{iuZinf;o{(4SL3u ztW<>fRc22no9dbI6Uu5^bP*5kxqp6`?mI3E6bII9CKDyVB6GAd)poIs;O?`&>V)g~ zgt7z!)IhecbYj8HY?_(*GB+}FB9w7UY(&c7)kl`mc|fN%xyPpweuw`Xt;a#Y%#Q;V z8!J>vc`|R4VO38J)#*nd73m%cQTqXW;^mL2WKuxBm5kI91K}`d3Z@9Y;Y>9eyRp}# zABzXoc=ztri~v6g@SA_j&dxJgjY-q>naY1R z+@Xrx+Eti56H>fr51*TBgly_>}vZ1RISINg6lX_aX_K!WNlx=?wSUtQmbTNT6Al;wU)@Nea{5 zo~+h4jN%!tl#~=n$)H=d)%o0oS8uYET65Quk%Y}`-mtK|+JUPLjfMs|C-J}>q{qPa zUoSmcHNlf84*B}|dQM(qjD^c1Fe8&%BC?{Wp3X~BlP6hx?;FQA+x1FLpQS}-{poSS z6&#sbl9b2FWxnU-?1pF)g0*o%WjH1#5-ena3}mLXO6}H2lmL7-^M3NLEDrLlwq%ZN zn9uqwvpV%!JRzhv>Aa{klF*gp#;c=BIrDWz68R zGOg0guCWRAUQgNbQEEp*vQw-#mlu@kCP4tk^MVYTe=X^m-l_z7Ov z9%N<7(3t+*g?wvTEAykshqUBdrn=oxGA_F|BqT=5I**GW?>+e0a#kY7SE!Hhed(RS~mrL+L=fN|jiUq6)9r-L@5`#ih zI@|IZbNxhreA!}PdUpzN!#i;PD(nK-Jv144$G$~iJg7sE*G|~qi;e9G4O#!4EIAKY z5P)Zsx>u%*`knS(Jz7QN2E?zfvluLB#Qx}<@raf&0Sw%XVmCO16IyCI*@0drk ztk?)C&!1T~H=>%3NO-YYE$Jxr+k612@EH`#51|aa!= z8?p@ysl`wzVJmSsbKEuTwN<7+x;!b-50PHbQ5o`|xhU-PQu#w-AC*UzNE#X@WhvVv zY3WEZscacBI&x$)*yE>V20n8#7rVCI;D2iUTB!=gbXx0-5-w(FOAv6`A#<1WgPgg3 zQ?K_uB4RtAho&fMLML|hW*X7hu1_lx(M;5Wrt>S@>-UpfzFmF?>jXTM7ru@>RleEr z-CX1xriIz1T6d-_77CYg{W-^ZW(QihQb1WcFku$(2y&!>>$U?X-!aC98xr`5w25K7 z?zF=5*f!fUu(puTYS{8km(FDK?V!Nf^ zIv;U69M%K8;@6m5_Fm(T1g7elcsdW9G#>(6Pe+X6X&26s4<<>zc*t6GkQm1*+lR)qiaXom(Bx=TAma}M>e1i}I1g2OmADM_rliH**k;IC26O)^7+x6BK!`XO!9!-fsCllV)0e65JT?lu;ZkOLI6QG?Z{L z(O}v}gJxMLwy)jD!PRijnD#Uj3w!zbpj?#kt19^5`TY?Jtpv0Lbasf@W6n_=*M|vA zQSlZRZR8QtMEBk-yECgP)Rc8fNyi}@95?srxi`~d*bk#?yKlRawjSrl`S{N*a_zJ~ z@1!rk=b#&Y*XHmen=`~j3WL7>>lyrp{m#Lgo7B~3s}2v>n3QF+?=)+YYk_^cXW7@S zvc19xDNRI{8`&!CB>cxO455b26*b>Akkijw_8jDi$}E!~D`*dPGmRr8yn)3z@x`Mx z%c=SnZ=S2cI*y1-7X1rUG;wuxByT!To$I!VwCBsGc?K*2HuZXC^&Yl}%F4_JxHWsF zT5qDTGmJ*PJJ}eH=I-pZhfyk9U!veLJ7g@8s7R;>iwy(cnekAwP-JjO=Z!jtMKLyD z5o?k_bLz^G(o$}_y~2^D1`TUthN*%^h}+BX-&LR<@VQST6=q?AAe~!zj<^Ijul{@j z)(3)OPc_z=XkJ`d=pEs6fxP_&#kb2N4bBW6-qpc6cCw+Z*|FDqa0qt-GtPK;{sn!A&}c6pP27;9kbE-ikz==n%`evRkFC;$!#-F z#y&xqU66tK%~$&ZTH(DK<1ZgoqKE|I{eRgm8NhdXlLg#HG+bjznlrFDEvXw4zf?@o zo@?X`C&UzXYGX69zAj)h*?#VyoH?fslQ~0~Qzaz<4J~;7Pjp?07ub9>ezqq3#x$?k zPQIuXYYHc8#R-*BW_Sn$B8!hb1ryUl`-}TlG6qui^u}7Wdn72S6^FV@)Q6;G>>UPH zayx?J+MLBqGqsXAQDRI;_{RYx9BJ@8S(ySd%22-qQe3^Dk5O<>qg+ANEZ)SxYBM)4 zEgLm!kCG2aV+u`9^ulsRyNW5v>7XdcS#Uc*D1{=^zKD_cx&X@Z)|$)}3Cc4Mpmuqi z9j3tKO=+GD;JEx?xbUyLx;DizSJu#M+aW`%~) z#^Q(S7@b(M&VKM!IzD6JX>2AZMQ`wMAM(o-CMZlKC<}v3h10TT)PLik8Se9`ARFZR zv}%k^_Jx&Tl-6Q@O*G!RVsz<~cJv14tB!iuV3(D(rS1=;HlCvQH^A0XX*%*7Z)caN=+t8;p)16Q&hUq{uT7a9TbT~W~vL;T+t z71T}Vz=KfCK}(iog~GbzjwZ8fKHGJ?W97o&`wPh9cPEGUXOSJ3clzq$<5EM3Oz91V zW%cxzW!0L>UFIi)moBhbd9rU`*8*EcsAif2ehF{_00n3G@;kVH_o=R6JHL-G(SGbr z<1Huy3UUnlp+FP6NA6d2_GZCD7|PB(Hh6fEm89n8^r_7kU7a{k_9348Wy4300A_4) zUDt;s1&C;PBu$$$W(DyGpn^WK>*wIsZw2X$$OfsD zLskW@;FW0jZ^p?EeQ$Zzn6BHFtb~2-f=|Qfh+uCkz)LvSeWg6~gg4h+j8ck&BN&t( zbEz@7p^p@HV6A&l4%F$;ZvZ6c-rRpHVTbX^TlT(An+`$RxwMfPewD={^5XjL3?WTr~^Ez!8*c z2#GhndX7pGt_q}zqs?EGF7k(4>g3I*n4452j6_73$-fgyTOh~iUaBmTwR67%9L zy4ImX|E0vmQH*SLX*d$DOr`2g$qd$n6T?u$BA8K@VDZ>-lRvfXCm5==dGO%j|A=fl z8b@{74#<|2zz-ZuuO>t~6-Gjv#OtxzA!leLCk^(KA&?JeK(UA;S2_c{!!Up+|8Fh; zX9z8LZeSGyUyS=a={_;e^M;yru_!F~KeX>ORq`{{Hd3(*z+ zE?+J2Z#t%k$w|{ob(T0Q!l|ey^I9Qly(T~YA{g{L4F~IFoin(8G}w0PTNnTI&aGB? zP~8JWhJs=m%vWpmp5{GK^AGNBZ(|7?3(CvOG3ZLLxl%ZagARB*Q$8_v&Q%Loux2&b zZwC*gPTElEx$)tJNDk7lZ2EU6iP*Tp4&hj)cOK|Jq6qb@L5g+gu83$TUJ8tOd+1L% zvU?VV+z^TB`NJQcc#cY{j19W8YhCL{w^%F5%A(c`nr*=GR&q4qcGozz-6S zXhWCcyASg)K83wtGu<^4e5Rl?t+QrY^%SGJU|8{!3ah#z*n*;W^!Ah%To!qF*#;9H zTWoClcoU_Tio@(bx|mn1+$W)oau$O?hP9rOQcies3d}=w47~Pf3agbgdaa z?Nr6Xp%BdI7Uc_>31OBkn2nqz#@oxU>x!q!nmnq1Y6g;LG!|i7%8h}d5j)n2f@_V+ zYq;#~tex(TiJcCLO){#Fv1#@3B;MNoN-T+MZs~%N69MgT{7{~Jt4E3|F&V&%4$o19 zsM$~2`1JWbCgy8~9s`bl0MNj84W1JiB&ft4>-0~c`j^^A%GcOn32|~DZ;&Ux8`*FC z*}GnsL7CIRu+Em8`uwpoznkv@L-gMfQR6X$!BUF0w0p&2Ni(PRFFB~u^=h0 zIW_%U4qzKf{MLp-PvW$QQB<^hcVT5!9YXuM%xye>QBF@hm(JW4hj=-UR8khV+Y{gZ zzC?ds)M@)59ViVv%{9bQ{V+dcr2db>(n#R;SoQxUxctMA|Cc)RpUeLv=6{VX{P*c{ zRl*5TQ%T2lyNv&TBphwy`G)_)ifJWPF&K$XlGuUyU&Xq>8Y33me7SAg=r zX8(s|@}Kzs@OS=SlFk3Wy1S4ga-x48&fz>gJ<0vlDD`3gpjq8cV3n&-hcyiT*{9<^ zyo>*jB{XRC54^{LdIBJ}mg0QVXxcGBo}Vj>)ZY1f8z0E*)7quDMnv0puBY4nj|cfn zVZkuA4h{n|GcnVD+IO$7>4D7y&d<%|@dV_hq@dZ@*rsrFqcFWWI5<4Lyw3KI$n2~~ zS_x`Oa~m5UGwp8nx03WYBK37eS-F2INKG;Ols-{Axl2qirMEn(ftc)rJF#+P|TpD*|bExrvU5fTfVn%&o4L_n#Mca&qFtLqHSj z+uF(+M@=dTq0bdAS=ie@r?%@BwR3TB;IY`0*yhIA2!ojyP}nQH3Iw|(&T7ocJskmc zyt@wmF0bHf^>Jx%op>ue$Vth)8Vlx)l7=D@ors5170J&7;dVLeA4{Mhqr6(e;&F@r z*TcE_dY$bPW$G?>_wk&6g;iBmO`<-0Eeh6pXp}(~rx7lvi7ibRYxe0*5~6){l(O0( z8iW2POf?J55KO%IuCK3|7xR8CEiV2Wt8GRVc=V?yl#?Ci>wn#Ec)CaiFy``~{-LHi z`K|lK`G7O4$thicngI zPgp@QH#axS9FuBpX|eAMv^}(6;*t9i(Lbk z@GZ+=KRY}7MK>4Sz7(B!gIjazehf|{JLae#ADqYuIP;@1v*@FmBC|#%`{XeH&&=Qt zW52#68fc#mQ~qREA1tJj#vpw2SXYr}QHRCoXdd->C8eq>gYW(PXv{Om*0A`vA!7|v zD~bQv1WR@3vf~XoOFNS^Hl1*C68-%7^QzUW&suzcp4UOiEht#c&!2KF7O|wYbw18< z*6N8Aqh_*+;D{AFyIL#7BmKLE(QA2%R!g(u2bJ2odSx}W1{IEqfN#wX{0%L3(g_Wd zx3l&x-I18Be0Vl`PV83pvRlO^M^2i3A|qBTD(_Y3M`&iWE?s);;jwy;!$z~To?T)y z?RPidTDb7h-LuO_^*@ifkzQy=l7^hKvsk6b#76lDFIQKJe2~bxT<@djA9;9~rf;Cx zy7lv~rUXHYc8bg5pibI!>n&O_M}h3@?9{Zh=YD=g4LUAgJ@{K6X~#xHMLlWIzU9%9 zVH>La;pK7TUAJ%Fo|&0ZR8x~yRo(TFnxQv5!0by=(ZkG4k!{$dISj4`Bp-}U)+n4;RV~C@yz(8Job0Z2S>k#A{5i!D zp&6x}^{TYARL9gj*OjU~P}py7&LQa5a9a3~C!Jt?|L#MF4`1O6Q2L-!9wZtN8I!)A zgM&j$ORKoD(qL+!j!wwt{e^kUhD)|pDdsxPGaYN=GjvFOZVK=H|5GO|f|L=PN)h`AkIr0Ucs>5#tY0T}S^an>gTe2@T z-&6VM(LbmvO-aTyE7xq?f8@vmEWDAiae!}sTaLKPTut!Lx=5Ov8G-m~K9fdQ9A#>; znf;7XPp%IbUW&U+#TVd_nkt~Hr$<(|{qx<-vBJGOcJ1mM8v44|JhLh)Dr=_Gebw5v zJlNgeznW?~9Y#AIGOS2U@9U6>WZ*XVQ!uY2G*NzjPhvfA;6QC{?P!;$xU!a3^V_Ml z8+YekP`h**2M1+P%lhl_b3r2hxw$9sg#AqkObG^+QlVAtot+Y=POU<;^>vqcAsV;R z(|=t_E#itZ$>Osn6Pnx)+0(6J$yLvE1|NpqvJNp9?k@tsKey- zfwTSiR33whg}P+TydOUT{CNzv?bvY&)&6D%y{+x^wX)X&mMapPo-~94CN8LUJp(r%ld&y8tbEIXz`$9iSZU_{Bzf`L*v zI>-W{M&Vt&81|IwIs|aEH*&aW#tb07xWVBR-dWyNdWwse^PV0~9b){O_ znB(G7ldSDLtB+Hv7+D9Jy-j?0n+q-Sg9vK8k#?7IDXGQJUOLHS{-ij7G zsK@IzZtTWi^fi9cqoihJ@Z9=sg2GfT&ES;Z7wm#a>Z;c?@0l6vIv2p_QCcb!WY@Va zCSzFWAS2^h1qJh6);=-?;!9)HHbV4>?>>4>XEDSfv)i3IBYm6*W(4eR{QZZ+XYhs!*GO+Q-8!8P;WN zDahYN$iQDiBp;HbPQn>UjZsiAt)OkhWGYwp6K~dXqn_s_n~gE|<_`Qp73}UGKe7Zl z3>;mWt#ldBqZa>`V4$$i;pc&+xrUr%L(S8tPgC$K);-LF59Po&PO1sN@$vCj!`B?_ z>_+j+j&EwipCuye#%s?jJb(SVJZEVtHk_+HC@9EaaiLJyx6OH;jdFJ_bvQN>+vDZs zWnF*ZEIq*(-#BeP#>cu-hO#AgIIa`jX}yk>(+fPD7eplDLwAm z*F9njqmnThF&*psIz=fOl%)DwP%~D z=uxrPmA{{;2pNiC`SfenMt=BU__8acv-aZhob2@M+Ub#1xx8~?`|M^6S4hm=XuQ~B z*X8kEg(Z7wZZLfAr-i_70gL^YGHw>+<*m%prp{#wc3iEN!_R)DsTOETv)uM>qW0YnYdJR)t!zuHUjIQ)2JxWJch@GEw~1-n_v~Dn zZ(HWm{H?WTq*q!>icge1nTx9bk%kc06plJ_XHBFU$8hFE#kDaZ=LG=<$I+7sIXt&q zDt1k{(@OPN2)yJm*c`xbE)}i1orb39%l!=;Mge{@H*QF-h#dOW^6Q32vTWWw(-7PD zr@_k?iVVM?PE3FZMA!c(L$Zj?T`lEW9P>wP7g``=GUAN5PTlmE3qPGxXfu; zc!S=|jar@3jS(JZsU2%5!>L`H$)43mso&LzF2qLu{COSq`BkZ7*Q$l^HKQLU@;P*J z6zK&g4s39Hn>e7=Gce%rc`apO-{8YPfS%nQNo(8ItyMM+(V3Z<{SvWtMghPK{WX2@ z;#1+brXPeb8X6j!{7Ck|mv=?``T0pJDQ!h@Z?>tC69|;&=H?dq#dV#o)MhBDp|ijL zaYO_YPK9YrHZKbsn|@RLgU996BBKPSjvaOH0E73X}i73k&;nYkFAr zci_&`pZjg%jp|tTIZY}70RQvPKPO@vtUFKTy}s@0>gq0U^j)&Q>Va_MT&`lwFb{?Q zwA^w?Lrq<5NMDiiLe1(FF1s1IRSzF1J@b?FX_2z|)gmVuYIT#h`SS?vmM?6}6Z^Hr zvO$;%ix3}^`7>Gv@xUKlw-k;r?XsGoBDxc8!i){T#!mwpud zxX#XCyfQk#z7u408b`<62=DM?|s7Wk76C?zL zeS=p?KI%4wchZ7adxnLDrMRptPxlky1i-~`CHPH!@>ol~@9MWVCsB52y-MzRdMda# zEG|q`+W!oB`0YBc@?49%F{pa($aV$sMP3lp6Va;YfmaeznDB z&lx4SO!wD3M7bK9s1!ec{(KFuU>4vi%8>;iC67rXr?$)D4N&O(M8ld_+ZxJ-idJUK zG-;incG}Xl&uHn^k+swM2=H02P0@`>C!r`hvg5>x`Cy4#m7nJh8)^FN+?w3X5IK~TP*j&oZ7RAJlu ze>QGB#L4-LT72Qzhw~9uAXZjI^tL3={~r3G{z-TBbh9-zsM&=`Rm+7LOA%2~`-QQh z+3_-twAtPO^~CF2L7z#57#J7`mmauw?b{Rva$DTfNlNRxssBSi_xkMzkiiPr?i&3?PRsXwjE_-I}IFZBUDmWW;{3K zoqYXu+>aUCWNkKJFaQrgOD3=ippnZ7O^q409LDugpN*1m;!8g16(Q_$)Ex&02ki}d zbmMd6@>K0#gScT(bIi$sW!c%FV0A-|*v(_Z`vPagM14xTRBv80>$%vkKbvW`xM0M0`aC{&WX0&fGVe%YZ3g6_$p9`^X!wXBE znkPRSJDunFu(Cc!3ZbHy_Fi#^t{nOKeo$xVN9Cx_U+p1?b{Vlfe54Ntq3fu z6zAWlbgRpQzcJZ#FVG1vmH+s-)y9H;sH3X^T*HH2v>7id(r$d< z0JQgL7w@|_`z|<%URk-u3Q0iRMnr`LYRS~(a7#deJI#3wjZy%$xk#>dwmQIq-@~n^ z^S-laJrmH`Y~Vg$T^AtK9D8+HTO?_c?V8-4!#xY@BN?Vxb|#KJq}Si=L)5r6DJ?hm zE>DOrOZu^20!PjSEj5+rg=9M|^Jj|g?IxsL*hhg0!{q{m7Pdf({3`~gN<``81WgS# z$UpzFtd zNOqRiUJ(%~G+0mkL8&g-jf-eSoWs7I!9T+Xk5U;KwAhG#+Od2H?-tGQN5M($9vBRX z$qp*rUesUv!E4pKKytuJyNW(U#zySBaQ?LdT`X2e0uzN0u7XCg-?rtRS*IvGD7^np z){h#Oo#ukUT2y^u4u2$7EnN@Mey9@4?vNVz0bGyS9^&}o&vlIL(;MXvdxn31+|#M0 zs(j}yvz>#3%jn}E7XzaAuKOqL!B+mZqoQ;}ZvtYN7|pW1a$BXcm#p&s zqmKze;TkZ0`1$gCzc|RTsn1a41_lR}sMu>mQ;*tAO@ztPaMTVDZ+pXMp`vEpIb&HW zBV$o7@Imr)%LmOz>?}U{v;0qP(TtdFXK~u@2+hB1(RVnsPdir?}P8y$l^-lJ& zUG$xHbqy(^P0zB449ym<{NcU%p3EN>RanoW(_wGrSJNDioA%s!MrBG-Q>Sf9P58a1 z;qJ5jiZZVc6a9_rshZ|rrS`&Osfl|l2QEYmI|im-eC)d>aZH5#-OrSAD`M^Gr?=8O-f24rCd}X6^Ejl00=P-(Gxr ztcby2ac-*l<_}Zlj6W;2)ZQ#KN0ZqXbnDfU%df^yf6&6*e0qAi_9P#o)>43u0(8FP zG}U#7ul+Vbwoa#&F2-M7*U`}-7yF^k=m9l@Jd_4mKla1Nk0)Jd>xbS2))NQvHenFU zUafxQ&##eB+9W*gHwZEfO-%G!0&PN5`LhF(ucp>eX6EN7QgRkOzoJTw#|tjy@6hUr968)3yjdfIgJmBtMDB)?7!wnNwQp|TBV@eKzI!XO^@E%oaVCYJ zcha8wpoiSSD0Teh&ns4}Txls3xN6m^QE;3q-2NJqforJuol{iYf=_rYV*dhCotvO_ z@3%;`*lT4dgKlna0#IEtih9EQwBLUG=mvE#80a)yA(%8HII0U77#-W=cA|kKYpa7o)EdWMQ zF8dp1Z-gc}KNeapdps_@w{APpFzY^EfaK8G)diXCkg#w-M6mNK5M$mwn;@V*p%>oe ziYFc&N@=V9aGnXmYYEULbuQq^lK8D@dcO;^;?4_5;9YC39)08{;j1gtD|5(z<<*Dh zn!HT!-<)w{ls0-w=O5n5l9I}OE}E{VIIF1gG3}OOq~vP*kr7*DD<4XhK6bX;V+f`JP)@s$#X)o8)%4CaNot&m}uw~ zPxL#jY{yxS62F-lJ3_m#KltL8@84fRWPn~kyK&PdpWHssKB2*|hzRS6Ub$BLKKj?M zUkBY<-n@D9`#K|KW#!#`CcFLp{bio1UGJ+1jM7Yz*LX?tSiVamt8lzhj4Z zL0@hUmSe{@%F4>NI!#ZmeRA?YUVuyOW0MD5L7SiZ_^du5CAFq5Qmv@C_>uVXf>%w1 z!pdj<{*Qfpc0PUjlv0|o_WrW1jZJ=O>41MVet(+%#F0_E(uTHvL;({%-q_d}LbH0h z&4>7MD2r#?bPgOmc<0`|RVJpUO*j|WpVLzRHYe@$?|OXsaN@Xey-M#=Mtb^+_Wu5L zZ<^&?($8O-aXNYOcE$Alz|rb#R>zt2(U4#9-90^2%hQ+bu4uUZpgG~}oV{&#)A#Qz zZ8Tz%V?V1Hvwj=v>xX4(*MIqPr__g)wTN!--pExZ3f0$nW%d>3=Zn}jT{SS^(arw{ zXv^dAW1>GC)6U$@$QYV)EO+alqqWT>bH|Y*M|h3v&-L%1saVXh?%O;%b3CfPz8>P^ zO3&aSPCh3Sdn_pG_pmJ4Te=7q+Y}Cqc*-p3G$7|ghdf`IhkxWVSmCy*G z4x06xxRhzP71&7X$?lV}+F8ZL#h2T2ZwuwDTel9Exzh3)R^JO0w#BCH*bxWb$35LK zJS<=4%Z3Qug=ky*M!(E=a_EO2qJl6;G}fR69cE^J^ybZe{Y%lRW%2rD-fun%;DM@X zLmCqdsHyjfD2g?FI8SKgRvH>JPlhj1>0PfMUj%77w4XP zdmoCHBjvPHyw``W$qw0?LXz5Z{rk4v&{XA6mZ+$xv@&jbEG#$z%tJ)Q_HaS0wjUAB0`DvbH829B9vnjvQHoj?cMs8}SDfsg=%4vj+7smt?K1xXI2jGTx1g<6N5Q zqRy($#%ui^#@v_cF7hQ&(X3+grwrm1NMfZ!KT=S(4zRMiBi(X?shhQ=UvRihy9ctt zT9KudcQm4X!5*In2P;$tiCS7%>_<%CoM9iOZEScUhCl?d9BvjYd`e#iow2MLLbLMH ztvPdp>q#2WZzT)dc3Rrlbc4SUsTn8&dR_i_PZ{)p5Un&TnWYT`20dEdcX!WmqvAui z{(_=>StgfZ^*;dQp97!&bFs#q|6HuG>Oa1N|7%}c*19oJd!;$ma=AFs_UE_TL87-< zf)^JTEp2U=E7d9n>LP2PQ5%LWTcW`X#DA8%bElxVC=#=SVuU<>Nx52X8T$sr>9va2 zM;q)8%NL*b?2-nU0XY2->a=$yE(t9$-gPVfal7WRS1W72@8OVdMHU3 zFJ4?Yj7R%rKi+%cs~@^nkl{qx zKax$6t^1Q&fjgFxdDGLV>z_7wM)%| z#DXAvj}zo+H+orDS2r#>`5G`Xs>(}%Z(T#fvzIUL$8SI~N-%C<$4;I&dGe&cy;?E$ z7gBh?h~8L>Z5#SE*KQ6smjH0yM}kG?KEJv7HKfc>HvP)z7lkckOWa@oWH0|_gcnNw z8F~5oriU8Q;lS(&s<*0<P8C8ecrkr_xo z261;;U;i{pMMy}fa-;zen>u+!7i!8esvMdRb*a@*P%TwGk*#}dx+o3|cQE|Qd#qa?8t@ULIQ9ASaNBPtq*N<>;GS1w;B;C^&`{0jia`}fQ%R;>6d)!auYoe!1T zgnV0sI$lP44DT;Q?m|_oDM@*}ok`ckq#XL?B>UaYaj9VIH)20h;^HpnKiUeMu@NQB zJZG_RVRpjZ1TmKeqez@ZhXjR1E#};rGyfnzC|7JixIsr>>mii~?#IQ&rBrX;5JQi~ zSE=A&N%}^M&ir+|*tO0`Nj+#aJsoVtR=$#ni3tfr8l~z-ig{68-A-Fu+b13#f&k)( zer2gkr5|hb13k-x_?*69Fl>0rRA~t7(&_I~>iSBrI|nX;8ls<9(ApY=pPxV@acA0^ z9ViJq(5%mEYYR?HOjNGan|r4dJawWBfmX&cA`%`*@X7QbNAJ`5I!Ga&;zw^GrbU}e(4Sy@ociSXLRYR_fncuKFS2{@Uea)kii(2$rl7Xg8%NFC-*(Q*#^#+--N*8m zTzBu>S)q|)_7$t$-;%+Psz~}va|5i9_g;$L;)C{shaNQ1D}HtW{jr4WRR^KFqN$k= z{{=)iJscn`9eGlie7=;IN1fS&91J^!9vZpGr(3pcafKZWl4l1#2q%OKi3~)-YxQu09ICxG#Amp6mc!wtZ2T`WeGuC9SIo^lk%SS4$21bp#3sKrPutb|8PbEC zipmZ)jl}&>_<@jlpok-FptIBtfkiR=%fR^v+4J?E`fFljGH&izlPBwY>@$!zybwPV zJq*~~I|p9E?m?atE3cK~90)A2osO;?{T;1tjRpvN8p$Rlh+V`A>x77^>fF?YKL<k1u$Xz@S%&EnxS<@qyUg;xqrX^n8LYp$Hv$_;QT>J zz)L(rJB6|ZhNB0Y_FivJ{Z#$@jDiA(+xN5pq(hzFz&qOZfGkkd;m95oZXmi;G5V)t1~h(%Js1tNi1l9 zQf1hVtZB!|h`N-q%fP?@(fG|MN$7kR4$+588OasD*>$qdUA=mUhC{oX6pg$*$^J~y zrV?I0zTSjNvGW5e$l~fqDQGoU3ua3o7WL+T4=sQMP|AbFgGs+5TH`nlfwzNQPwCDW ztuzU2$k}t}RD{NNvZ!2!d#TdfHjG|Yedt}3gLhC+%&JXcKGeB5CT=#mu;yT?-&Lza z3!=pyC`-AmZ)$8D9qo{;cr7StX2#BM*35j90fgcF0DM3V*MSf5e|mvP9Ve@#--U;B z-xyFq&bU#r8i!P=?B-zU1Zkq~m?@awdL{;NIfjT9s@Xvvzp3j94;5_gj z?o9`{xnF?y01;P0mI^Y|#NKp~mB7c4);mN)Nq=qST_{$lO=*s^@$yA|fFmlg+LuP2 zo&x6cPI29#{f>9f*EZi^tf?Nb!bV!|dmelFw=pnKi#TVQ=<2?eU)u!+gM9H(HF{3M zUQM;#5;+v7)BEYN7ybQCsfZ^}o}ichbUYBi#3*Ubzb#1lCxWbW^1&AomW@{Hg^%Yw z*c1xz|I*(duU!%R$ruUEnt zXpgqjQoPV&_ox0r^%(m5feT-f$KL8IUE~KHjdWyZW^Tvc2$?h2T<0a^@Y%C1fw{x# zm3j&hIy!U7^L>k1U>kc(63yH80g1rjWRsnekU*ZZlDFF*$pE0q+w1p32IpcJc+zeT zY54y*`dVi6pkx$qral0mNptFRm_0+QuGOQ9Nk zUHJXO{PgfQpUHV9&%@&43@8>VEOpjBEnY=$6&77ukMdWBS~xs>{#@zP?K7YP{og`X z0^i#7SKo)aGl9b&*!C5+MtC(q99O|&GlS^9@iZ*8i)~0tv06yMckSpo)9!xm8P@Sn z7V|*M4#8bW0mlgXZ| z2gpJFoq*a8tvPgoA9M;yM)tL}#`l7dH*Z`SrJr)5%}&yY_%`35Ank$3rMID>AbDY+ zwxzb9zl}eBurjGQ4JY^X^(8njI^cV63@_}^-V$_fz9u*rUMQ`BmWmfoi)w1NtEs6y z*i0{zX4T^@EC-d$n?ol^#)su-4lFk8kS9tnExZ^X?zaKF5S_j*cSQ*2$NkbiAOe_W zafDFf2N$N*z9u;#SOuW1AkQBX5z(UERBhWb*br+y+I|u>0oh#KX1LWbNdvI$LgyTS z^XI0fwBk=PfL**+GR?sgRDUyh{72BX)Hr4_qBa+*~h_Z zE;EilD~Cv|4jgCgcl7r5RvExm0#d$nwn{@D;tt69CJ^OjE|w8qr01} zucS=x{^UvRhY7?$?T7Qy1{%shOgz`h+mXT?VUWA1uAVhHaZ$Zt=EZlXv-Vo`1XGV^ zzF^#o5?hd)>xu%f%YF+t#8w3b1yH&76HZ`QP$;3SGf$WYX9}wzi=e=9^79u}RLIk= zScY>J&Cl%s2oMG=#yU?28cNX8(*9~r^Fq#}BGqfnX1ZdiPgBlLdJvL~l3w9>TcN@n zWGV-+gEDUiQw~5ksS^Oc);P=u&9CBQ?M7ida^S#iDE`E&5!h2eui)SyB>7#H%7mRQBS<-H_I^GhN_t7%qWsZhLradi?k?KC*{n(3Joh zRGxhzcCJ}ji_mMr<@N$OhiO>^|B3>fJYzq9RzpMMxwtlP;5D)NUp)F^3777NHpcRh?A1v>o7P7sBs_pkW^cIwm=&{Oi}pPoCt1WZ@XX z{Vv|#(^CM~EtZLzU{kQ=(!CbYRMITF)`0Di7CYqQj`sFk)DRtJb2wv8fhU-LPqYt7 zcLso1T9{CPTtW~UxXWi~D1i1m1jXsaonJ$&Oo=0WIpNz@R{mDzy;5-UYxrjWb@P2!$a3wwMJS3}=_=(4l*vf@i3e9=TY@Ri)oB zt_T*_`L$OK>gQ9EpJ~`@{q^ht>g9vQzM{qF_WBXp2D3QqMCk+-2L+0^?2@9WMqT`j z3ga*4B!q=V&Y-bBLc|&<@mxq|Ao&6}26pJUEGD(u-p|X+n}y>PRhkBi2B`56tf(jE z2i$7!k(3ymCb#N1P3;6DI{;|EX49V0GLD=bX?8e>9WZN!gd89W^S&6?emjJFF+Rh` zlpaP~NQv!TU3sqst#^w%i-6cV{%$fLO3$rnv!2fj)#JlwAvfw)zdO5X%^Gf}IU7(& z?+tO;*qVnR7|@qNN4;LWc*~=9tK`LD!lQ_a85?uV@%mWo7El9p#mFlnyx`+Lcq8(V z_|gm`@|_;s9~U(=UikVJBCUG&@5jpJgOfuD#)&y|=FB&L7Uh}xq}wakvQQsmz+R=X zS0gJ<8Zw2|F*?DZOQr)zo(95#9Kxc!T&A34bRjb<%SY`U(tc7ScYx3h7FhF+U5ukd ztIEpAxN#T!0%C%UvSs(~Vr(O(#DR8E8E&)NeFOm4m?b6!y~7cUGdeHFb;;4JJ< zA>P34buf-Uk^PBx9tif}@#8+r)5}Z2<1C}d2%PvR;L-lZPmD-uhz0Q)x&bJF}SoZ7TJYPW@NHEws^yW&}?wT4XJL4*OV#_ULG2 zaIkyI&LM`wCfDDe*{~Z=C)qlEB!BrLh$``T0|~sKl`x00_c9=W2ODk3ie{4bS*aJR zB^DN;CddIh61Iy%2(ON&y=nB8IR{wlmaD5o|9tPE#x0!;7|ij2TuM|!bPd2+SZ_MK z+7dQ4J-ytp%*9Qq61jtW3hh7*=f|B@0y) zVlnzlG=Q3rfuQ>JV$1?v)29%AC~)NUSB0)cl0OI$9X~n-oUyB^zO%p`$UyJ&ozEZ(&u9%57{+&7UNeA{4L}JXOVy5VqCHrkZHS6_=KF0&JQz#oq^TUkbCo zkY=S1<-zUJZ+H^M(Y8OsM)PmmaR)a)e*~I)-QC@!8bfH!Cr$P zp6%f%i$qTgpK~KSQZZx&1)`I3-k**kLPf#t=~H6;ZqB+z;|gPXH4MsNZfj1!esQ}f zbeH(z*6Y306QQ_x9*#g4byRf)u z*cf*Jbb%2`xTnm|`d1@YRCF{g#(WTBx;R*`p+(J4j|~2*`SxuKX6uL}`4}79x(yrj zkRnM7mh*BhMI-V0Z2&lQ`G{D0C2x)Xsc=OJi50;7iemi6^-my5c){Eb@@li;NAaW8 z8+Iuoy`kEI=3j*@Tl&ZoX1r!LjN<+jMcwuvfttUDf7U6F_aO4g-`Kcn^^;1q21Tz<9ttm31{XZQQt<`|3XwM0+npaG|n^@o`9gM5jgT z2sQ*-Q3qZ#GcyVqKm*N36HF4R5o&I|dQMai=?#Ev;|X3oe~xTQ1+f)Ki1eZn;^4#~ zI3VXGiH(e{ZwIp_Te3K^t%w zor+btB_(GK{6j+-NtnHPLqQXR01DJa&f~|!baI@9aspxa2m94R4;@_%#JQ5LMgXs& z1X24uJlHG;e1VfNT6P)b_1E{L4X%JI6yhbIfaFO-ah|~>kWD?Cv3-bo!nHACAA*_b z8=w}!=ImOjC!oNP6bG3CbU_jHbw1C17R8>_82nf7UjRbhSf~yBeCmvg{ z@>`CJOL=+u#S}AoBwSsr1O?J{fA_ROuu~xtC=Q%wqRpQou#V5h-rk-x+YqB}QlS7< zTPSEsLEt$nCwCab9@Wh8pM62>xb)O+M3+5`&T9u%t(Xp`(Oo0jw(uf^eyvo#4SSV#M zKlffcD}8(f$;%3wIMg8Qd>FzI=T67KMl!UDIj|FHBG7c_8fJZ`>37g%+s6VD-Sn)9PixD!ZRGr{9P?(}ZO2 z2c>unbq5I09!+BMUw_Obt=&vV+Eiq)4_p&pG^~EN4$Mwz#RpWNZ98{{C45D4ApKb+ z9RzNo=?`BV!_L7$Sre0}L^~1@k8-M51>?b4ToV!!#?waqA0oqh1q8U?y}Qztn>uGS zWZ;W%n*xjD)4ZCR^Y)zS79W+3jEtT?eC^)V(-XF8J5V&4ZbhP8!AxypJM`TLOa?;i z-Gl@lGt^c(JYBBIPeG3Mgs&4(yqC*n3P0`HZlM)Z+m$D)dVd|1Ep zDf6$koM4b6=Fr0w0LRjmvtR;B&u^4zXurT1CxsZ6K=?olt{_qTYRT|J+J&ZwE;J{a z17zft0xf~e`Jy2K1pZDTSnTSxYn`2)cQ7`k+=}u{siJe-Xv1~-yvF$4_y@e?13aA$<42o><=O+E;}jxi#vbf<}&_c#ZYI23)PCv<`@ zkg9k3zeqxEB>iR_PBi{mxZRZN$2-w&Bh?$ntTEM+k(xp5RA`mO(t`aF`Pan|JuGkD z>_z&Q*+RR0yCjm~OMdfxm~4S#;0j_GzZ5*)q&3qY?sHERO!yV#t7~dLB_>{ldxeM= zU_Hpk5|H^Y!$sl#_$Tpu_CB|05$Cagz~t`ip*C;C0A5m3|uG6?BXLJ#rt_XXP1H8YckQj4TW`Ut={oxQzM zF!&c&R2%_kyfIjhAz3+y|8SBL2m=F2JlglVDH-SwBE1sQ2uw!0K5$ARLV{Q;*Gu1# z8B}?A?_M1EBE~4mr4^{PXvmngWpB#GUcBVeTcf0;be(q(*g0rgCvt}a8;3l856B}4 zUyR`BqTy&{^pQI$$|4bB%Y9@vY)k>51`+{Urw`$J?ELw&7!cB5#GV@u2#VCz*H?sQ zCFV1bPPV`^g_Z2>?M3$p{rbnimr#n1T}t-`<~VEo2cpgd&=TIm+VtC^+f{OdM((%vvE{$m z7Eh9?_~r@)paJHN2P``uJmCHz``6L5j!&Dj9c4$4@wl(5s%Leb2&zAiC;RBxw%R)r9$JCYb?D_WxH)JYTnuzRc;e4k2*H$QT z$HPx{!cZ)N?Nk3Aez5?^-9OtW$R$KS; z@_K*!riiW(^WlI0>7-SAIi#V#`M9`@eqO8G`R~ifE!EY$N8Ur{kPE1Rk~vkc3AA?~ zC8&oV{m?fEbl5r2acMdD!w#&L7R(6864sl`rl!%y2+4p;u>%Tp5#*>}zf92gARYYeH;jyuMj!q@n)DnV4d#zEuBezRzJ*Ft1J#{`v4eCb z5rw|h43YmoR%*!h@!Gqvni~j1v@d*h>nVI)h4BRmKx zeH;+C>dncOP$u)BOxsWX+=`eAK?T#lj44dU(luSLeZLiS@emUe39mqXNC z?aIVNH7RT;;>syzmr$DUdA=3qm?xG8yoF=)D#UaVyHU#Cy#d_QId~9aum#}%30)td zgjnXj`RgK58xRo&<8K2M!t7Rp0wpNuk4po(y1P#)E58`mI@1x5_%|2KM9iu^H6a+r z70z24b=8?mP)u+DuE0rwT18K>wzkHK3!?u^L0QC%#A5_8IV4F*$AQW^(JqAK?VGwx z3=xnN(R6?q16gxB^mx_C)%*GQeAn+}X@_2o$nqDqWrx}T`JPGJ>O_l`#!{J=eF@w#+ZT=kp;<)tB?LWm$TIIf4kx=FwvgfmFb9nWgkEbov1@% zaXgS`XLmO-%<9;QL$p7HG>V>zpYLx{XK_u(oz)xME}0?EKr>QLvpS64x?RWO6nGRY zILyHpSa#xcka1fOR?Mv%<4maiN+*0BxD8$oYsitiIJC=w7|NO>(2;;8B@E}02+L0M zHzDBAP+A=Z*=eE3Wkz$jU+_ zc44IY`SY!6vD##QQK+A_8$LIHjNM$i_r_a*6=*RQ!Q?~0%c>^9 zip_qAeFqo@-(EB~w1)0U5*rT>55O3VFqAj&icF5QF@VlNjUaCis~WFKqasr<1u9NI zu1{FKdNqf)FF-B~%@MU_IH1pceKD2UiJ6!#6opcA4)~GbV_2%rBnB*))Y<>_77|Ms z96~guccG4vo+aR=-OMP0{Qxxh@bcdmUeS~UGu1%(IR~i%?5)&l`}Xa`uM%LM{TROk zErVm4$x*fAE9@}ngv7*wt{FIx>`44ER?#rRi-9aLDsT_iAb21tWLeNNM`tdbmB~2b zt$JkFu3d0Q3@&JgR&m0Z7^9uF{sa^mS}xsH7e1;SfO>-;u^esxob&6VOeEu6J=)aa zmoHz=h1jzcJ1C9Meu^@J>vopU4WeDngG-r+(4ZRG^DRUYJh;oh(qBO*&*1B;`(O}O zX62=&x**~DX0jNk1*O8S0J7=fkdi^(@+sIIO3^K%<-Ynz+psn6%F1BJ@pVU!9!3Ap z144%~6nO|IxR;>=!RTOGgeyRB*$9-0VqDFl4&`Wr&h}-V&xD4s_Nv}daC9El`wnV_UYk%Gy?}))SQsbl+y>u$ z;gEt|_6aS|gYxoo5W;YcO{9E~kFPYbSiixHcMszJe0O2&QKL!zjT#AD(8p&hO8hD^2_N2(Y;the( ziNjGDcjAya1E~MlSvPp-&{ZSWZDI-W_y3U4mZJfH^&VzdqQ0V$$E8>J4Yn;*gmDRb zPBhkkkF-^iA_R8}!P;Pn?;;}nzGs(yjI9iSm-R^pY-IZ5-6e!3W1ayioMg#2=)sac zIkpUlB1Fv|&GD^Uw&bEzK7RBFcGqA~koc=5FSu(oR2^h+{mn^)01P;E05Ru+#R65M zH7sXFJ7_+x4fAQp=@-&b_Qx1NzayNL_CypTO`;K)a1@|uZa;Evzqt4^hl07`jZ?vM z6Ie7|c8+X;$s z6XRzobz<>7MqdkApi5rbo<<>=zKYm}d9Asfi12PB3zameSFxgUzPs zibSBuqmFK;rTvg#0$&j3zI?&1;G2aAWZ>3(`)CDm074`{48DWa0UF2AL1>m-Fl!st zN1cV^07`@b0#`^W~3ny*=ehON# z8#itgfbkz9gNl^$9^UK3I1UKBV!w#UYqSnmBx!s_frRL=vK=KDZI%ybz5~JmZ&K?x zj@_?LCKH{Ywl|!KF=g)eP#JC~0>*kSU)1Byk=>5Ghx+pjq`K$JZ`cJ{auVX=6o+5Z zL}1s*PGSHCLW(pdmAonGiIb2QiT$65HRvgRN>1*Dm#qhS40P@>jJP2!ugrzI>&_M% zG4TfPMS>2)eeDASZfR+PZH^P0a+a5b0ku&<NaIBzB`5sfhgG!9w zLYM%#(g}_OS+-a*5p$;8xB!)#OdAn(8$;DqtSkX^dd{taZSz=#Qi03T+-i!7JxhtyF zJ{g&TIQe9xhf9QGq2d#ZKiqk%Q2$BKgV-Km4ncmtjLsRlG424^4wFC8DyM=(44XF< zbYa-&Ik~yNAj?fo+Th_Taes~>*bD;d=uMm15@QMVp~1629mpQ^9YpEDYm+NE;Dmaw9JU_4;+4c6 zK_-nc>uJ>^Y96b0t_ z>B-4=C?lnP5Koafq|ompG>@d;&4fvzM1|BD2|6#N$~z##MkO{OVIh~1850b*;U)d- zvMg+E`w%dP1qEqc5v@eMtu0`h-&^F#&<6{W+ME-R1zhD<%*+6K4g)%4PZw?PcwiCX z>nPk7v4Bj)dHvfP?i3ky{DDF!U~8e$!y-fx`-#$)jKDeUOm~uIN*LHF+E}e@Kwz z1F&h*sFdT53~(tQjHMF95w z`}eJA{ygZZQ*jPcMx?z5XnjMd@IGAr6@cOHS&_A{Mnl+d%(UkjwM%dC%8P^o4Xi-i z?dQ%tsi+NstzW|Syl$XE5&Lm#1!arxp zM7m~ZEg;0ih>Q9%)}nM>C}bmthN|lEzLL%12uzZzF}x%5jI?$!d`i{{;&7??2&PvM z$i#4h6Tlu{i4P_tZ%9%nfr7Bn7fQ=8Ck8hMdQA_J?XVmAsNDMD5xgj!c+q$e6rdpq zlr)^Ih;1g`zClF8g-pqf)(6I!fe=5V3kS()D^w3ScHBiP&>B3Px`HI_iokM-XpN*! zWMoL0R9m19%z~AS)Sb(X93;CNj}QBQ9q0cy(u&{$?yshs<8^* z6U9htqtnwx)zvS6NU`KWoQA5dx;pq_Eq^OPG-YYSNg}w+5j;*yv27rkGi>g{7 z8I}}_I64nA9?5Zhd`AQXULs1s@P?EpA^=Fh(S6x3m7=l{Zz3Q}=(Vq}5G-rqKSgEq z7V-)V^gx#cR0h5qX4CQh2@S)ZusWj~Qu)?aR_LsQ_WQn4jaJn(azH%c;80<}APgT( zTHYBqO-YkMHL~E_=<>d>@`{SW)>iHQpYt;_oG_nZ9^)nFl@-8ddf4Bv`r!D|$afP8 z=)00Dgn)@mn#bp+>?dQ+{|>)vKjC z`2EO>SAbe}?AXDHX&vOJd;mI5Ufymb1SaG;5>s$Bd_wC1IzQ^GOaP?$5JWof^>4Vv zVIiSb$O;V!oC|pp!AQb% zbX4)qAXqop+)1E%1$Y+xu~sld<>%)!^K%?Kb`1Wf15AC(3ASxxaz67bi^R`{IEEv?buI}!(51M%0Hy@>U1Qt|GZ(|bXB^+5`E980(z{GK6 zKh~3J3EY}XbC4!@iK+mBIM{h^oqGZ47u)stsF7(JGE@QmljI2CU^2Nw=9{qCXg-GE zm_%LtB;g+t;;UmcZDH=6JCgFBdjZVxkB06(VPbL&3rxPrP)$gdK{JhA$Fp%fo*R1& zbg2*8Au^h~Qe?K` zX5d`XC-Wl?^!clQ=Wkaa^W;b#cR;*wY3`G4CfAd`3%lG-#TZL!>Ta)+?ol0di^KNJ zpk`b!s|FZggfCc76>=F&58*0WJrA3JKZxXZl#MM6sN;)B69i9eU+iR1+Ma8%Pr!x9 zor#x|G`RfFkp|PPkt{Vs@3m{zkh{9Tt3IO;v55L9nC_81bLLU}W~9JPHx02~mx$kj zjG)nPmIVB*hT`~ePzy-oG}@{!#hlW|Uwyv(CN=dXL>|&{debln9*#lZPzlD5$UQe} zo^D*T64y2ZxlZ8fMcjnzbD#!*2if)WyR%*-6M-(0i#k=pbxoR6x8gRo0^KV(oY=Td zg+4X?>OOpKHwF<8gVr83#u@2Ax|ZQMrQdt|JIhzV!Z49#bf<3mguo+!wqhqt^}0|> z$qs;lXNWMUm0wFxUIL!L+noukD7wl`F5FeZ>p?d}(q?318+uipN>rSmRe5GZXJ@yr z)>L>IeFw&TCLnS+0j#l5+h}Re!gz6CN)}E08Q4~_-WT?WkO?4QZbb*9`KiH(g(c+A zaai?vR2n-+#W>^?qG%uU>UJ=XoCEe!s1|DFI0(n$)bvNP~1`(&6tk_u3NF<6V9PdU& zokA!knrn7{d7$GbPM++Bf>A!Pp$^?BjIKlSVNt48=>+=$xq-FhgYadPYQa=0LJHC- zX;kqT)Pw43YDe)m0N6X7=8F$mkJbrL1qpCPFsAz4Zq#Sy(e4Dnpo6kC?QxXev^~|> zYO)r$fo0tzUk9n|3r#g=rtQyT5d%MklSKvUX8gUW9iFu)gb8fTEb;(U2`Vg-2f)X7 z@~ye{6uowDqK9tIem#LI7nU3yL3Cm7ZJb8&s4DY9s8l{KrtHoZyc=9M2OYlLtlt}_ zC2v5D!7^O~bRM@VS2RuU!Dpy`5^=nf>{(Q40$edW@82Sy0}|=@Vw`NiO|C#vL@E~q zLp;8-$vEHX7MerY{FG#6uZcwLwd*>J_K12p6Ip%uI`=_U4CW(D#=BVL(CKiI3ss3| zFA#9JeA%+o-xllZ85g=CY;+US|L912i~56Dr1Kp6iJG?{Utg%ip!zb22LX<3j{k== z6MRBSgftx#2!vqzI!QtEDF^(8UsJ4QamVQ5;3vE z#Fk_*Vl~C2-ywDW&FTcD@Uu+``T0fmldcg;JBN#=jLd;zyx+XT1%&KQu(`ExEHj?w9- zY9t(rQnvhpn3jF;bCSdzfIDSCbi(#u(2Bni!?l;gf8F}^e4XZl9lYL!GX_VF|F|aM z^tBWRF@L)o4u@LlKZ52pkr@(N1_nxC?Qwq0U~iGdH!yHgRrOxShp1iAZjWAUYXAKC zEQ*X4Q0x7*F(6HX@e92Sy2bsjsHpJl1O{5snV9ND%g3okIXDXq^z)O7<^+mEKy6?0 z`lHX`qpq)vqD_bOmZYO2KDjot#i09-H&QF&m59n5=W@%^^#L`nspFkzGIWBu4Yd0+ zEgN#IiC;q| zazhflG>>##f^`%XQ~Lw2%Quf%;if|lXZB1kpD8M*-^ zQBxW|j8|pvAyqi6+Sn8*yHJ@R6=z_=;G*-B*6HBRu7@+rDsd?T0Am;_{ILpW49RE2 z?aEi=gGfGJX3hf|9Gf6Eaypnw^O(-C$8|edi}RG2>rrQbE>i;~lIU-69B@-LLIz5a zh$Nd zL^zai350M(79f#I!{5YL7OA(<-bD$xHFhpQo8&{czdt#JONeNtHXgJy@hz_=4nI6} z(lFtq5b!?Xtyn!GIYaH zj=1UShC4(V7|N$b`y!`s4b&li0A$mPesbU}Q#hWW=arn{f34+^F-}Ki$jRU@jBJ?5 zIAzQYt1rQe@z}qADr!5E=gM|4WPVn=bKk`#jgu#D1?@zb2SHrG)@A_pFs1ZB?`M;v z{7Q8r-|pQNz_;-(?*;{3MYgP3XMvS1QE|Y?!mmC?icoyJ%T}&@jK%0`^YqLfc7CZH zZ>ey(k*x~c`W?~>0Phxe_(sIU*f#x8E8fb_%llM9OZxp&KI5W(|9;xZ7_rk zuuTW;=zzXKf%odZinOJe_O#ymb?cB}bPE;t*$n((nUkv^!(V?ock{yK_ z$`{~pyDOiEp_7Ubv#mjGd(g3OC9pD_a){rcHwbSyw2*pX_>fgmSsAWxg#l9zp!}?> zs*4krgAJtn6(?7tA(>B2%jD*Y^+6DhjmwuUKKs9QG8`c=8OpYN(C=> zH@9X_WeBT$`B<}87!G;NDNUa2e_uLy|FfVWiSJHa1 z@U+(%Z_}FBx>EH}&k{sR)F#Ke<*ZmojV?!X+LktrRX$~xjnYwwbc5bNUrn6nsFF~j z+jV+Qk?<;{Nol61BfbOh1A)BR{Cwfas!EG?4v|j7!Xxnwy%ABkda9NVq>VF~fG$<& zKL&&g$Hk+hq&K~Jb9Fzi2s{w*K%{vowOY{H|0)W`dU8VcT*u;IWoQ5TY$mr-SbOpZ zR)|GI0yDY^>|aC655XgQo>D_;%p9UO(Fl%{GSzj&s9^J8;HRm`j0X-<1He`2=xH<09tc3e z)GPFs?tS6r-w$ZuSYScnxeaE2^j-p!N>D_>eW2`WR6pP(YWpb?nlOY3FhS8~yTO{Y zJOHM^)4BtIrcTcz2fdbvHGuS=J}^%xRsfc+2QNH&hD#$^KPS!5bEL0ND|rF{&*_in z7v15JF$y=*2*2=Eugw6KJqSC==86}@S?qxNuw^M{K;;PpN#M{_O^C{}Y>-bbFw7EL z!Nf!=H2B=NK&}9a*%7@3aT%le_#)0pjdDSUc@$O#2(eJnHLt%7pp^GzAhsWoGgf8* zL21Cpn4n0ZuX15hoPPqe84K{bd|XDsX;}JBg5Snz3oXVE*eSu~#Z8R2_GNEazh3hz zmk>YyRuK`_DCHZ8iHY9|+sCC?f$b}>wBzo!ZE7Qt7~t}0E6b@WJe+NJzcnJEo@fVv zih!du-Y5^l4Iv3dZQ9uZuK;r^2RTM%;)U`bRh}cn>?>kmR&ybUCD;Lw`&k!qA?6B$ z4iHb0OlZh>&8>c&ABsddphUq;Y1r2;Z9lbKbTm*o6eWa6L#IMA2;=IKRwlREoB$BE z3zRr?H;Au?6#L2DP^=jA_Fa8_2^y;aio(HEhrQBO`KV!heJz$FF_-{M1lv*%%WyoS z=8%WMtg^X5lnQtYs@z?)cGT8S%^wc~)HMG+F`&#zfktqBr6D|l09xHHUAhlg2>LEG z4613=e_?&5T#D}4ys_9_2Hbvi-=K=H!*qm$gRm^LMxx_~z3>EJ6yyr+#CHsK z1;7V-657OcQl4G+Vzi^GHg|A*(C)GY)R%s|`IK6P4#*A`uG@Zoe1d``Y)~O;0~!X% zLC5o~nnEEoM$z&bmoLyA99_X@C|MKsz4+1+Q7b?X&+R>94=J8{GDEzc7YMElgcO3i z8yy|(0wSluW>s*gNroZ~3_zINbPPUM;PV4ync$I#*M@W_OlcnP@qPgX zk5UtJM`8ttVjx51_}$>BZ-@*jq`sT`+khm94Ng+H=uhI zp9TrFz-fY=%LvPfTLHJK{zj>+)LRf6swWf}UwANhg^~O8p_7QO1bC~RU=MyCXO_Q0 zd>M)WVsl2Vjy2SPXr~=}o@I&Qn|MFqctbEAg|u*$X-5e4fJcq{XNgZ)DcP=uPf4kVT8M}xaW{a^DcI72r#)7> zgoS9Nh^-8A0>mvp=!l*Hu|cx35RMI7KrOmrTr~%X;v1@NR6eaXht#Jh5b1XLS@V08 z6HGp3v8^{@Cp?d`=MMW`g0iY%oKlSvg1!Pse} zLW4r1?q>q!ZH|WrF?S&J2)eqfFK})RxOJ-=7N>;AkFUWSB)2^GLrr2KAXX84PuRgg zbyR}$9@Zp9)#4^11A^R(v>=}{$`9(i=i!=q5`Bj99#UvLTrsH6C$;fKY{+US}YF4(!}749Ic=p#;GH zGeA*7s45txA;tzD7OJDS!X-0DQ7`g4OIwk2)IH#Fi2~t?mH;m7_2X5l9L*f}Q4_~P ziH%rt)7uJ|GJz-C9c~_d24pTK>5M~$C?Hj7)zn0CI?=R%JS3^41mJ2hIVR+3pbM2X z+R$CN1_0K!RrhMgg&0F&HG^3WW&oH`qyY>{xnq_8_Z$LEMf3y2ZWR>7N)$b&MzeTW zmTlRoYVri$g{g4>!UL=iM?Eit-cZ`_mh3Re?b~13hzfzh!lKxV1S9OgW{@Z%L9j9( zftHfGe=Sz~7tH30!^=1IPAdfrFQ@X!piJC7xb-+uIYQM!^2N|T(LUHhirhy?Xq@9Z zf^4{(hZ0(osP|;_ygtnI@XP~_J>C*N4)}7=Z2-4&? z5sQ`EXl%o47K7@KeH>`jNNgh>|5v9&_)ya@->?HKhqnoz5;kDf3B zJtn;o2N=fc%rkqI#^g>qf0``3G0z3bwGXtcTHng9kBT+_J^(2nq#$H=i@0Q3qgDE! z#X~YQ03(t>3RVSDLqg_~C)aAl)Rg39Paks@9Ob111u{J%*5aH zW0gwBbHh;@Smfy6$(?mZTo*BOW$56{&*}KVWpf;By$28LJlJ`F9v$P{k!?dBHolnn za2tl95P*0BwX4@0tqi;?A}}>t;!*0As2ukjXh#c4#-+V)#Pa@~6ZPnyUb@=ub$~Ta z&FcXC_*K%1^q^Mx&+^)S*!BCHe}R;rKL+*x=X?F1sQUk-|1>RAV*H^O%HW{P1>NY0 zr}neBmlbRNT6>UwSy8Rpbhev2Gu+B--x;%gi_G>(o9#0)+jsr**$K0K`Oic|+5E=E zv{FMvqE=-ZsbrKLzG9>jZKM)nRJ)@nnu#LCI6?7hsI(Sc_;hmz$|`2f_MP&(okWdM zp|%^$WIjuq-Y3e&WP|_h*x}aOzqad(XUn2R+oyj!RJ1)P;^uzRI2eDP3?PKLM(Pww zD~uaoLu*{2Q>T+k&v0YrVJ-Vnp`pQ&|NBjB)`cb_b-TCur10^1|0-BfRCIFcN6)hxi~|%Y z%i-b21$p)-X}!<16t8P3-Yq}+wESpT`Oy=Wd=Gc*xE5ATzhV8Fp!+`NUUNKibAD^q zSg%@f_Ie%fj?;gI_V^xXKK^A(mpawFi8WKJ-|y{0vD?!>J9Dsm;O!y=#}v%wIgjCB zkYwdL#pUPQ<26AfM11qjX^_a6iv-HuDIBGZ2YWG!5?R-L}0?dl_E)SqI-Aq-et=l9-I93 zT!^=8xZS`?Lu7MGc<`&tlP5(}HT}|;EY>l8`@04Xo?^WrXxPT?Xy=@SVaIdOaXfmo73vY(%gl7B*E9djfHs7j?HE)ld>%9Q zYDI-N#l1F_&^~EL_eYAe!#bMWl)1s}%e~`Yp*W#K&jvA$zz8%TCb(e;fkvFVL{;`g zcOS_D1`qZ4+JbI;`2n+VB`4)ma_5|j#kI^#Hgj&>>el%>u|DPx68n<5!DADe8#pxZ zfLh{62IxsF%3HTCzD$@>RHPUm@O=(%Fq0@Np|pJf2*nRYiuSJ=m~IKnk3vNOjh?We zkrI+lHcq@`86B_s#U=iEwD37iyFoYoxPIo&hb&U`r6}B{QACmOP)+6LU*Tyo}Eg52@UbSm}~?34t50? zIeSq#<)!&`E;xgJZL=A8Bae6ZrBJeU?$a{Y?Gl?W$86g+J<8#;@&QUueu+cWPX86L zAh;yQ-)u7|_6Wy43IX$R>}(XnrBu~G6xTn{agYRXLN6Fm2I5zAs_NmwL^>4@&ews=}z{D9L(L2$Y{Fj*T0-5;y1boj-22kTzYP~oof@hkT`v3gJS&ZD-_ zSIGYRBy)RhTHah2&Rr?0d|YmCy1c*4CW~BFHa3P*lxKjpjDzp3jK60qO8f}K(gi;} ziff=7zaoma?btyaZ*>-jq7 z4WUCKB!|$XIKs*Rm{J)C$7833ga!R?A^z5dBU|4$>(kgAeXbt#XgqXl5D7!-bTHIM zW3vmgRn4r&p3*cd%!3?7=4udv}TkPqbu4d1-ZJ*0OqZ(Lp@2Ny6n0gs3Fb z5>Fi6KsV?(V)4YF%(W_#TXrmDPqd4m)NFo`Z(4Wl#nImhk7I>%YRW1e)s3p_u-kq} z8q28-%XyYL;PIKh)geykfSJz~YDUJp(Vro#f`6?MHu_@D=i|IjE@v?_JG4@i&WoAl z++$Ua_jKuh{$y_1S<$`M(|#|)Z5lePL#{21>t?n7wb;|qVOeFZtDA?u4!ixTZ2wsa zPM+1JF1sWYmztg*b))3JT-x)`9+P_2-xb_g&walY~TtgzAf$ooSM|MrhQJ*SU?f<;V7->6PXAd8}>r}*5TOrdKSjbeVi@yTM9jwrk#aL;PZ5Z(u+}uG-)ICjAeyMeJs{%WmyBF6==raAwE8*g_ zcB*`9|BDg?OZ(eH{ue~BoxhCQ-FQ7`KmBa`-343LA9~L84Q#Bv+naUzM{4)#Cfc8> zfpK~h>*rA&4TTkPN;^+(|6A6KO)Wdn+Se=YF>7&pwYur=4?H4mZEXX?8mUp=e=dBO zS6u6@SMGa|933?@+RPCyJ(>7~d70fWO4gV2(SrOz^b22ytIN~6;@Hye!5cn4y0J}) zmGjGu-QDaS%QN42-HJ85c%hz?5NlqRt(V;Y<&0y=8}%3Iev@-^tBlhx4X}D?(f+;r z+pPOnCd+ET!vRhVO%dKOdOw6to zO!4Rc?cL$)lBd$|-FIGc$!1)SS^s6HRo2-Io%eKXwDruT&TY%8R%kKfJ`pXM9~lu9 zbIVEf#PnT7<+M@CvHQyl3;#OZdLhhpX9gw z9+b>iJ9_|Z#h!2_?W-KAY^gshWFluJ;_eL};zF5R&~za}>79PoZNdWsRqvg|jYLHG zpq5Ea2T(Et%~PP)|*EaoVgL5r7wG?A#~bW2pGFSI`A1GV}JQ|G~a z6X7=S_(eDG+&K?{3=tH9{U%rdgi>jICBT~HaB_h;4;+us<0zc{*`|@Ix8AROF)EBT zfTJ9zr6@&zvnmSR9SIJD{3>0@G~(-z4-u0U$;1V2umeg160ii3?P5q%tQScsDNsp9#$OU2WDoT0rfZEX*L4q~{Rf1_0|6q~*Cb0hO~1ZvL6 z$RMG z7vT`EfVM#eIlZVd3H3)Xtx1YEJ`gGD%rbSSBZ1%%FJhyky>rRajhH*HlF-G zBIfwu@^ev#^xyt~5(&PDC52=?KC(c7O`(ca=l=|H2k^>KkoSbf20YJ*eSjF0Bh#Be zNJGLzrVB2zK(m2$&_~raB2J`GBg!o>$RyyJ=)(zH-fOE5y%L0PRL<9!T!?uWyckAA zGUiCi2dqjO{81#21ZbT+g_7Tqfo{7V$szDD9)oU%4E8}81Bkh}6rXT|vBy0kkVX|w zCKQchPmIH83bW8l{Ej!M+fLy=#2+||9RP}n`!X3g1c43)&U%wk_WNww4`M#Jc>KL# z1$gUWwn-k%*W+-bP{z?57^u@RklD6GZvbHg9uG+*1!Lq$zPt&0XJW!JL-CB9;1E16 z5<){>4H`4z$AYh;A4O^+RDvXhY|S?L)1OTanVKf|YP+LIkLyY~bUamZ3Q#CCn8bzy z$rN;gTR=g624<7e-;=Vi{C^_)g4S3GxXKU9lwgSf3yJj}%k}76&dV5n6#yQ0hbKYY z(lW;9l)^8f3MRY{*P-V}TMzZ51gI+dz*j;LCjf^Es4R#%h)g~L*q$;ONE@uuH22LE z89$z$E^{n(CP`I5#ydfB326%=r7nd)7_F+6rmi?dnZjfR2x4*G{f_V|q5Y8qCkv+k zA;PQIUp<^9sajy%d`Q5-yHjTeDC6bX{QC3Dw%8nbTKDc`&*!f~VIP6fJPpO@bIb1CHQnMQ85Je5BLXA^I?svhg*P-l zhctO8fZv?4B~dQ!u;2w>KZ&m}9KuFG_b9J3K-2WjLgt5u7fgl?K%s!srWz}ej%Za; zZ;=dVoT9CsBnF%$y7o`qIEjEps3X785hX4Oi$g`c=vT@79~lUNZh~L#=!n89QW}VA zEA}i1k_I73a*%K{2$)WPRmD`EWz5XIsN2v_5;|XMs@(@DD4G!$X4%VNVlok7Ng_oG zD#EcsFI_t4Fdkb0#T}VohM8@cRYmkn*b01$nh>6}=Rq}OU2tx*5ve8G4$TIf+o1fw zk({P51#(HqD&fWbDru5qCL9-I+_UmF;e*smK(qWgu8CS`olHV0tUk{ zE*-I%c$cJ*2Ox%D@<)Bw1!x&bFb!(2v1%^N3Q1Cos^E`)(l#N*TWB*;TWPN2?~_j&o`Jh$G) z1gROB`iTdxk$xSAq4*thS6JIq>`H>($ zw;pB^z=5Oc^ck0{deKQ8!qz2?Y$oIe!Hu0;XdKLwwdQF1Rg<{u_f5{x%IxlYw^Fk< zYWXdVOBZfYj-IxcTEBjMHyqxe;qyB;_-XI#LbkwT96E(a7f`PK0o7j*rnaT5w*HP^ zPxP7M6gJNOGXib~pnkBt0y-@!LyS>6=40I{7|!=2XEWgn@P(`pGe>y?2Bro=mb5|_ zkk$oLaAXJLbkjN*gYMM`0aZ(Mvl#flLT?GJ}m< za7j=d1ToGiN;%O(3+Tf8!AYp`Az5%kDo~!=*dvi0aUiZp8;tv-HHt>dvACt-d!8R-YMfAR80mHGyw{iwuC&7p|BJ z2y?>W2CkZ^x5|>7ooM(wqG00vF&F0bS>qo6f9hu!b%zL1%NLk*Sb=@I5i;CBsh{j* z)WW`f4VD{K6?wGXEt$Roa)OA0I1XLZWv%gUszDzmKF)-$30q4k@}TO#Jwp&jH~@E7 zJ<*$X@Aln5+@|!ZN@&{y)#8E(q7QBv&dJs+-jdWM&Y{{R7*$w>T3~EXRt_JL*xv@ZRGW|gnRH>qH zkt|df!JWh3y~xNO)7zS;R0Rw;t=u2El(0*C9E7?6n0_5jTH>L^1+SCm5MTBC_%c=Z zCQl>vFdvg`O)q`szd4CbCt8+Tm0M*%3@sq#jCmtnEn*Cv$rtwo*xX4|=*{^igh9dS zP3N+7(gbDGzr49VFm6av6B?KKWN!e#-_q3xk8@a!b%R@C3^-~ASoUf>&R|=!aT+%POyQ{(xfh{GE z(h7|6S)5;$r}7}msr28&$9D^+(}SB9yY~GbnYHC8&RW#p1nDE*J{0BHxRPmliXWf= zhcKl3X&DBY5n721RiWe{+oKHQAa0hQC8Ly~i4lm~1H2Fy)-%LF-gbW+#9(KtSBCqH zJW3L@1os5wAYe|3Uy{Tt(m`y|2h~93GT$82HI86;{!e4JgmjO zV+W4C*%n9)5(GjU`7t%s4_NCVHk!*oJ}TxNLMqXcx6r-JmDqN)LuZ2lM|a+ye_@sN z3``E_Z{y?{h?h8F71H9!?QPIZmBhk`z?&iQ1CSa(Um9oF(+yyzGB^x0slb3aceIAy5^IRaBJfB!@$Oq2x7X-I-{LkqhI1BrA4FSJ0{Xupk zrJp~GcgWPFWH_X9)=^lJ{4V*~-ToLECs?#PW_fiTdq=vxQoO?hLpdxms%5!9%c$6_6-xYWW@+@*z9noK;y=R38Il0$BEKb9nXJ7(J2%Ob{s@va2?gF zCi~d{e}B2e2EHP*Y@_`Ppu8=_F4X%>gcB>Vtcyyu9Z2UlfqE|167c;cA@) zk@+rxC4n7=c?hw<3-j;_2%tG>un|(iK}swKxGkdVX=b zSf+?w0KTnCd=c-dgKqF(3FTzN%2<@QGi0v6x1e^T{p4%!{HLq3{&V!B8AQ!h{Y*4 z#z&HsqO`q&#bsnl)S5zDT~oN!|E^8*-b4|+PBfRjb5XiMUJ#mizJ>;pmWnYwD=))b zjWS8wi}Yvw^h*PVH&CT^WgV&=keZ*eG}cS~n5OPwrnr$@eiwLqFbNlV1ZO9loJ5j~CoEEvLiScpP)VJW5-x82`J1?dyhkl}F!SO8QG z18UIGZP4*oAL{V{Db^FaLs+&FjU8-e7NUdRlii&upWW1yaaA2a~ z#dm)XqEeLDfQVN@_r3*&@FJsHNMnPI$^lM@AZl=hpVX4Yi^HJ0LO{2sFZWvraLH=_ zB&(n9iE0d&C=pgcc?Cy@5AX#XB#^(;60RV^1TsTSmoHZYE-bf>(bv=a=474%2%KO> z$xI}|Fu^Q2KCpF~20cY9*GKpuqe1BAQXOuS;P>Zbyc>Tw^6R(8qR>96X8{U z1qB5iln{KfnaZVASmUs?-iwGxi7-YJ`w-GbFj*?o5`N{7A#Z@xCeO+p0U6|^E49jk zO|TYKKG7MASaoUIc!t+mJl7xWeS&@yElof}Aw2{mj5q`~BgzZ76bWDfVxDp*pp0s0 zkH7vxXe~+M*e#yDrhfcNWTwbq3VOyW;jBYDB_!G`IZ!fvhV%A&Fcl9N^_^>nbEv~9 zahmssv~(Oh1&1?c+#gh%g*qEeJ9G^Vr3Np_8dMyTXbecE#z1(R)EBBZjhEAQj&7() z4PMtcScG#3Ft?IraH#MgxGSuaN}Jopro$U{k6ht*|Ez@e9bo(;s2WIE(@riMd^(4X$x8l)OP&(Uh=ZCyb|(xtdL_t*RqGhAKU`5 zlD5kttq?93dVq`-2;@dyjvZ8tw0aA7 zm?|JHrB4%__>PqT5{L9Ec({D(@gE2Ph)eIU43G=@*B}U35Rw-7_WV}3c2H+LY8bF+ z%NC*(8S%;BXs%o(3seZ0CvSf~PHlX|z&Z=0F%lyHH}Wn+r%8Y#froZn^u{stcj`1i zz5>BoVsJ{Zf!qngJd4nNvW!HE60xl+j~Zl&JPMJvaCY)KXnkbxKdV5|yW z>|gi)A|y>x5_8h}zenj2WVoP&t$ZGfTMWTZXF?fjNF_XooE{R+#ldk~IWZ20t&8_y zN(~x`sQNlpM2?txMzl^k&-}6{Ine0tJ3Ec1i?Ywv)Eoy8SSbudFvK|Ro1{640Gy^M zr=)Q~L5KGhlqKrE#Y7^G@PQ-C^Yfhs&gNugX8!RNu);dV`yrDlh9qhjItMK40hQdcD3UZK^2%cKnIAYjZhQes!`*89YE{_>fLe z;}^7U&l;o(c_?4E0N3oZEBX2Qwx9d-w~MRd9v#f`lEU5~Pzc;hRV^A9o|@i zbF^4u=7A4n$^^BAg^WbYIrv-_@MDCw$==9wvT=p~C>B%;vu+~hQ6V?1w?qcwD=3z1 znrN1PW`zq!7o!P*D@6q2F4JKTYzUm0WRx@NU(|;NXF5Hhye>02oiJYrkQ5J?m_-3D zA}75EL?Af=!<%de-=Z-5f&&dPHC*@K%ED;85o%T6i#q`n?qy#I>^<{^jTtc&K*olX zgSWvRbrHS+bxQMh`PsrE)QA}!j&vXDiB_51xVW8=mGL(%PhA1FIii%uEEJ@1<2eOK z+d}n(K2RR@ILepvFq0|xG-&=#ic*1-l~|Who)8@%zF@whaNu-Ap$2IdNkqXskraA% z7U^G`$v;H%2jYO_hv3)&3hL8hO^p4(ww6MDimlGfp3B(X$Rnd!-J+eX$#b% z#U|EbsFLXju?c|#wtvsV8{BAJ84#L+w<(Wa7Q%sTfZnq1K=PfO0HmFPo_-I6zQlJ3 z=O@;vph50w%MZ=+e>1|)SiM2+^a-S{!CFhykwkHbGY;3cCh0gAMebgmGx=D8+ynAL z%)~Seh(7+#=~Sa4J>9rit@+&iVv@B3Z6SpJT_y9g!o&y-bar>u8xrG;016T)i=F&8 z`3Lr{-RZ)J1c9@Uq}Bm(fa>!uwyLSD{E)|o%0NA@JboF1{J1l0+P&JsVL_~-a z`V`7Jq=08X82*JOg}1;1hfn}+dfq{u$PQr?NkP}Mqmt0lU}BOPZtWD(U6Lp}^0#2N z1_}Uz`WIYy@@z72_2-?8oUhYcqn33|f3@&($T&Qs#mFgrU+>|h!%MxdZd>xwB3SZz zvQ2n}{O(kEr_e)Pqu&fh;(-dpXN ziCYoh?=bYyww)K?C6cL*ZQSY#V)@m;)tomD1qc4pdCTlyGjOu`C%lO8=VxP@@x97C zmGIC_Mmy$NmG753?QSoN6Q4Z6+C8SYt0C%%7Og{is7BTxi%06RoV>(eru0=5n|1J4 zC-$_~d;BTS*R^-di`-J99C{GcqZ`a!Rrs(IF%cE;v+#efcu2pJO)>teKmRHhI)Nh7 zHs%EZiM`KN|E*#4uoK-CZp^<;H{6|5Bdz ziAy=BDNFgW`3@PhQqhGw!& zF@4wgw+cHiY5JudAD64<{uccG^ImS}&@V~FRSD`YyGODmr*1|@u1Ghn`lr{+ZMf>M zI6U0$*?6H?PEOK5tHRs1NA7dEjA87rM5d;(wW(sgg%ZKRU4xsOPu#z^kd|uiXE-I~ zS0k>w>{DOLuFg-Jv<_omR#XpFjEoN=&N45T{r%}~)h}Wvm>AWQ=xP-IjiwlWZgMX0 zzDdvU)vFKYdPKo-ZWi0csiIQLIp>Kh_DgRc|CyTV)55i5AJYDlYu%I(YW^jcxUHdz z_F@p%ge66tN7{U;KZC!PqKg(Wqp|x}aEiPjF`Bql(_ME72r&6;`Dw-3{}vq`j87{+ z>g3?y+myL@Ny|Xr&UpO=t(ltGV>wEN#rDyZdn=>LU-ZbyeRp1cvzhm~qm-mYU)Q9WySrV(RpvC&-x-e_o7DBr_BrSs3PrM>NcjMT`H;n7AAAHK<^Jmr z3M3HvcAb%f?$onPu41n@7QsP6f7jjcJCk$w$_~r8x=Jc4d~c<_zD!5Qn0`|Bh=x&m z$o-e2m+8zpA1CTx5akf%5IV$VAfWcU<(7{+ik4;faX+6nsy zoOGUOiI%)x)^ub2lM+U@5=M5ha~g4R_f`EnU%Yq&CEq_*TVh``UGtY-Id#T#v0RUE zbANfZ_G@*_`lSe+gJ0qDdLgltEjF54!#KIDC;0du&E+|+3cNTrNmX0;v^GqwoReja z6Oo(mjDytUG6<5mBMNi9L zzwRD%H9x;6JL!blJPUhtj7kxL0=U~;)+QwWI|U$-uyv;deeLfb)oJ=}{Y^JDXh~CS zLiy3q38x#cS+{NdCF}BVK_}oHYOeqy;R9ys$6Zo8YCA{iV9ytB5rHB%fFdlcggK(>&ZR47QP-X9&14tS95iXq?hNq z-Q8EdsqWpaThe`czn`yHsPNjpuJ9dn4`|x`oIXcb6&6$)Qa;R=o9@U5NVEtI3|ED2 z+%+h+iL!TJ!@#imt`sd(g~OM(2Q8>CE-`ZEm6puTys>+h9XlDX_)a8z`|(P5XfL%A zmBl4P)~tI~d3W`S?codWrBkYzPN#3UCZhE4JDUI=gHL>utPQ88g9J+TTUwkBy4QE_ z%`7WzeRD#q^IGE5g;Q@VblCyAotG%%nfE6-^=Q;T>gwSU;cq)9#hbZHKfF^KRy<*s zyLnSrlU`QXmI9Rp@kLuCh9G|Re=r+=0cG#k$q#lS7gGR5F;7r-Q{3(*G|pWVi94dZ zG2O8EyVJLIr3uYCJKr4o7vo%Z-SNRnhHrTV>eVMp*Mw8$q*B>vWrwfcx72nGI_~G^ zK3u`H`}GLH>WnK>!-VN*wOd(Ik?*I?PgfgHqtd@ zXk1wpH&yN@d#L5pM>dPXwd^O-Z?JsS zbl-H(T{p&4G%HQL%G|0@qATL&S5fO^UHdY)^svbG_Y2}Y?=3`?)b`nuvhT_siMj19tC-)0#veEi}UyE%J? z*`;e?OR!qEPnc}mbCCY>|B>TLZxh;n&F9FGC;K>TEzcEQwB$29wUfj2{OX8kqvVpe zlT-aoZ%%xoTB`r|9yocd>6`@l9=d9=`PW9~CDcl2$FDf<>DltRx17OsiqmV33&JS< z)1@7Gc^^(FF6~4RaL(6@0c_+5y4^<}G_xi2N=QTVLde!e}>`}$_YpRP3&IMhv4S4%rGbwj9 zwYB26C(9o5Fmb=>>TbJ)1_PeJAJd#(Z+5-?X%{Bb^l=<2;Nk3xHuFnp+}bQGj_%U6 z@hyTeL*LJPic)$m%w%NTi(y!DX&)WkYR-96>rDk2Iia*3`vW{ul)((Ms;U+v{i>vk znT86{(98@W$|ToP#46&>gPlIbwNFPJi$^lO+`?3%Wojv@8*BP?J6qn?&&}xv&Ud}= zZRcL;;AmRDlAi9cb!2e!!Jo5E5$U_`8+cUvH|;7bs;-`?cg{22v4oB;!`|UsPjgOI zU+b_j(w z1O0{KTN}Rc;Goy>U%dG8pwWz|P+ClPIn-m%YYp4|r?OiQSnAty(b3H<^?HlXbQb@t z=EPsrO!t3&c*XGVSI7^W58yxj?}v;<|9*x1aFZGT>AxQiTjO8Iul)Uiyzu{iAb-RE f{;E>O&%yyy$7Y!4HV5LD=}yWi%cdPQx%&SAQkFmy literal 0 HcmV?d00001 diff --git a/doc/query-layers.md b/doc/query-layers.md new file mode 100644 index 000000000..f5b1a9807 --- /dev/null +++ b/doc/query-layers.md @@ -0,0 +1,112 @@ + + + +- [CTL Query Layers](#ctl-query-layers) + - [Wallet/Backend Inconsistency](#walletbackend-inconsistency) + - [Configuring synchronization behavior](#configuring-synchronization-behavior) + - [Synchronization and wallet UTxO locking](#synchronization-and-wallet-utxo-locking) + - [Historical notes](#historical-notes) + + + +# CTL Query Layers + +On Cardano, every running node has its own opinion on the set of currently unspent transaction outputs. Only [eventual consistency](https://en.wikipedia.org/wiki/Eventual_consistency) is guaranteed. + +A *Query Layer* is a software that provides an API to interact with underlying cardano-node(s). + +In CTL context, the following query layers can be used, depending on backend choice: + +- [Ogmios](https://ogmios.dev/) ([CTL backend](./runtime.md#ctl-backend)) +- [Kupo](https://cardanosolutions.github.io/kupo/) ([CTL backend](./runtime.md#ctl-backend)) +- [Blockfrost](https://blockfrost.io/) ([Blockfrost backend](./blockfrost.md)) +- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cips/cip30/) (any backend) + +## Wallet/Backend Inconsistency + +Any dApp that interacts with a CIP-30 wallet has to deal with the inconsistency between local `cardano-node`-based query layer and light wallet query layer, especially when dApp workflow involves sending multiple interactions with the wallet in quick succession. + +Thus, the goal of the developers is to ensure that the set of UTxOs available to the wallet and the set of UTxOs the backend cardano-node knows about are *synchronized enough* to not cause errors when wallet or backend operations are performed. To give a few examples of potential issues, consider the following scenarios: + +- A dApp tries to balance a transaction with UTxOs from the wallet that are not yet available in Ogmios or Blockfrost, causing an error response +- A transaction is passed for signing, but the wallet does not yet know about the UTxOs it spends, and thus refuses to sign it (this happens with Eternl) + +CTL tries to be smart when dealing with the issue, and it aims to let the user work with both query layers as if it was one. To achieve this guarantee, CTL follows three simple rules: + +- **Rule 1** Whenever there is a *wallet operation* the result of which depends on the set of available UTxOs, CTL delays the execution until it reaches a state where *all wallet UTxOs are known to the backend*. These operations are assumed to be `getWalletUtxos`, `getWalletCollateral` and `getWalletBalance`. +- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cips/cip30/) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. +- **Rule 3** Whenever CTL is asked to await for *transaction confirmation*, the execution is delayed until the *UTxOs that the transaction creates at wallet addresses* are visible to the wallet. + +The rules are implemented as 3 callable functions, which we call *synchronization primitives*: + +1. `Contract.Sync.syncBackendWithWallet :: Contract Unit` - wait for wallet UTxOs to appear on backend +2. `Contract.Sync.syncWalletWithTxInputs :: Array TransactionInput -> Contract Unit` - wait for inputs to appear in the wallet +3. `Contract.Sync.syncWalletWithTransaction :: TransactionHash -> Contract Unit` - wait for Tx outputs to appear in the wallet + +The developer does not have to call them manually, because by default all the synchronization primitives are enabled when CIP-30 wallets are used. + +### Configuring synchronization behavior + +Although stronger UTxO set consistency guarantees allow to develop more reliable applications in less time, some users may find the delays or remote call overhead not worth it. + +To give some examples, it may be known that: + +- wallet UTxOs did not change in a while +- all the UTxOs a new transaction uses have long been settled in the wallet +- that the UTxOs a transaction creates at the wallet addresses will not be consumed again + +To account for these cases, synchronization primitives can be configured or disabled via `synchronizationParams` field of `ContractParams`: + +```purescript +type ContractSynchronizationParams = + { syncBackendWithWallet :: + { errorOnTimeout :: Boolean + , beforeCip30Methods :: Boolean + , beforeBalancing :: Boolean + } + , syncWalletWithTxInputs :: + { errorOnTimeout :: Boolean, beforeCip30Sign :: Boolean } + , syncWalletWithTransaction :: + { errorOnTimeout :: Boolean, beforeTxConfirmed :: Boolean } + } +``` + +- `before*` boolean value fields allow to enable or disable the delays (see above for correspondence between synchronization rules and function names). +- `errorOnTimeout` field controls whether a given synchronization primitive should throw an exception when timeouts are reached, or just print a warning to the console. It is set to `false` by default, use `Contract.Config.strictSynchronizationParams` to throw. +- Use `Contract.Config.disabledSynchronizationParams` to disable synchronization completely (this brings back CTL pre-v5.1.0 behavior) + +The timeouts themselves can be configured using `timeParams` field of `ContractParams`: + +```purescript +type ContractTimeParams = + { ... + , syncWallet :: { delay :: Milliseconds, timeout :: Seconds } + , syncBackend :: { delay :: Milliseconds, timeout :: Seconds } + } +``` + +`delay` fields control intervals between synchronization checks. + +Note that it is possible to set `timeout` to `Seconds infinity`. + +### Synchronization and wallet UTxO locking + +`Contract.Utxos.utxosAt` function returns a set of UTxOs at a given address. It looks reasonable to assume that if we call utxosAt at all wallet's addresses we will get the same set of UTxOs that [CIP-30](https://cips.cardano.org/cips/cip30/) `getUtxos` method would return (eventually). But it is not, in fact, true. + +*UTxO locking* is a wallet feature that allows to hide certain UTxOs from results of CIP-30 calls, making them invisible to dApps. Among the wallets we support, it is currently only present in Eternl: + +![Eternl UTxO locking feature in UI](./images/eternl-utxo-locking.png) + +UTxO locking does not play well with `syncWalletWithTxInputs` and `syncWalletWithTransaction`, because the set of UTxOs these functions poll for may contain locked UTxOs, and thus the synchronization can fail by timeout (either with an exception or a console warning, see `errorOnTimeout` configuration parameter above). + +However, the developer can easily safeguard against this problem: + +- `utxosAt` should not be used to get UTxOs present on wallet's addresses. Instead, `Contract.Wallet.getWalletUtxos` should be used. + +### Historical notes + +Initially we underestimated the problem of UTxO set inconsistency between query layers and decided to just use our backend as a source of truth all the time, because sticking to CIP-30 just wouldn't be enough for our needs. This decision led to subtle and non-reproducible problems in our clients dApps, so we wouldn't suggest anyone to follow this path. + +Conceptually, the wallet is responsible for *owning* the UTxOs, so wallet developers may implement behaviors that would prevent us from making general assumptions about the wallet state. + +CTL `v5.1.0` introduces better consistency guarantees while not requiring the developer to change any code on their side - for the price of slight delays during the app runtime. diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 6477e4c4d..99c7acc0d 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -46,6 +46,7 @@ import Ctl.Internal.Address ( addressPaymentValidatorHash , addressStakeValidatorHash ) as Address +import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.Contract.Wallet ( getWalletAddresses , getWalletCollateral @@ -178,6 +179,14 @@ getWalletAddressesWithNetworkTag = do getWalletCollateral :: Contract (Maybe (Array TransactionUnspentOutput)) getWalletCollateral = do + whenM + ( asks + ( _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + ) + syncBackendWithWallet mtxUnspentOutput <- Contract.getWalletCollateral for mtxUnspentOutput $ traverse $ liftedM diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 40fca1d03..15794ad3b 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -14,8 +14,11 @@ module Contract.Config , mainnetEternlConfig , mainnetLodeConfig , mainnetNuFiConfig + , defaultSynchronizationParams + , disabledSynchronizationParams + , strictSynchronizationParams + , defaultTimeParams , module Contract.Address - , module Ctl.Internal.Contract.Monad , module Data.Log.Level , module Data.Log.Message , module Ctl.Internal.Deserialization.Keys @@ -28,7 +31,16 @@ module Contract.Config import Contract.Address (NetworkId(MainnetId, TestnetId)) import Ctl.Internal.Contract.Hooks (Hooks, emptyHooks) as X import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Contract.Monad (ContractParams) +import Ctl.Internal.Contract.Monad + ( ContractParams + , ContractSynchronizationParams + , ContractTimeParams + ) +import Ctl.Internal.Contract.Monad + ( ContractParams + , ContractSynchronizationParams + , ContractTimeParams + ) as X import Ctl.Internal.Contract.QueryBackend ( BlockfrostBackendParams , CtlBackend @@ -86,17 +98,69 @@ testnetConfig = , customLogger: Nothing , suppressLogs: false , hooks: emptyHooks - , timeParams: - { syncWallet: - -- As clarified in Eternl discord, they synchronize with the server every 2 - -- minutes, so 125 seconds would probably be enough. - -- For other wallets, it is not very important - { delay: Milliseconds 1_000.0, timeout: Seconds 130.0 } - , syncBackend: - { delay: Milliseconds 3_000.0, timeout: Seconds 100.0 } - , awaitTxConfirmed: - { delay: Milliseconds 1_000.0, timeout: Nothing } + , timeParams: defaultTimeParams + , synchronizationParams: defaultSynchronizationParams + } + +-- | - `syncWallet` specifies delay and timeout for `syncWalletWithTransaction` +-- | and `syncWalletWithTxInputs` synchronization primitives. +-- | See `doc/query-layers.md` for more info. +-- | - `syncBackend` specifies delay and timeout for `syncBackendWithWallet` +-- | synchronization primitive. +-- | See `doc/query-layers.md` for more info. +-- | - `awaitTxConfirmed` specifies default delay and timeout for +-- | `awaitTxConfirmed` call. +defaultTimeParams :: ContractTimeParams +defaultTimeParams = + { syncWallet: + -- As clarified in Eternl discord, they synchronize with the server every 2 + -- minutes, so 125 seconds would probably be enough. + -- For other wallets, it is not very important + { delay: Milliseconds 1_000.0, timeout: Seconds 125.0 } + , syncBackend: + -- Operations are costly, so the delay is 3 set to seconds + { delay: Milliseconds 3_000.0, timeout: Seconds 120.0 } + , awaitTxConfirmed: + -- CIP-30 calls are cheap, so the delay can be just 1 second + { delay: Milliseconds 1_000.0, timeout: Nothing } + } + +-- | Default synchronization parameters with all synchronization primitives +-- | enabled. `errorOnTimeout` options are all set to `false`. +-- | See `doc/query-layers.md` for more info. +defaultSynchronizationParams :: ContractSynchronizationParams +defaultSynchronizationParams = + { syncBackendWithWallet: + { errorOnTimeout: false, beforeCip30Methods: true, beforeBalancing: true } + , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: true } + , syncWalletWithTransaction: + { errorOnTimeout: false, beforeTxConfirmed: true } + } + +-- | Synchronization parameters with all synchronization primitives enabled +-- | and `errorOnTimeout` values set to `true`. +-- | See `doc/query-layers.md` for more info. +strictSynchronizationParams :: ContractSynchronizationParams +strictSynchronizationParams = + { syncBackendWithWallet: + { errorOnTimeout: true, beforeCip30Methods: true, beforeBalancing: true } + , syncWalletWithTxInputs: { errorOnTimeout: true, beforeCip30Sign: true } + , syncWalletWithTransaction: { errorOnTimeout: true, beforeTxConfirmed: true } + } + +-- | Synchronization parameters that make all synchronization primitives +-- | a no-op. +-- | See `doc/query-layers.md` for more info. +disabledSynchronizationParams :: ContractSynchronizationParams +disabledSynchronizationParams = + { syncBackendWithWallet: + { errorOnTimeout: false + , beforeCip30Methods: false + , beforeBalancing: false } + , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: false } + , syncWalletWithTransaction: + { errorOnTimeout: false, beforeTxConfirmed: false } } testnetNamiConfig :: ContractParams diff --git a/src/Contract/Sync.purs b/src/Contract/Sync.purs new file mode 100644 index 000000000..56e80df71 --- /dev/null +++ b/src/Contract/Sync.purs @@ -0,0 +1,9 @@ +module Contract.Sync + ( module X + ) where + +import Ctl.Internal.BalanceTx.Sync + ( syncBackendWithWallet + , syncWalletWithTransaction + , syncWalletWithTxInputs + ) as X diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index de9736d77..eaedaff91 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -11,10 +11,15 @@ module Contract.Utxos import Prelude +import Contract.Log (logWarn') import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) import Control.Monad.Reader.Class (asks) -import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) +import Ctl.Internal.BalanceTx.Sync + ( getControlledAddresses + , isCip30Wallet + , syncBackendWithWallet + ) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletBalance, getWalletUtxos) as Utxos import Ctl.Internal.Plutus.Conversion @@ -29,19 +34,38 @@ import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Maybe (Maybe) +import Data.Set (member) as Set import Effect.Aff.Class (liftAff) --- | Queries for utxos at the given Plutus `Address`. +-- | Queries for UTxOs at the given `Address`. +-- | +-- | **Note**: calling `utxosAt` on an address controlled by the light +-- | wallet may result in hard-to-debug problems with wallet interactions. +-- | The developers should not assume that all UTxOs that are available on +-- | wallet addresses are actually spendable. See the docs for UTxO locking +-- | in `doc/query-layers.md`. Using `getWalletUtxos` is a way to avoid the +-- | potential problems. This function will raise a warning in the logs if +-- | wallet address is used. utxosAt :: forall (address :: Type) . PlutusAddress address => address -> Contract UtxoMap -utxosAt address = do +utxosAt addressAny = do networkId <- asks _.networkId + let address = fromPlutusAddress networkId $ getAddress addressAny queryHandle <- getQueryHandle - let cardanoAddr = fromPlutusAddress networkId (getAddress address) - cardanoUtxoMap <- liftedE $ liftAff $ queryHandle.utxosAt cardanoAddr + whenM isCip30Wallet do + walletAddresses <- getControlledAddresses + when (address `Set.member` walletAddresses) do + logWarn' $ + "utxosAt: you are calling `utxosAt` on an address controlled by the" + <> " wallet. This may result in hard-to-debug problems with wallet " + <> "interactions. The developers should not assume that all UTxOs " + <> "that are available on wallet addresses are actually spendable. " + <> "See the docs for UTxO locking in `doc/query-layers.md`. Using " + <> "`getWalletUtxos` is a way to avoid the potential problems." + cardanoUtxoMap <- liftedE $ liftAff $ queryHandle.utxosAt address liftContractM "utxosAt: failed to convert utxos" $ toPlutusUtxoMap cardanoUtxoMap @@ -59,7 +83,12 @@ getUtxo oref = do getWalletBalance :: Contract (Maybe Value) getWalletBalance = do - syncBackendWithWallet + whenM + ( asks $ _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + syncBackendWithWallet Utxos.getWalletBalance <#> map toPlutusValue -- | Similar to `utxosAt` called on own address, except that it uses CIP-30 @@ -71,7 +100,13 @@ getWalletBalance = do getWalletUtxos :: Contract (Maybe UtxoMap) getWalletUtxos = do - syncBackendWithWallet + whenM + ( asks $ + _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + syncBackendWithWallet mCardanoUtxos <- Utxos.getWalletUtxos for mCardanoUtxos $ liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index a70ff2893..38c961570 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -10,6 +10,7 @@ import Contract.Log (logTrace') import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (trace) as Logger +import Control.Monad.Reader (asks) import Control.Parallel (parTraverse) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionState @@ -187,7 +188,13 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do case mbSrcAddrs of -- Use wallet UTxOs. Nothing -> do - syncBackendWithWallet + whenM + ( asks $ _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeBalancing + ) + do + syncBackendWithWallet note CouldNotGetUtxos <$> do Wallet.getWalletUtxos -- Use UTxOs from source addresses @@ -197,7 +204,7 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do -- we can't query the wallet for available UTxOs, because there's no -- way to tell it to return UTxOs only from specific subset of the -- addresses controlled by a CIP-30 wallet. - -- `utxosAt` calls are expensive when there are a lot of wallets to + -- `utxosAt` calls are expensive when there are a lot of addresses to -- check. parTraverse (queryHandle.utxosAt >>> liftAff >>> map hush) srcAddrs <#> traverse (note CouldNotGetUtxos) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 302995890..b2f68b543 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -3,8 +3,9 @@ module Ctl.Internal.BalanceTx.Sync ( syncBackendWithWallet , syncWalletWithTransaction - , syncWalletWithInputs + , syncWalletWithTxInputs , isCip30Wallet + , getControlledAddresses ) where import Prelude @@ -29,7 +30,6 @@ import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Wallet (cip30Wallet) import Data.Array as Array import Data.Bifunctor (bimap) -import Data.Foldable (all) import Data.Map as Map import Data.Maybe (Maybe, fromMaybe, isJust) import Data.Newtype (unwrap) @@ -37,32 +37,45 @@ import Data.Set (Set) import Data.Set as Set import Data.Time.Duration (Milliseconds, fromDuration) import Data.Traversable (traverse) -import Data.Tuple (fst) +import Data.Tuple (Tuple(Tuple), fst, snd) import Data.Tuple.Nested ((/\)) import Effect.Aff (delay) import Effect.Aff.Class (liftAff) -import Effect.Exception (error) +import Effect.Class (liftEffect) +import Effect.Exception (error, throw) -- | Wait until all UTxOs that the wallet returns are visible in the -- | query layer. syncBackendWithWallet :: Contract Unit syncBackendWithWallet = whenM isCip30Wallet do - { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncBackend) + { delay: delayMs, timeout } <- asks $ _.timeParams >>> _.syncBackend + { errorOnTimeout } <- asks $ + _.synchronizationParams >>> _.syncBackendWithWallet let - sync :: Contract Unit - sync = do + sync :: Array TransactionInput -> Contract Unit + sync alreadyFound = do utxos <- getWalletUtxos <#> fromMaybe Map.empty - allFound <- all isJust <$> traverse getUtxo' - (fst <$> Map.toUnfoldableUnordered utxos :: Array TransactionInput) - if allFound then do + let + -- all utxos from the wallet, except of those we have already seen + notYetFoundUtxos :: Array TransactionInput + notYetFoundUtxos = + Array.filter (not <<< flip Array.elem alreadyFound) + $ fst <$> Map.toUnfoldableUnordered utxos + -- split the UTxOs into known to the query layer and not yet known + { yes: newlyFound, no: stillNotFound } <- Array.partition (snd >>> isJust) + <$> traverse (\input -> Tuple input <$> getUtxo' input) notYetFoundUtxos + if Array.null stillNotFound then do logTrace' "syncBackendWithWallet: synchronization finished" else do logTrace' $ "syncBackendWithWallet: waiting for query layer state " <> "synchronization with the wallet..." liftAff (delay delayMs) - sync - parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] + sync (map fst newlyFound <> alreadyFound) + parOneOf + [ sync [] + , waitAndError errorOnTimeout (fromDuration timeout) errorMessage + ] where errorMessage = "Failed to wait for wallet state synchronization (timeout). " <> "Continuing anyway. Consider increasing `timeParams.syncBackend.timeout`" @@ -74,21 +87,25 @@ syncBackendWithWallet = whenM isCip30Wallet do -- | This function does not have any effect if `KeyWallet` is used. -- | This function does not have any effect if none of the outputs are at -- | addresses controlled by the wallet. +-- | The assumption is that the transaction has at least one output and that it +-- | hasn't been consumed by another transaction yet. -- | You don't need to use this function if you use `awaitTxConfirmed*`. syncWalletWithTransaction :: TransactionHash -> Contract Unit syncWalletWithTransaction txHash = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) + { errorOnTimeout } <- asks $ + _.synchronizationParams >>> _.syncWalletWithTransaction queryHandle <- getQueryHandle - let sync :: Contract Unit sync = do inputs <- map fst <<< Map.toUnfoldable <<< fromMaybe Map.empty <$> getWalletUtxos + -- We can wait for just one, because once we have it, we know that + -- the tx effects have propagated to the wallet (Txs are atomic) if Array.any (\input -> (unwrap input).transactionId == txHash) inputs then do logTrace' "syncWalletWithTransaction: synchronization finished" - pure unit else do logTrace' $ "syncWalletWithTransaction: waiting for wallet state synchronization " @@ -103,15 +120,18 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do queryHandle.getOutputAddressesByTxHash txHash <#> bimap (error <<< show) Set.fromFoldable if Set.isEmpty (Set.intersection ownAddresses outputAddresses) then do - logWarn' $ - "Skipping wait for wallet state synchronization, because the " <> - "transaction does not include outputs controlled by this wallet." + logWarn' $ "syncWalletWithTransaction: " + <> "Skipping wait for wallet state synchronization, because the " + <> "transaction does not include outputs controlled by this wallet." logTrace' $ "Wallet addresses: " <> show ownAddresses logTrace' $ "Transaction output addresses: " <> show ownAddresses else do - parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] + parOneOf + [ sync + , waitAndError errorOnTimeout (fromDuration timeout) errorMessage + ] where errorMessage = "syncWalletWithTransaction: Failed to wait for wallet state " @@ -119,15 +139,20 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do <> " in use in the wallet. Consider increasing " <> "`timeParams.syncWallet.timeout` in `ContractParams`" --- | Waits untill all provided transaction inputs appear in the UTxO +-- | Waits until all provided transaction inputs appear in the UTxO -- | set provided by the wallet. -- | This is a hacky solution to the problem of wallets not seeing UTxOs that -- | hasn't been fully confirmed at the moment of a `sign()` call. --- | Since it can't detect UTxO origin, it can't decide which of the private --- | keys to use for signing. As a result, we get `MissingVKeyWitnesses`. -syncWalletWithInputs :: Array TransactionInput -> Contract Unit -syncWalletWithInputs txInputs = do +-- | The problem is, since the wallet can't detect UTxO origin, it can't decide +-- | which of the private keys to use for signing. +-- | As a result, we get `MissingVKeyWitnesses`. +-- | You don't have to call this function before `signTx`, because its use is +-- | enabled by default. +syncWalletWithTxInputs :: Array TransactionInput -> Contract Unit +syncWalletWithTxInputs txInputs = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) + { errorOnTimeout } <- asks $ + _.synchronizationParams >>> _.syncWalletWithTxInputs ownAddrs <- getControlledAddresses ownInputUtxos <- txInputs # traverse @@ -142,7 +167,7 @@ syncWalletWithInputs txInputs = do ) ) logTrace' $ - "syncWalletWithInputs: waiting for UTxO set to synchronize with the " + "syncWalletWithTxInputs: waiting for UTxO set to synchronize with the " <> "following inputs: " <> show ownInputUtxos let @@ -150,26 +175,30 @@ syncWalletWithInputs txInputs = do walletUtxos <- Utxos.getWalletUtxos <#> fromMaybe Map.empty let difference = ownInputUtxos `Map.difference` walletUtxos if Map.isEmpty difference then do - logTrace' "syncWalletWithInputs: synchronization finished" + logTrace' "syncWalletWithTxInputs: synchronization finished" else do - logTrace' $ "syncWalletWithInputs: remaining UTxOs that the wallet " + logTrace' $ "syncWalletWithTxInputs: remaining UTxOs that the wallet " <> "does not know about: " <> show difference liftAff $ delay delayMs sync - parOneOf [ sync, waitAndLogError (fromDuration timeout) errorMessage ] + parOneOf + [ sync, waitAndError errorOnTimeout (fromDuration timeout) errorMessage ] where errorMessage = - "syncWalletWithInputs: timeout while waiting for wallet" + "syncWalletWithTxInputs: timeout while waiting for wallet" <> " UTxO set and CTL query layer UTxO set to synchronize " <> "(see `timeParams.syncWallet.timeout` in `ContractParams`)" --- | Without plutus conversion +-- | A version without plutus conversion for internal use. getUtxo' :: TransactionInput -> Contract (Maybe Cardano.TransactionOutput) getUtxo' oref = do queryHandle <- getQueryHandle liftedE $ liftAff $ queryHandle.getUtxoByOref oref +-- | Get all addresses contolled by a wallet: +-- | `getUsedAddresses`, `getUnusedAddresses` and `getChangeAddress` combined. +-- | Reward addresses are not included. getControlledAddresses :: Contract (Set Address) getControlledAddresses = do used <- getWalletAddresses <#> Set.fromFoldable @@ -180,7 +209,10 @@ getControlledAddresses = do isCip30Wallet :: Contract Boolean isCip30Wallet = asks $ isJust <<< (cip30Wallet <=< _.wallet) -waitAndLogError :: Milliseconds -> String -> Contract Unit -waitAndLogError timeout errorMessage = do +-- | If the first argument is true, it will throw. Otherwise, that would be a +-- | console.error call. +waitAndError :: Boolean -> Milliseconds -> String -> Contract Unit +waitAndError errorOnTimeout timeout errorMessage = do liftAff $ delay timeout - logError' errorMessage + if errorOnTimeout then liftEffect $ throw errorMessage + else logError' errorMessage diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index 589f7e98d..d3c28afe2 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -88,7 +88,12 @@ awaitTxConfirmedWithTimeout timeoutSeconds txHash = do when isBlockfrost do tryUntilTrue delayMs (utxosPresentForTxHash txHash) for_ confirmTxDelay (liftAff <<< delay <<< fromDuration) - syncWalletWithTransaction txHash + whenM + ( asks $ _.synchronizationParams + >>> _.syncWalletWithTransaction + >>> _.beforeTxConfirmed + ) + $ syncWalletWithTransaction txHash pure true -- Perform the check until it returns true. @@ -124,7 +129,12 @@ awaitTxConfirmedWithTimeoutSlots timeoutSlots txHash = do tryUntilTrue delayMs do checkSlotLimit limitSlot utxosPresentForTxHash txHash - syncWalletWithTransaction txHash + whenM + ( asks $ _.synchronizationParams + >>> _.syncWalletWithTransaction + >>> _.beforeTxConfirmed + ) + $ syncWalletWithTransaction txHash where addSlots :: Int -> Slot -> Contract Slot addSlots n slot = @@ -132,11 +142,13 @@ awaitTxConfirmedWithTimeoutSlots timeoutSlots txHash = do unwrap slot `BigNum.add` BigNum.fromInt n getCurrentSlot :: Contract Slot - getCurrentSlot = getChainTip >>= case _ of - Chain.TipAtGenesis -> do - liftAff $ delay $ wrap 1000.0 - getCurrentSlot - Chain.Tip (Chain.ChainTip { slot }) -> pure slot + getCurrentSlot = do + { delay: delayMs } <- asks $ _.timeParams >>> _.awaitTxConfirmed + getChainTip >>= case _ of + Chain.TipAtGenesis -> do + liftAff $ delay delayMs + getCurrentSlot + Chain.Tip (Chain.ChainTip { slot }) -> pure slot checkSlotLimit :: Slot -> Contract Unit checkSlotLimit limitSlot = do diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index a79175dd9..d371ef09f 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -3,6 +3,7 @@ module Ctl.Internal.Contract.Monad , ContractEnv , ContractParams , ContractTimeParams + , ContractSynchronizationParams , LedgerConstants , ParContract(ParContract) , mkContractEnv @@ -182,6 +183,7 @@ type ContractEnv = , usedTxOuts :: UsedTxOuts , ledgerConstants :: LedgerConstants , timeParams :: ContractTimeParams + , synchronizationParams :: ContractSynchronizationParams } -- | Initializes a `Contract` environment. Does not ensure finalization. @@ -204,8 +206,12 @@ mkContractEnv params = do wallet <- buildWallet pure $ merge { wallet } -- Compose the sub-builders together - in b1 >>> b2 >>> merge { usedTxOuts, timeParams: params.timeParams } - + in + b1 >>> b2 >>> merge + { usedTxOuts + , timeParams: params.timeParams + , synchronizationParams: params.synchronizationParams + } pure $ build envBuilder constants where logger :: Logger @@ -349,9 +355,21 @@ withContractEnv params action = do -- | Delays and timeouts for internal query functions. type ContractTimeParams = - { syncWallet :: { delay :: Milliseconds, timeout :: Seconds } + { awaitTxConfirmed :: { delay :: Milliseconds, timeout :: Maybe Seconds } + , syncWallet :: { delay :: Milliseconds, timeout :: Seconds } , syncBackend :: { delay :: Milliseconds, timeout :: Seconds } - , awaitTxConfirmed :: { delay :: Milliseconds, timeout :: Maybe Seconds } + } + +type ContractSynchronizationParams = + { syncBackendWithWallet :: + { errorOnTimeout :: Boolean + , beforeCip30Methods :: Boolean + , beforeBalancing :: Boolean + } + , syncWalletWithTxInputs :: + { errorOnTimeout :: Boolean, beforeCip30Sign :: Boolean } + , syncWalletWithTransaction :: + { errorOnTimeout :: Boolean, beforeTxConfirmed :: Boolean } } -- | Options to construct an environment for a `Contract` to run. @@ -371,6 +389,7 @@ type ContractParams = , suppressLogs :: Boolean , hooks :: Hooks , timeParams :: ContractTimeParams + , synchronizationParams :: ContractSynchronizationParams } -------------------------------------------------------------------------------- diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index 6b2fa4c33..fd940d56a 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -5,7 +5,7 @@ module Ctl.Internal.Contract.Sign import Prelude import Control.Monad.Reader (asks) -import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithInputs) +import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithTxInputs) import Ctl.Internal.Cardano.Types.Transaction (_body, _inputs, _witnessSet) import Ctl.Internal.Cardano.Types.Transaction as Transaction import Ctl.Internal.Contract.Monad (Contract) @@ -30,7 +30,13 @@ signTransaction tx = do hooks <- asks _.hooks for_ hooks.beforeSign (void <<< liftEffect <<< try) whenM isCip30Wallet do - syncWalletWithInputs $ fromFoldable $ tx ^. _body <<< _inputs + whenM + ( asks $ _.synchronizationParams + >>> _.syncWalletWithTxInputs + >>> _.beforeCip30Sign + ) + do + syncWalletWithTxInputs $ fromFoldable $ tx ^. _body <<< _inputs withWallet case _ of Nami nami -> liftAff $ callCip30Wallet nami \nw -> flip nw.signTx tx Gero gero -> liftAff $ callCip30Wallet gero \nw -> flip nw.signTx tx diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 983338b24..5f9b2d438 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -17,7 +17,11 @@ import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat import Contract.Address (NetworkId(MainnetId)) -import Contract.Config (testnetConfig) +import Contract.Config + ( defaultSynchronizationParams + , defaultTimeParams + , testnetConfig + ) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither) import Control.Monad.State (State, execState, modify_) @@ -192,7 +196,7 @@ whenError whenErrorAction action = do when (isLeft res) whenErrorAction liftEither res --- | Lifts the utxo distributions of each test out of Mote, into a combined +-- | Lifts the UTxO distributions of each test out of Mote, into a combined -- | distribution. Adapts the tests to pick their distribution out of the -- | combined distribution. -- | NOTE: Skipped tests still have their distribution generated. @@ -382,10 +386,10 @@ configCheck cfg = do "- " <> service <> " (port: " <> show (UInt.toInt port) <> ")\n" -- | Start the plutip cluster, initializing the state with the given --- | utxo distribution. Also initializes an extra payment key (aka --- | `ourKey`) with some utxos for use with further plutip +-- | UTxO distribution. Also initializes an extra payment key (aka +-- | `ourKey`) with some UTxOs for use with further plutip -- | setup. `ourKey` has funds proportional to the total amount of the --- | utxos in the passed distribution, so it can be used to handle +-- | UTxOs in the passed distribution, so it can be used to handle -- | transaction fees. startPlutipCluster :: PlutipConfig @@ -433,16 +437,16 @@ startPlutipCluster cfg keysToGenerate = do Just { head: PrivateKeyResponse ourKey, tail } -> pure $ PrivatePaymentKey ourKey /\ response { privateKeys = tail } --- | Calculate the initial utxos needed for `ourKey` to cover +-- | Calculate the initial UTxOs needed for `ourKey` to cover -- | transaction costs for the given initial distribution ourInitialUtxos :: InitialUTxODistribution -> InitialUTxOs ourInitialUtxos utxoDistribution = let total = Array.foldr (sum >>> add) zero utxoDistribution in - [ -- Take the total value of the utxos and add some extra on top + [ -- Take the total value of the UTxOs and add some extra on top -- of it to cover the possible transaction fees. Also make sure - -- we don't request a 0 ada utxo + -- we don't request a 0 ada UTxO total + BigInt.fromInt 1_000_000_000 ] @@ -594,7 +598,9 @@ mkClusterContractEnv plutipCfg logger customLogger = do , wallet: Nothing , usedTxOuts , ledgerConstants - , timeParams: testnetConfig.timeParams -- no effect when KeyWallet is used + -- timeParams have no effect when KeyWallet is used + , timeParams: defaultTimeParams + , synchronizationParams: defaultSynchronizationParams } defaultRetryPolicy :: RetryPolicy From 480856d3f167019785d477002f27acaa44c63cfb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 24 Feb 2023 20:30:35 +0400 Subject: [PATCH 045/478] Update query-layers.md --- doc/query-layers.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/query-layers.md b/doc/query-layers.md index f5b1a9807..2294ce242 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -91,7 +91,7 @@ Note that it is possible to set `timeout` to `Seconds infinity`. ### Synchronization and wallet UTxO locking -`Contract.Utxos.utxosAt` function returns a set of UTxOs at a given address. It looks reasonable to assume that if we call utxosAt at all wallet's addresses we will get the same set of UTxOs that [CIP-30](https://cips.cardano.org/cips/cip30/) `getUtxos` method would return (eventually). But it is not, in fact, true. +`Contract.Utxos.utxosAt` function returns a set of UTxOs at a given address by calling Kupo or Blockfrost, depending on the backend. It seems reasonable to assume that if we call `utxosAt` at all wallet's addresses we will get the same set of UTxOs that [CIP-30](https://cips.cardano.org/cips/cip30/) `getUtxos` method would return (eventually). But it is not, in fact, true. *UTxO locking* is a wallet feature that allows to hide certain UTxOs from results of CIP-30 calls, making them invisible to dApps. Among the wallets we support, it is currently only present in Eternl: @@ -99,10 +99,12 @@ Note that it is possible to set `timeout` to `Seconds infinity`. UTxO locking does not play well with `syncWalletWithTxInputs` and `syncWalletWithTransaction`, because the set of UTxOs these functions poll for may contain locked UTxOs, and thus the synchronization can fail by timeout (either with an exception or a console warning, see `errorOnTimeout` configuration parameter above). -However, the developer can easily safeguard against this problem: +However, the developer can easily safeguard against this problem by following one simple rule: - `utxosAt` should not be used to get UTxOs present on wallet's addresses. Instead, `Contract.Wallet.getWalletUtxos` should be used. +`utxosAt` will log a warning to the console when used with a wallet's address. + ### Historical notes Initially we underestimated the problem of UTxO set inconsistency between query layers and decided to just use our backend as a source of truth all the time, because sticking to CIP-30 just wouldn't be enough for our needs. This decision led to subtle and non-reproducible problems in our clients dApps, so we wouldn't suggest anyone to follow this path. From 8d1c2f1b55138a365ec9310657414ff5351384af Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 24 Feb 2023 21:34:43 +0400 Subject: [PATCH 046/478] Fix warning --- src/Internal/Plutip/Server.purs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 5f9b2d438..a9d6b6346 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -20,7 +20,6 @@ import Contract.Address (NetworkId(MainnetId)) import Contract.Config ( defaultSynchronizationParams , defaultTimeParams - , testnetConfig ) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither) From 3c5fbad74c66411658709b9bc29a37b203c6ac26 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 25 Feb 2023 15:16:41 +0400 Subject: [PATCH 047/478] - Add `assertContractEqual` and `assertNewUtxosInWallet` - un-hardcode delay in `waitUntilSlot` - Update CHANGELOG --- CHANGELOG.md | 18 +++-- src/Contract/Config.purs | 4 +- src/Contract/Test/Assert.purs | 73 ++++++++++++++------- src/Contract/Wallet.purs | 3 +- src/Internal/Contract/AwaitTxConfirmed.purs | 6 +- src/Internal/Contract/Monad.purs | 8 ++- src/Internal/Contract/WaitUntilSlot.purs | 16 ++--- 7 files changed, 81 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41729ae22..823e79021 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,19 +56,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info. +- **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Automatic retries for `503 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) -- New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` +- New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Changed -- **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md). -- All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer. -- `ContractParams` has new fields: `ContractTimeParams` and `ContractSynchronizationParams`. Default values are `Contract.Config.defaultTimeParams` and `Contract.Config.defaultSynchronizationParams` . +- **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): + - `checkNewUtxosAtAddress` -> `assertNewUtxosAtAddress` + - `assertLovelaceDeltaAtAddress` -> `checkLovelaceDeltaAtAddress` + - `assertValueDeltaAtAddress` -> `assertValueDeltaAtAddress` +- New fields added to `ContractParams`: `ContractTimeParams` and `ContractSynchronizationParams`. Default values are `Contract.Config.defaultTimeParams` and `Contract.Config.defaultSynchronizationParams` . See [docs on query layers configuration](./doc/query-layers.md) for more info. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Fixed -- Performance issues when using Eternl in multi-address mode +- Performance issues when using Eternl in multi-address mode ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) - Fix a bug in UTxO selection in `Cip30Mock` (that affected `Cip30Mock` users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) - Fixed `bundlePursProject` crashing if build output directory exists ([#1438](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1438)) @@ -76,7 +80,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed -- `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail. +- `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ## [v5.0.0] diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 15794ad3b..6964c66ec 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -84,6 +84,7 @@ import Ctl.Internal.Wallet.Spec import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just, Nothing)) +import Data.Number (infinity) import Data.Time.Duration (Milliseconds(Milliseconds), Seconds(Seconds)) testnetConfig :: ContractParams @@ -122,7 +123,8 @@ defaultTimeParams = { delay: Milliseconds 3_000.0, timeout: Seconds 120.0 } , awaitTxConfirmed: -- CIP-30 calls are cheap, so the delay can be just 1 second - { delay: Milliseconds 1_000.0, timeout: Nothing } + { delay: Milliseconds 1_000.0, timeout: Seconds infinity } + , waitUntilSlot: { delay: Milliseconds 1_000.0 } } -- | Default synchronization parameters with all synchronization primitives diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index ca29cb68e..8128f5aea 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -17,47 +17,49 @@ module Contract.Test.Assert , ExpectedActual(ExpectedActual) , Label , Labeled(Labeled) - , assertContractExpectedActual , assertContract + , assertContractEqual + , assertContractExpectedActual , assertContractMaybe - , checkLovelaceDeltaAtAddress + , assertNewUtxosAtAddress + , assertNewUtxosInWallet , assertOutputHasDatum , assertOutputHasRefScript , assertTxHasMetadata - , checkValueDeltaAtAddress , assertionToCheck , checkExUnitsNotExceed , checkGainAtAddress , checkGainAtAddress' + , checkGainInWallet + , checkGainInWallet' , checkLossAtAddress , checkLossAtAddress' - , assertNewUtxosAtAddress + , checkLossInWallet + , checkLossInWallet' + , checkLovelaceDeltaAtAddress + , checkLovelaceDeltaInWallet , checkTokenDeltaAtAddress + , checkTokenDeltaInWallet , checkTokenGainAtAddress , checkTokenGainAtAddress' + , checkTokenGainInWallet + , checkTokenGainInWallet' , checkTokenLossAtAddress , checkTokenLossAtAddress' + , checkTokenLossInWallet + , checkTokenLossInWallet' + , checkValueDeltaAtAddress + , checkValueDeltaInWallet , collectAssertionFailures , label , noLabel + , printContractAssertionFailure + , printContractAssertionFailures + , printExpectedActual + , printLabeled , runChecks , tellFailure , unlabel - , printLabeled - , printExpectedActual - , printContractAssertionFailure - , printContractAssertionFailures - , checkValueDeltaInWallet - , checkLovelaceDeltaInWallet - , checkGainInWallet - , checkGainInWallet' - , checkLossInWallet - , checkLossInWallet' - , checkTokenDeltaInWallet - , checkTokenGainInWallet - , checkTokenGainInWallet' - , checkTokenLossInWallet - , checkTokenLossInWallet' ) where import Prelude @@ -74,6 +76,7 @@ import Contract.Transaction ) import Contract.Utxos (getWalletBalance, utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value, valueOf, valueToCoin') +import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.Error.Class as E import Control.Monad.Reader (ReaderT, ask, local, mapReaderT, runReaderT) @@ -103,8 +106,8 @@ import Data.Generic.Rep (class Generic) import Data.Lens (non, to, traversed, view, (%~), (^.), (^..)) import Data.Lens.Record (prop) import Data.List (List(Cons, Nil)) -import Data.Map (filterKeys, lookup, values) as Map -import Data.Maybe (Maybe(Just, Nothing), maybe) +import Data.Map (empty, filterKeys, lookup, values) as Map +import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) import Data.Newtype (unwrap) import Data.Show.Generic (genericShow) import Data.String (trim) as String @@ -280,7 +283,8 @@ type ContractCheck a = -- | Create a check that simply asserts something about a `Contract` result. -- | -- | If a `Contract` throws an exception, the assertion is never checked, --- | because the result is never computed. +-- | because the result is never computed. In this case, a warning will be +-- | printed, containing the given description. assertionToCheck :: forall (a :: Type) . String @@ -323,6 +327,19 @@ assertContractExpectedActual mkAssertionFailure expected actual = assertContract (mkAssertionFailure $ ExpectedActual expected actual) (expected == actual) +assertContractEqual + :: forall (a :: Type) + . Eq a + => Show a + => a + -> a + -> ContractAssertion Unit +assertContractEqual = assertContractExpectedActual + \(ExpectedActual expected actual) -> CustomFailure $ + "assertContractEqual: failure, expected:\n" <> show expected + <> "\ngot:\n" + <> show actual + -- | Like `runChecks`, but does not throw a user-readable report, collecting -- | the exceptions instead. collectAssertionFailures @@ -372,6 +389,7 @@ runChecks assertions contract = do ----------------------- UTxOs --------------------------------------------------- +-- | Assert some property of address UTxOs created by a Transaction. assertNewUtxosAtAddress :: forall (a :: Type) . Labeled Address @@ -383,6 +401,17 @@ assertNewUtxosAtAddress addr txHash check = check $ Array.fromFoldable $ Map.values $ Map.filterKeys (\oref -> (unwrap oref).transactionId == txHash) utxos +-- | Assert some property of wallet UTxOs created by a Transaction. +assertNewUtxosInWallet + :: forall (a :: Type) + . TransactionHash + -> (Array TransactionOutputWithRefScript -> ContractAssertion a) + -> ContractAssertion a +assertNewUtxosInWallet txHash check = + lift getWalletUtxos >>= fromMaybe Map.empty >>> \utxos -> + check $ Array.fromFoldable $ Map.values $ + Map.filterKeys (\oref -> (unwrap oref).transactionId == txHash) utxos + ------------------------ Execution units ---------------------------------------- -- | Sets a limit on `ExUnits` budget. All ExUnits values of all submitted diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 1caec5912..2713746e7 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -3,7 +3,6 @@ module Contract.Wallet ( mkKeyWalletFromPrivateKeys , withKeyWallet , module Contract.Address - , module Contract.Utxos , module X , module Deserialization.Keys , module Wallet @@ -16,7 +15,7 @@ import Prelude import Contract.Address (getWalletAddress, getWalletCollateral) import Contract.Monad (Contract) -import Contract.Utxos (getWalletUtxos) as Contract.Utxos +import Contract.Utxos (getWalletUtxos) as X import Control.Monad.Reader (local) import Ctl.Internal.Contract.Wallet ( getChangeAddress diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index d3c28afe2..8d6e65ea1 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -23,10 +23,10 @@ import Ctl.Internal.Types.Transaction , TransactionInput(TransactionInput) ) import Data.Either (either) -import Data.Maybe (fromMaybe, isJust, maybe) +import Data.Maybe (isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Number (infinity) -import Data.Time.Duration (Milliseconds, Seconds(Seconds), fromDuration) +import Data.Time.Duration (Milliseconds, Seconds, fromDuration) import Data.Traversable (for_) import Data.UInt as UInt import Effect.Aff (delay) @@ -41,7 +41,7 @@ import Effect.Exception (throw) awaitTxConfirmed :: TransactionHash -> Contract Unit awaitTxConfirmed txHash = do { timeout } <- asks (_.timeParams >>> _.awaitTxConfirmed) - awaitTxConfirmedWithTimeout (fromMaybe (Seconds infinity) timeout) txHash + awaitTxConfirmedWithTimeout timeout txHash -- | Same as `awaitTxConfirmed`, but allows to specify a timeout in seconds for waiting. -- | Throws an exception on timeout. diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index d371ef09f..d09787fd7 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -354,8 +354,14 @@ withContractEnv params action = do -------------------------------------------------------------------------------- -- | Delays and timeouts for internal query functions. +-- | +-- | - `awaitTxConfirmed.delay` - how frequently should we query for Tx in +-- | `Contract.Transaction.awaitTxConfirmed` +-- | +-- | - For info on `syncBackend` and syncWallet` see `doc/query-layers.md` type ContractTimeParams = - { awaitTxConfirmed :: { delay :: Milliseconds, timeout :: Maybe Seconds } + { awaitTxConfirmed :: { delay :: Milliseconds, timeout :: Seconds } + , waitUntilSlot :: { delay :: Milliseconds } , syncWallet :: { delay :: Milliseconds, timeout :: Seconds } , syncBackend :: { delay :: Milliseconds, timeout :: Seconds } } diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index c4266223d..ff9cf3478 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -9,7 +9,7 @@ import Prelude import Contract.Log (logTrace') import Control.Monad.Error.Class (liftEither) -import Control.Monad.Reader.Class (asks) +import Control.Monad.Reader (asks) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) @@ -44,6 +44,7 @@ import Effect.Now (now) waitUntilSlot :: Slot -> Contract Chain.Tip waitUntilSlot futureSlot = do queryHandle <- getQueryHandle + { delay: retryDelay } <- asks $ _.timeParams >>> _.waitUntilSlot getChainTip >>= case _ of tip@(Chain.Tip (Chain.ChainTip { slot })) | slot >= futureSlot -> pure tip @@ -55,10 +56,6 @@ waitUntilSlot futureSlot = do slotLengthMs <- map getSlotLength $ liftEither $ lmap (const $ error "Unable to get current Era summary") $ findSlotEraSummary eraSummaries slot - -- `timePadding` in slots - -- If there are less than `slotPadding` slots remaining, start querying for chainTip - -- repeatedly, because it's possible that at any given moment Ogmios suddenly - -- synchronizes with node that is also synchronized with global time. getLag eraSummaries systemStart slot >>= logLag slotLengthMs futureTime <- liftEffect @@ -87,9 +84,6 @@ waitUntilSlot futureSlot = do liftAff $ delay retryDelay waitUntilSlot futureSlot where - retryDelay :: Milliseconds - retryDelay = wrap 1000.0 - logLag :: Number -> Milliseconds -> Contract Unit logLag slotLengthMs (Milliseconds lag) = do logTrace' $ @@ -97,7 +91,7 @@ waitUntilSlot futureSlot = do <> show (lag / slotLengthMs) <> " slots." --- | Calculate difference between estimated POSIX time of given slot +-- | Calculate difference between estimated POSIX time of a given slot -- | and current time. getLag :: EraSummaries @@ -118,8 +112,8 @@ getLag eraSummaries sysStart nowSlot = do BigInt.fromNumber nowMs pure $ wrap $ BigInt.toNumber $ nowMsBigInt - unwrap nowPosixTime --- | Estimate how long we want to wait if we want to wait until `timePadding` --- | milliseconds before a given `POSIXTime`. +-- | Estimate how long we want to wait if we want to wait for a given +-- | `POSIXTime` starting from now. estimateDelayUntil :: POSIXTime -> Contract Milliseconds estimateDelayUntil futureTimePosix = do futureTimeSec <- posixTimeToSeconds futureTimePosix From 7293fcfa2e0336f06c99f039b7d1c0a2a3256d67 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 25 Feb 2023 17:36:09 +0400 Subject: [PATCH 048/478] Add `withoutSync` function --- src/Contract/Sync.purs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Contract/Sync.purs b/src/Contract/Sync.purs index 56e80df71..489284c12 100644 --- a/src/Contract/Sync.purs +++ b/src/Contract/Sync.purs @@ -1,9 +1,21 @@ +-- | A module for wallet/backend synchronization control. +-- | See `doc/query-layers.md`. module Contract.Sync ( module X + , withoutSync ) where +import Contract.Config (disabledSynchronizationParams) +import Contract.Monad (Contract) +import Control.Monad.Reader (local) import Ctl.Internal.BalanceTx.Sync ( syncBackendWithWallet , syncWalletWithTransaction , syncWalletWithTxInputs ) as X + +-- | A helper to set `synchronizationParams` to `disabledSynchronizationParams` +-- | locally. +withoutSync :: forall (a :: Type). Contract a -> Contract a +withoutSync = do + local \cfg -> cfg { synchronizationParams = disabledSynchronizationParams } From 59e47d1ec6e8ccc1695f37e5a2613dc1a876b784 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 27 Feb 2023 16:13:31 +0400 Subject: [PATCH 049/478] Sort collateral outputs returned by the wallet in descending order before consuming when selecting collateral --- src/Internal/Contract/Wallet.purs | 37 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 5d5441b46..c10a038da 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -21,7 +21,7 @@ import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) -import Ctl.Internal.Cardano.Types.Value (Value) +import Ctl.Internal.Cardano.Types.Value (Value, valueToCoin) import Ctl.Internal.Cardano.Types.Value (geq, lovelaceValueOf) as Value import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos) @@ -47,6 +47,7 @@ import Data.Array as Array import Data.BigInt as BigInt import Data.Either (hush) import Data.Foldable (fold, foldl) +import Data.Function (on) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) @@ -155,23 +156,35 @@ getWalletCollateral = do -} targetCollateral = Value.lovelaceValueOf $ BigInt.fromInt 5_000_000 utxoValue u = (unwrap (unwrap u).output).amount - sufficientUtxos = mbCollateralUTxOs <#> \colUtxos -> - foldl - ( \us u -> - if foldMap utxoValue us `Value.geq` targetCollateral then us - else cons u us + + -- used for sorting by ADA value in descending order + compareNegatedAdaValues + :: TransactionUnspentOutput -> TransactionUnspentOutput -> Ordering + compareNegatedAdaValues = + compare `on` + ( unwrap >>> _.output >>> unwrap >>> _.amount >>> valueToCoin >>> unwrap + >>> negate ) - [] - colUtxos - for_ sufficientUtxos \collateralUTxOs -> do + consumeUntilEnough + :: Array TransactionUnspentOutput + -> TransactionUnspentOutput + -> Array TransactionUnspentOutput + consumeUntilEnough utxos utxo = + if foldMap utxoValue utxos `Value.geq` targetCollateral then utxos + else cons utxo utxos + mbSufficientUtxos = mbCollateralUTxOs <#> + foldl consumeUntilEnough [] <<< Array.sortBy compareNegatedAdaValues + for_ mbSufficientUtxos \sufficientUtxos -> do let tooManyCollateralUTxOs = - UInt.fromInt (Array.length collateralUTxOs) > + UInt.fromInt (Array.length sufficientUtxos) > maxCollateralInputs when tooManyCollateralUTxOs do - liftEffect $ throw tooManyCollateralUTxOsError - pure sufficientUtxos + liftEffect $ throw $ tooManyCollateralUTxOsError + <> " Minimal set of UTxOs to cover the collateral are: " + <> show sufficientUtxos + pure mbSufficientUtxos where tooManyCollateralUTxOsError = "Wallet returned too many UTxOs as collateral. This is likely a bug in \ From 61695c6b875e9d8c0decfc169943188b1d19f1b2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 Feb 2023 21:58:02 +0400 Subject: [PATCH 050/478] Assertion lib: If `getExpected` fails, do not omit the error message --- src/Contract/Test/Assert.purs | 85 ++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 8128f5aea..236856955 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -11,6 +11,7 @@ module Contract.Test.Assert , UnexpectedMetadataValue , UnexpectedRefScriptInOutput , UnexpectedTokenDelta + , FailedToGetExpectedValue ) , ContractAssertion , ContractCheck @@ -139,6 +140,7 @@ data ContractAssertionFailure (ExpectedActual (Maybe ScriptRef)) | UnexpectedTokenDelta (Maybe (Labeled Address)) TokenName (ExpectedActual BigInt) + | FailedToGetExpectedValue String | MaxExUnitsExceeded (ExpectedActual ExUnits) | CustomFailure String | SkippedTest String @@ -168,7 +170,8 @@ printContractAssertionFailures failures = ) errorText = if Array.length errors > 0 then - "The following `Contract` assertions have failed: \n " + "In addition to the error above, the following `Contract` assertions" + <> " have failed:\n " <> listFailures errors <> "\n\n" else "" @@ -217,10 +220,14 @@ printContractAssertionFailure = case _ of "Unexpected token delta " <> show tn <> " at address " <> printLabeled addr <> printExpectedActual expectedActual + UnexpectedTokenDelta Nothing tn expectedActual -> "Unexpected token delta " <> show tn <> " in wallet: " <> printExpectedActual expectedActual + FailedToGetExpectedValue err -> + "Error while trying to get expected value: " <> err + MaxExUnitsExceeded expectedActual -> "ExUnits limit exceeded: " <> printExpectedActual expectedActual @@ -492,16 +499,18 @@ checkLovelaceDeltaAtAddress addr getExpected comp contract = do where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do - expected <- lift $ getExpected result - let - actual :: BigInt - actual = valueToCoin' valueAfter - valueToCoin' valueBefore + lift (E.try $ getExpected result) >>= either + (tellFailure <<< FailedToGetExpectedValue <<< show) + \expected -> do + let + actual :: BigInt + actual = valueToCoin' valueAfter - valueToCoin' valueBefore - unexpectedLovelaceDelta :: ContractAssertionFailure - unexpectedLovelaceDelta = - UnexpectedLovelaceDelta (Just addr) (ExpectedActual expected actual) + unexpectedLovelaceDelta :: ContractAssertionFailure + unexpectedLovelaceDelta = + UnexpectedLovelaceDelta (Just addr) (ExpectedActual expected actual) - assertContract unexpectedLovelaceDelta (comp actual expected) + assertContract unexpectedLovelaceDelta (comp actual expected) -- | Requires that the computed amount of lovelace was gained at the address -- | by calling the contract. @@ -555,16 +564,18 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do - expected <- lift $ getExpected result - let - actual :: BigInt - actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn + lift (E.try $ getExpected result) >>= either + (tellFailure <<< FailedToGetExpectedValue <<< show) + \expected -> do + let + actual :: BigInt + actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn - unexpectedTokenDelta :: ContractAssertionFailure - unexpectedTokenDelta = - UnexpectedTokenDelta (Just addr) tn (ExpectedActual expected actual) + unexpectedTokenDelta :: ContractAssertionFailure + unexpectedTokenDelta = + UnexpectedTokenDelta (Just addr) tn (ExpectedActual expected actual) - assertContract unexpectedTokenDelta (comp actual expected) + assertContract unexpectedTokenDelta (comp actual expected) -- | Requires that the computed number of tokens was gained at the address -- | by calling the contract. @@ -639,16 +650,18 @@ checkLovelaceDeltaInWallet getExpected comp contract = do where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do - expected <- lift $ getExpected result - let - actual :: BigInt - actual = valueToCoin' valueAfter - valueToCoin' valueBefore + lift (E.try $ getExpected result) >>= either + (tellFailure <<< FailedToGetExpectedValue <<< show) + \expected -> do + let + actual :: BigInt + actual = valueToCoin' valueAfter - valueToCoin' valueBefore - unexpectedLovelaceDelta :: ContractAssertionFailure - unexpectedLovelaceDelta = - UnexpectedLovelaceDelta Nothing (ExpectedActual expected actual) + unexpectedLovelaceDelta :: ContractAssertionFailure + unexpectedLovelaceDelta = + UnexpectedLovelaceDelta Nothing (ExpectedActual expected actual) - assertContract unexpectedLovelaceDelta (comp actual expected) + assertContract unexpectedLovelaceDelta (comp actual expected) -- | Requires that the computed amount of lovelace was gained in the wallet -- | by calling the contract. @@ -697,16 +710,18 @@ checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = where check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do - expected <- lift $ getExpected result - let - actual :: BigInt - actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn - - unexpectedTokenDelta :: ContractAssertionFailure - unexpectedTokenDelta = - UnexpectedTokenDelta Nothing tn (ExpectedActual expected actual) - - assertContract unexpectedTokenDelta (comp actual expected) + lift (E.try $ getExpected result) >>= either + (tellFailure <<< FailedToGetExpectedValue <<< show) + \expected -> do + let + actual :: BigInt + actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn + + unexpectedTokenDelta :: ContractAssertionFailure + unexpectedTokenDelta = + UnexpectedTokenDelta Nothing tn (ExpectedActual expected actual) + + assertContract unexpectedTokenDelta (comp actual expected) -- | Requires that the computed number of tokens was gained in the wallet -- | by calling the contract. From f087720eba6dfe0816219dde485dd056497d4b3e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 Feb 2023 21:59:02 +0400 Subject: [PATCH 051/478] Add a note on chromium support on mac --- doc/faq.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/faq.md b/doc/faq.md index 7952665a4..1cb7010c3 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -21,6 +21,7 @@ This document lists common problems encountered by CTL users and developers. - [Environment-related](#environment-related) - [Q: I use wayland, the E2E browser fails on startup](#q-i-use-wayland-the-e2e-browser-fails-on-startup) - [Q: How to keep the number of WebSocket connections to a minimum?](#q-how-to-keep-the-number-of-websocket-connections-to-a-minimum) + - [Package 'chromium-105.0.5195.125' is not supported on 'x86_64-darwin'](#package-chromium-10505195125-is-not-supported-on-x86_64-darwin) - [Miscellaneous](#miscellaneous) - [Q: Why am I getting `Error: (AtKey "coinsPerUtxoByte" MissingValue)`?](#q-why-am-i-getting-error-atkey-coinsperutxobyte-missingvalue) - [Q: Why do I get an error from `foreign.js` when running Plutip tests locally?](#q-why-do-i-get-an-error-from-foreignjs-when-running-plutip-tests-locally) @@ -129,6 +130,12 @@ Use only one `ContractEnv` value. They are implicitly created every time `runCon Instead, initialize the environment with `withContractEnv` and pass it to `runContractInEnv`. The former ensures that the environment is properly finalized, but it forces the developer to follow the bracket pattern, which is not always convenient. As an alternative, `mkContractEnv` can be used. If you are initializing a contract environment with `mkContractEnv` only once during the lifeteime of your app, you should be fine, but if you re-create it dynamically and do not finalize it with `stopContractEnv`, it's fairly easy to hit the max websocket connections limit, which is 200 for Firefox, not to mention that it would be forcing the server to keep the connections. +### Package 'chromium-105.0.5195.125' is not supported on 'x86_64-darwin' + +Chromium is used in [E2E test suite](./e2e-testing.md). Chromium is pinned in nix shell by default, because system versions of chromium may be affected by [this bug](https://bugs.chromium.org/p/chromium/issues/detail?id=706008#c39) + +To disable, set `withChromium` to `false` in [`purescriptProject`'s `shell` argument](https://github.com/Plutonomicon/cardano-transaction-lib/blob/946818b72e3ac1321feebe2944ca2986da2ddc01/templates/ctl-scaffold/flake.nix#L96). + ## Miscellaneous ### Q: Why am I getting `Error: (AtKey "coinsPerUtxoByte" MissingValue)`? From 60e6b819fe93bd734ea92336539caa7bd4c5a9ad Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 Feb 2023 23:03:44 +0400 Subject: [PATCH 052/478] - getWalletBalance is now implemented via getWalletUtxos - maintain a global known Tx set in ContractEnv to speed up sync - assert lib: handle exceptions coming from `getExpected` nicely - more trace logs --- examples/ContractTestUtils.purs | 4 ++- examples/OneShotMinting.purs | 5 ++-- src/Contract/Address.purs | 2 ++ src/Contract/Config.purs | 19 ++----------- src/Contract/Sync.purs | 8 +----- src/Contract/Utxos.purs | 18 ++++++++---- src/Internal/BalanceTx/Sync.purs | 48 ++++++++++++++++++++++++++++---- src/Internal/Contract/Monad.purs | 10 +++++++ src/Internal/Plutip/Server.purs | 8 +++--- 9 files changed, 82 insertions(+), 40 deletions(-) diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 21fec074b..4f46965a9 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -65,6 +65,7 @@ import Data.Array (head) import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Lens (view) +import Effect.Exception (throw) type ContractParams = { receiverPkh :: PaymentPubKeyHash @@ -98,7 +99,8 @@ mkChecks p = do , checkLossAtAddress (label senderAddress "Sender") case _ of Just { txFinalFee } -> pure (p.adaToSend + txFinalFee) - Nothing -> pure zero + Nothing -> liftEffect $ + throw "Unable to estimate expected loss in wallet" , checkTokenGainAtAddress' (label senderAddress "Sender") ( uncurry3 (\cs tn amount -> cs /\ tn /\ amount) diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index af98eab83..4d040746e 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -53,7 +53,7 @@ import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Data.Array (head, singleton) as Array import Data.BigInt (BigInt) import Data.Map (toUnfoldable) as Map -import Effect.Exception (error) +import Effect.Exception (error, throw) main :: Effect Unit main = example testnetNamiConfig @@ -69,7 +69,8 @@ mkChecks nft = [ checkTokenGainInWallet' nft , checkLossInWallet case _ of - Nothing -> pure zero + Nothing -> liftEffect $ throw $ + "Unable to estimate expected loss in wallet" Just { txFinalFee } -> pure txFinalFee ] diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 99c7acc0d..c8e53cece 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -38,6 +38,7 @@ module Contract.Address import Prelude +import Contract.Log (logTrace') import Contract.Monad (Contract, liftContractM, liftedM) import Contract.Prelude (liftM) import Control.Monad.Error.Class (throwError) @@ -179,6 +180,7 @@ getWalletAddressesWithNetworkTag = do getWalletCollateral :: Contract (Maybe (Array TransactionUnspentOutput)) getWalletCollateral = do + logTrace' "getWalletCollateral" whenM ( asks ( _.synchronizationParams diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 6964c66ec..3b8e8e34b 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -15,7 +15,6 @@ module Contract.Config , mainnetLodeConfig , mainnetNuFiConfig , defaultSynchronizationParams - , disabledSynchronizationParams , strictSynchronizationParams , defaultTimeParams , module Contract.Address @@ -29,6 +28,9 @@ module Contract.Config ) where import Contract.Address (NetworkId(MainnetId, TestnetId)) +import Ctl.Internal.BalanceTx.Sync + ( disabledSynchronizationParams + ) as X import Ctl.Internal.Contract.Hooks (Hooks, emptyHooks) as X import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad @@ -150,21 +152,6 @@ strictSynchronizationParams = , syncWalletWithTransaction: { errorOnTimeout: true, beforeTxConfirmed: true } } --- | Synchronization parameters that make all synchronization primitives --- | a no-op. --- | See `doc/query-layers.md` for more info. -disabledSynchronizationParams :: ContractSynchronizationParams -disabledSynchronizationParams = - { syncBackendWithWallet: - { errorOnTimeout: false - , beforeCip30Methods: false - , beforeBalancing: false - } - , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: false } - , syncWalletWithTransaction: - { errorOnTimeout: false, beforeTxConfirmed: false } - } - testnetNamiConfig :: ContractParams testnetNamiConfig = testnetConfig { walletSpec = Just ConnectToNami } diff --git a/src/Contract/Sync.purs b/src/Contract/Sync.purs index 489284c12..cd5a8ca74 100644 --- a/src/Contract/Sync.purs +++ b/src/Contract/Sync.purs @@ -2,7 +2,6 @@ -- | See `doc/query-layers.md`. module Contract.Sync ( module X - , withoutSync ) where import Contract.Config (disabledSynchronizationParams) @@ -12,10 +11,5 @@ import Ctl.Internal.BalanceTx.Sync ( syncBackendWithWallet , syncWalletWithTransaction , syncWalletWithTxInputs + , withoutSync ) as X - --- | A helper to set `synchronizationParams` to `disabledSynchronizationParams` --- | locally. -withoutSync :: forall (a :: Type). Contract a -> Contract a -withoutSync = do - local \cfg -> cfg { synchronizationParams = disabledSynchronizationParams } diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index eaedaff91..14c481521 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -11,9 +11,10 @@ module Contract.Utxos import Prelude -import Contract.Log (logWarn') +import Contract.Log (logTrace', logWarn') import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) +import Contract.Value as Value import Control.Monad.Reader.Class (asks) import Ctl.Internal.BalanceTx.Sync ( getControlledAddresses @@ -21,19 +22,21 @@ import Ctl.Internal.BalanceTx.Sync , syncBackendWithWallet ) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) -import Ctl.Internal.Contract.Wallet (getWalletBalance, getWalletUtxos) as Utxos +import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet import Ctl.Internal.Plutus.Conversion ( fromPlutusAddress , toPlutusTxOutput , toPlutusUtxoMap ) -import Ctl.Internal.Plutus.Conversion.Value (toPlutusValue) import Ctl.Internal.Plutus.Types.Address (class PlutusAddress, getAddress) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.Foldable (foldr) +import Data.Map as Map import Data.Maybe (Maybe) +import Data.Newtype (unwrap) import Data.Set (member) as Set import Effect.Aff.Class (liftAff) @@ -83,13 +86,17 @@ getUtxo oref = do getWalletBalance :: Contract (Maybe Value) getWalletBalance = do + logTrace' "getWalletBalance" whenM ( asks $ _.synchronizationParams >>> _.syncBackendWithWallet >>> _.beforeCip30Methods ) syncBackendWithWallet - Utxos.getWalletBalance <#> map toPlutusValue + let + getUtxoValue = unwrap >>> _.output >>> unwrap >>> _.amount + sumValues = foldr (Value.unionWith add) mempty + getWalletUtxos <#> map (Map.values >>> map getUtxoValue >>> sumValues) -- | Similar to `utxosAt` called on own address, except that it uses CIP-30 -- | wallet state and not query layer state. @@ -100,6 +107,7 @@ getWalletBalance = do getWalletUtxos :: Contract (Maybe UtxoMap) getWalletUtxos = do + logTrace' "getWalletUtxos" whenM ( asks $ _.synchronizationParams @@ -107,7 +115,7 @@ getWalletUtxos = do >>> _.beforeCip30Methods ) syncBackendWithWallet - mCardanoUtxos <- Utxos.getWalletUtxos + mCardanoUtxos <- Wallet.getWalletUtxos for mCardanoUtxos $ liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< toPlutusUtxoMap diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index b2f68b543..98e1ea02b 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -6,15 +6,19 @@ module Ctl.Internal.BalanceTx.Sync , syncWalletWithTxInputs , isCip30Wallet , getControlledAddresses + , withoutSync + , disabledSynchronizationParams ) where import Prelude import Contract.Log (logError', logTrace', logWarn') import Contract.Monad (Contract, liftedE) +import Control.Monad.Reader (local) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf) import Ctl.Internal.Cardano.Types.Transaction as Cardano +import Ctl.Internal.Contract.Monad (ContractSynchronizationParams) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet ( getChangeAddress @@ -43,6 +47,7 @@ import Effect.Aff (delay) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) +import Effect.Ref as Ref -- | Wait until all UTxOs that the wallet returns are visible in the -- | query layer. @@ -51,19 +56,31 @@ syncBackendWithWallet = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks $ _.timeParams >>> _.syncBackend { errorOnTimeout } <- asks $ _.synchronizationParams >>> _.syncBackendWithWallet + knownTxsRef <- asks (_.knownTxs >>> _.backend) let - sync :: Array TransactionInput -> Contract Unit - sync alreadyFound = do + sync :: Contract Unit + sync = do utxos <- getWalletUtxos <#> fromMaybe Map.empty + alreadyFoundTxs <- liftEffect $ Ref.read knownTxsRef let + isAlreadyFoundUtxo = + flip Set.member alreadyFoundTxs <<< _.transactionId <<< unwrap + -- all utxos from the wallet, except of those we have already seen notYetFoundUtxos :: Array TransactionInput notYetFoundUtxos = - Array.filter (not <<< flip Array.elem alreadyFound) + Array.filter (not <<< isAlreadyFoundUtxo) $ fst <$> Map.toUnfoldableUnordered utxos -- split the UTxOs into known to the query layer and not yet known { yes: newlyFound, no: stillNotFound } <- Array.partition (snd >>> isJust) <$> traverse (\input -> Tuple input <$> getUtxo' input) notYetFoundUtxos + -- Mark newly found TxIds as known + liftEffect $ Ref.modify_ + ( Set.union + $ Set.fromFoldable + $ newlyFound <#> fst >>> unwrap >>> _.transactionId + ) + knownTxsRef if Array.null stillNotFound then do logTrace' "syncBackendWithWallet: synchronization finished" else do @@ -71,9 +88,9 @@ syncBackendWithWallet = whenM isCip30Wallet do "syncBackendWithWallet: waiting for query layer state " <> "synchronization with the wallet..." liftAff (delay delayMs) - sync (map fst newlyFound <> alreadyFound) + sync parOneOf - [ sync [] + [ sync , waitAndError errorOnTimeout (fromDuration timeout) errorMessage ] where @@ -190,6 +207,27 @@ syncWalletWithTxInputs txInputs = whenM isCip30Wallet do <> " UTxO set and CTL query layer UTxO set to synchronize " <> "(see `timeParams.syncWallet.timeout` in `ContractParams`)" +-- | A helper to set `synchronizationParams` to `disabledSynchronizationParams` +-- | locally. +withoutSync :: forall (a :: Type). Contract a -> Contract a +withoutSync = do + local \cfg -> cfg { synchronizationParams = disabledSynchronizationParams } + +-- | Synchronization parameters that make all synchronization primitives +-- | a no-op. +-- | See `doc/query-layers.md` for more info. +disabledSynchronizationParams :: ContractSynchronizationParams +disabledSynchronizationParams = + { syncBackendWithWallet: + { errorOnTimeout: false + , beforeCip30Methods: false + , beforeBalancing: false + } + , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: false } + , syncWalletWithTransaction: + { errorOnTimeout: false, beforeTxConfirmed: false } + } + -- | A version without plutus conversion for internal use. getUtxo' :: TransactionInput -> Contract (Maybe Cardano.TransactionOutput) getUtxo' oref = do diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index d09787fd7..a0893dd63 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -65,6 +65,7 @@ import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters) import Ctl.Internal.Types.SystemStart (SystemStart) +import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.UsedTxOuts (UsedTxOuts, isTxOutRefUsed, newUsedTxOuts) import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Spec (WalletSpec, mkWalletBySpec) @@ -74,6 +75,8 @@ import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Set (Set) +import Data.Set as Set import Data.Time.Duration (Milliseconds, Seconds) import Data.Traversable (for_, traverse, traverse_) import Effect (Effect) @@ -81,6 +84,8 @@ import Effect.Aff (Aff, ParAff, attempt, error, finally, supervise) import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, throw, try) +import Effect.Ref (Ref) +import Effect.Ref as Ref import MedeaPrelude (class MonadAff) import Record.Builder (build, merge) @@ -184,6 +189,9 @@ type ContractEnv = , ledgerConstants :: LedgerConstants , timeParams :: ContractTimeParams , synchronizationParams :: ContractSynchronizationParams + , knownTxs :: + { backend :: Ref (Set TransactionHash) + } } -- | Initializes a `Contract` environment. Does not ensure finalization. @@ -196,6 +204,7 @@ mkContractEnv params = do for_ params.hooks.beforeInit (void <<< liftEffect <<< try) usedTxOuts <- newUsedTxOuts + backend <- liftEffect $ Ref.new Set.empty envBuilder <- sequential ado b1 <- parallel do @@ -211,6 +220,7 @@ mkContractEnv params = do { usedTxOuts , timeParams: params.timeParams , synchronizationParams: params.synchronizationParams + , knownTxs: { backend } } pure $ build envBuilder constants where diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index a9d6b6346..d9dd97493 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -17,10 +17,7 @@ import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat import Contract.Address (NetworkId(MainnetId)) -import Contract.Config - ( defaultSynchronizationParams - , defaultTimeParams - ) +import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither) import Control.Monad.State (State, execState, modify_) @@ -86,6 +83,7 @@ import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Nothing, Just), maybe) import Data.Newtype (over, unwrap, wrap) +import Data.Set as Set import Data.String.CodeUnits (indexOf) as String import Data.String.Pattern (Pattern(Pattern)) import Data.Traversable (foldMap, for, for_, sequence_, traverse_) @@ -586,6 +584,7 @@ mkClusterContractEnv plutipCfg logger customLogger = do ledgerConstants <- getLedgerConstants plutipCfg { customLogger = customLogger } backend + backendKnownTxs <- liftEffect $ Ref.new Set.empty pure { backend , networkId: MainnetId @@ -600,6 +599,7 @@ mkClusterContractEnv plutipCfg logger customLogger = do -- timeParams have no effect when KeyWallet is used , timeParams: defaultTimeParams , synchronizationParams: defaultSynchronizationParams + , knownTxs: { backend: backendKnownTxs } } defaultRetryPolicy :: RetryPolicy From 9c8d5dd1a2b5ad4ac2bc4b74473fec3a11b24a8e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 1 Mar 2023 12:38:50 +0400 Subject: [PATCH 053/478] Use `message` instead of show instance for Error in assert lib, update CHANGELOG --- CHANGELOG.md | 2 ++ src/Contract/Test/Assert.purs | 15 ++++++++------- src/Internal/QueryM/Kupo.purs | 4 +++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 823e79021..db137288c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `assertLovelaceDeltaAtAddress` -> `checkLovelaceDeltaAtAddress` - `assertValueDeltaAtAddress` -> `assertValueDeltaAtAddress` - New fields added to `ContractParams`: `ContractTimeParams` and `ContractSynchronizationParams`. Default values are `Contract.Config.defaultTimeParams` and `Contract.Config.defaultSynchronizationParams` . See [docs on query layers configuration](./doc/query-layers.md) for more info. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `getWalletBalance` is now implemented via `getWalletUtxos` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Fixed @@ -77,6 +78,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fix a bug in UTxO selection in `Cip30Mock` (that affected `Cip30Mock` users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) - Fixed `bundlePursProject` crashing if build output directory exists ([#1438](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1438)) - Better reporting for WebSocket errors ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) +- `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Removed diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 236856955..136e37112 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -115,7 +115,7 @@ import Data.String (trim) as String import Data.String.Common (joinWith) as String import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (liftEffect) -import Effect.Exception (Error, error, throw, try) +import Effect.Exception (Error, error, message, throw, try) import Effect.Ref (Ref) import Effect.Ref as Ref import Type.Proxy (Proxy(Proxy)) @@ -171,7 +171,7 @@ printContractAssertionFailures failures = errorText = if Array.length errors > 0 then "In addition to the error above, the following `Contract` assertions" - <> " have failed:\n " + <> " have failed:\n\n " <> listFailures errors <> "\n\n" else "" @@ -392,7 +392,8 @@ runChecks assertions contract = do liftEffect $ throwError $ error errorReport where reportException :: Error -> String - reportException error = "\n\nAn exception has been thrown: \n\n" <> show error + reportException error = "\n\nAn exception has been thrown: \n\n" <> message + error ----------------------- UTxOs --------------------------------------------------- @@ -500,7 +501,7 @@ checkLovelaceDeltaAtAddress addr getExpected comp contract = do check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do lift (E.try $ getExpected result) >>= either - (tellFailure <<< FailedToGetExpectedValue <<< show) + (tellFailure <<< FailedToGetExpectedValue <<< message) \expected -> do let actual :: BigInt @@ -565,7 +566,7 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do lift (E.try $ getExpected result) >>= either - (tellFailure <<< FailedToGetExpectedValue <<< show) + (tellFailure <<< FailedToGetExpectedValue <<< message) \expected -> do let actual :: BigInt @@ -651,7 +652,7 @@ checkLovelaceDeltaInWallet getExpected comp contract = do check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do lift (E.try $ getExpected result) >>= either - (tellFailure <<< FailedToGetExpectedValue <<< show) + (tellFailure <<< FailedToGetExpectedValue <<< message) \expected -> do let actual :: BigInt @@ -711,7 +712,7 @@ checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = check :: Maybe a -> Value -> Value -> ContractAssertion Unit check result valueBefore valueAfter = do lift (E.try $ getExpected result) >>= either - (tellFailure <<< FailedToGetExpectedValue <<< show) + (tellFailure <<< FailedToGetExpectedValue <<< message) \expected -> do let actual :: BigInt diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index b47bc8749..17ce07cd5 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -172,8 +172,10 @@ isTxConfirmed :: TransactionHash -> QueryM (Either ClientError (Maybe Slot)) isTxConfirmed txHash = do config <- asks (_.kupoConfig <<< _.config) do - -- Do this clumsy special case logging. It's better than sending it silently + -- we don't add `?unspent`, because we only care about existence of UTxOs, + -- possibly they can be consumed let endpoint = "/matches/*@" <> byteArrayToHex (unwrap txHash) + -- Do this clumsy special case logging. It's better than sending it silently logTrace' $ "sending kupo request: " <> endpoint liftAff $ isTxConfirmedAff config txHash From a3b3efc33debeffde4aa1843123d009e21be74b2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 1 Mar 2023 12:43:10 +0300 Subject: [PATCH 054/478] Only enable withChromium on Linux by default --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index bb8260da8..30cc909e8 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -93,7 +93,7 @@ let # available in the shell environment. This can help with ensuring that # any e2e tests that you write and run with `Contract.Test.E2E` are # reproducible - , withChromium ? true + , withChromium ? pkgs.stdenv.isLinux }: assert pkgs.lib.assertOneOf "formatter" formatter [ "purs-tidy" "purty" ]; with pkgs.lib; From 1280b338afd223e0aec964906f50970069dea902 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 1 Mar 2023 15:06:29 +0400 Subject: [PATCH 055/478] Add DropTokens example that sends them to null address --- examples/ByUrl.purs | 2 ++ examples/DropTokens.purs | 53 ++++++++++++++++++++++++++++++++++++++++ test/Fixtures.purs | 18 +++++++++++++- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 examples/DropTokens.purs diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index ec7bec66b..6f4829fc8 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -33,6 +33,7 @@ import Ctl.Examples.AlwaysMints as AlwaysMints import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.Datums as Datums +import Ctl.Examples.DropTokens as DropTokens import Ctl.Examples.ECDSA as ECDSA import Ctl.Examples.MintsMultipleTokens as MintsMultipleTokens import Ctl.Examples.NativeScriptMints as NativeScriptMints @@ -166,4 +167,5 @@ examples = Map.fromFoldable , "Schnorr" /\ Schnorr.contract , "ECDSA" /\ ECDSA.contract , "PaysWithDatum" /\ PaysWithDatum.contract + , "DropTokens" /\ DropTokens.contract ] diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs new file mode 100644 index 000000000..c1fcb6d9b --- /dev/null +++ b/examples/DropTokens.purs @@ -0,0 +1,53 @@ +-- | This module can be used to get rid of extra tokens. It drops half of the +-- | tokens by sending them to a null wallet. +module Ctl.Examples.DropTokens (main, example, contract) where + +import Contract.Prelude + +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.ScriptLookups as Lookups +import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) +import Contract.TxConstraints as Constraints +import Contract.TxConstraints as Helpers +import Contract.Utxos (getWalletBalance) +import Contract.Value + ( coinToValue + , flattenNonAdaAssets + , negation + , singleton + , valueToCoin + ) +import Data.Array as Array +import Test.Ctl.Fixtures (nullPaymentPubKeyHash) + +main :: Effect Unit +main = example testnetNamiConfig + +example :: ContractParams -> Effect Unit +example cfg = launchAff_ do + runContract cfg contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.DropTokens" + logInfo' "Going to get rid of half of the tokens available" + value <- getWalletBalance <#> fold + + let + tokenValue = value <> negation (coinToValue (valueToCoin value)) + halfArray arr = Array.take (Array.length arr `div` 2) arr + -- drop half of the tokens + tokenValueHalf = + fold $ halfArray (flattenNonAdaAssets tokenValue) <#> + \(cs /\ tn /\ n) -> singleton cs tn n + + constraints :: Constraints.TxConstraints Void Void + constraints = Helpers.mustPayToPubKey nullPaymentPubKeyHash tokenValueHalf + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + submitTxFromConstraints lookups constraints >>= awaitTxConfirmed + logInfo' "Tx submitted successfully!" diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 7a87697d1..1cdf17acf 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -19,6 +19,7 @@ module Test.Ctl.Fixtures , cip25MetadataJsonFixture2 , cip25MetadataJsonFixture3 , currencySymbol1 + , ed25519KeyHash1 , ed25519KeyHashFixture1 , fullyAppliedScriptFixture , mkSampleTx @@ -30,6 +31,7 @@ module Test.Ctl.Fixtures , nativeScriptFixture5 , nativeScriptFixture6 , nativeScriptFixture7 + , nullPaymentPubKeyHash , ogmiosEvaluateTxInvalidPointerFormatFixture , ogmiosEvaluateTxValidRespFixture , partiallyAppliedScriptFixture @@ -72,7 +74,6 @@ module Test.Ctl.Fixtures , witnessSetFixture3 , witnessSetFixture3Value , witnessSetFixture4 - , ed25519KeyHash1 ) where import Prelude @@ -144,6 +145,7 @@ import Ctl.Internal.Cardano.Types.Value , mkNonAdaAsset , mkSingletonNonAdaAsset ) +import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Metadata.Cip25.Cip25String (Cip25String, mkCip25String) import Ctl.Internal.Metadata.Cip25.Common (Cip25TokenName(Cip25TokenName)) import Ctl.Internal.Metadata.Cip25.V2 @@ -175,9 +177,14 @@ import Ctl.Internal.Types.ByteArray , hexToByteArray , hexToByteArrayUnsafe ) +import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) import Ctl.Internal.Types.PlutusData as PD +import Ctl.Internal.Types.PubKeyHash + ( PaymentPubKeyHash(PaymentPubKeyHash) + , PubKeyHash(PubKeyHash) + ) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) import Ctl.Internal.Types.Scripts @@ -1470,3 +1477,12 @@ fullyAppliedScriptFixture = \2333573466e1c00800404003c0152002333500b22333573466e3c00800404003c011220100\ \10091326353008009498cd4015d680119a802bae0011200120011200112001122002122001\ \20014c01021820004c010544746573740001" + +nullPaymentPubKeyHash :: PaymentPubKeyHash +nullPaymentPubKeyHash = PaymentPubKeyHash $ PubKeyHash + $ unsafePartial + $ fromJust + $ fromBytes + $ CborBytes + $ hexToByteArrayUnsafe + "f9dca21a6c826ec8acb4cf395cbc24351937bfe6560b2683ab8b415f" From e023a7b0cb9c6fd39059c16d06a19eb802d92077 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 1 Mar 2023 15:52:44 +0400 Subject: [PATCH 056/478] Better error/warning messages in sync* functions --- src/Internal/BalanceTx/Sync.purs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 98e1ea02b..5bbbd1790 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -36,6 +36,7 @@ import Data.Array as Array import Data.Bifunctor (bimap) import Data.Map as Map import Data.Maybe (Maybe, fromMaybe, isJust) +import Data.Monoid (guard) import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set as Set @@ -56,6 +57,11 @@ syncBackendWithWallet = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks $ _.timeParams >>> _.syncBackend { errorOnTimeout } <- asks $ _.synchronizationParams >>> _.syncBackendWithWallet + let + errorMessage = "Failed to wait for wallet state synchronization (timeout). " + <> guard (not errorOnTimeout) "Continuing anyway. " + <> "Consider increasing `timeParams.syncBackend.timeout`" + <> " in `ContractParams`" knownTxsRef <- asks (_.knownTxs >>> _.backend) let sync :: Contract Unit @@ -93,10 +99,6 @@ syncBackendWithWallet = whenM isCip30Wallet do [ sync , waitAndError errorOnTimeout (fromDuration timeout) errorMessage ] - where - errorMessage = "Failed to wait for wallet state synchronization (timeout). " - <> "Continuing anyway. Consider increasing `timeParams.syncBackend.timeout`" - <> " in `ContractParams`" -- | Wait until the wallet can see the UTxOs created by a given transaction. -- | This function assumes that the transaction has already been confirmed @@ -112,6 +114,13 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) { errorOnTimeout } <- asks $ _.synchronizationParams >>> _.syncWalletWithTransaction + let + errorMessage = "syncWalletWithTransaction: Failed to wait for wallet state " + <> "synchronization. " + <> guard (not errorOnTimeout) "Continuing anyway. " + <> "This may indicate UTxO locking" + <> " in use in the wallet. Consider increasing " + <> "`timeParams.syncWallet.timeout` in `ContractParams`" queryHandle <- getQueryHandle let sync :: Contract Unit @@ -149,12 +158,6 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do [ sync , waitAndError errorOnTimeout (fromDuration timeout) errorMessage ] - where - errorMessage = - "syncWalletWithTransaction: Failed to wait for wallet state " - <> "synchronization. Continuing anyway. This may indicate UTxO locking" - <> " in use in the wallet. Consider increasing " - <> "`timeParams.syncWallet.timeout` in `ContractParams`" -- | Waits until all provided transaction inputs appear in the UTxO -- | set provided by the wallet. @@ -211,7 +214,7 @@ syncWalletWithTxInputs txInputs = whenM isCip30Wallet do -- | locally. withoutSync :: forall (a :: Type). Contract a -> Contract a withoutSync = do - local \cfg -> cfg { synchronizationParams = disabledSynchronizationParams } + local _ { synchronizationParams = disabledSynchronizationParams } -- | Synchronization parameters that make all synchronization primitives -- | a no-op. From c29c823a3ecddd3a8fd203358ec6310e59b1ef92 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 1 Mar 2023 15:58:41 +0400 Subject: [PATCH 057/478] Update CHANGELOG --- CHANGELOG.md | 1 + src/Internal/Contract/Wallet.purs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db137288c..43e48f62c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fixed `bundlePursProject` crashing if build output directory exists ([#1438](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1438)) - Better reporting for WebSocket errors ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) - `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Fixed collateral selection - sort the UTxOs by ADA value in descending order, before selecting them for collateral, to ensure that if a combination that satisfies the requirements is possible, it will be selected. The bug affected CIP-30 wallets. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Removed diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index c10a038da..7d6f2df8f 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -210,7 +210,7 @@ getWalletUtxos = do actionBasedOnWallet (\w conn -> w.getUtxos conn <#> map toUtxoMap) \_ -> do - (addresses :: Array Address) <- getWalletAddresses + addresses :: Array Address <- getWalletAddresses res :: Array (Maybe UtxoMap) <- for addresses $ map hush <<< liftAff <<< queryHandle.utxosAt pure $ Just $ foldr Map.union Map.empty $ map (fromMaybe Map.empty) res From 9a6b9c0bfbe2ff4445f6239da6e652919144d666 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 2 Mar 2023 13:31:54 +0400 Subject: [PATCH 058/478] Fix warnings --- src/Contract/Sync.purs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Contract/Sync.purs b/src/Contract/Sync.purs index cd5a8ca74..636ff473d 100644 --- a/src/Contract/Sync.purs +++ b/src/Contract/Sync.purs @@ -4,9 +4,6 @@ module Contract.Sync ( module X ) where -import Contract.Config (disabledSynchronizationParams) -import Contract.Monad (Contract) -import Control.Monad.Reader (local) import Ctl.Internal.BalanceTx.Sync ( syncBackendWithWallet , syncWalletWithTransaction From de8a6e9d09d829ff9f3195a356ab4b68fcd8b3e0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 2 Mar 2023 16:03:33 +0400 Subject: [PATCH 059/478] Include collateral UTxOs in getWalletBalance --- src/Contract/Utxos.purs | 16 +++++++++++++--- test/Plutip/Contract.purs | 8 ++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 14c481521..e8423ff4e 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -11,6 +11,7 @@ module Contract.Utxos import Prelude +import Contract.Address (getWalletCollateral) import Contract.Log (logTrace', logWarn') import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) @@ -20,6 +21,7 @@ import Ctl.Internal.BalanceTx.Sync ( getControlledAddresses , isCip30Wallet , syncBackendWithWallet + , withoutSync ) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet @@ -33,11 +35,12 @@ import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.Foldable (foldr) +import Data.Foldable (fold, foldr) import Data.Map as Map -import Data.Maybe (Maybe) +import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (unwrap) import Data.Set (member) as Set +import Data.Tuple.Nested ((/\)) import Effect.Aff.Class (liftAff) -- | Queries for UTxOs at the given `Address`. @@ -96,7 +99,14 @@ getWalletBalance = do let getUtxoValue = unwrap >>> _.output >>> unwrap >>> _.amount sumValues = foldr (Value.unionWith add) mempty - getWalletUtxos <#> map (Map.values >>> map getUtxoValue >>> sumValues) + -- include both spendable UTxOs and collateral + utxos <- getWalletUtxos <#> fromMaybe Map.empty + collateralUtxos <- withoutSync getWalletCollateral <#> fold >>> toUtxoMap + let allUtxos = Map.union utxos collateralUtxos + pure $ pure $ sumValues $ map getUtxoValue $ Map.values allUtxos + where + toUtxoMap = Map.fromFoldable <<< map + (unwrap >>> \({ input, output }) -> input /\ output) -- | Similar to `utxosAt` called on own address, except that it uses CIP-30 -- | wallet state and not query layer state. diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index df9daf084..5d290ffbf 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -1805,12 +1805,12 @@ suite = do ] withWallets distribution \alice -> do withKeyWallet alice do - getWalletBalance >>= flip shouldSatisfy - ( eq $ Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + getWalletBalance >>= shouldEqual + ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 ) withCip30Mock alice MockNami do - getWalletBalance >>= flip shouldSatisfy - ( eq $ Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + getWalletBalance >>= shouldEqual + ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 ) test "getWalletBalance works (2)" do From 5c899a34aff7b0971316b4bfdf37ad2385392fd5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 2 Mar 2023 16:04:09 +0400 Subject: [PATCH 060/478] Update fixtures in assert lib test --- test/Plutip/Contract/Assert.purs | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index e15da2f9c..c0735e095 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -99,10 +99,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "The following `Contract` assertions have failed: \n 1.\ - \ Unexpected token delta (TokenName (hexToRawBytesUnsafe\ - \ \"546865546f6b656e\")) at address Sender (Expected: fromString\ - \ \"2\", Actual: fromString \"1\")" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: fromString \"2\", Actual: fromString \"1\"" test "ExUnits limit reached" do @@ -137,10 +134,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "The following `Contract` assertions have failed: \n \ - \1. ExUnits limit exceeded: (Expected: { mem: fromString \"800\",\ - \ steps: fromString \"16110\" }, Actual: { mem: fromString \"800\",\ - \ steps: fromString \"161100\" })" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. ExUnits limit exceeded: Expected: { mem: fromString \"800\", steps: fromString \"16110\" }, Actual: { mem: fromString \"800\", steps: fromString \"161100\" }" test "An exception is thrown - everything is reported" do @@ -179,18 +173,4 @@ suite = do eiResult `shouldSatisfy` isLeft printContractAssertionFailures failures `shouldEqual` - "The following `Contract` assertions have failed: \n\ - \ 1. Unexpected lovelace delta at address Sender (Expected: \ - \fromString \"0\", Actual: fromString \"-5195758\")\n\n\ - \ 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe\ - \ \"546865546f6b656e\")) at address Sender (Expected: \ - \fromString \"2\", Actual: fromString \"1\")\n\n\ - \ 3. ExUnits limit exceeded: (Expected: { mem: fromString\ - \ \"800\", steps: fromString \"16110\" }, Actual: { \ - \mem: fromString \"800\", steps: fromString \"161100\" \ - \})\n\n\ - \The following `Contract` checks have been skipped due to an \ - \exception: \n\n\ - \ 1. Sender's output has a datum\n\n\ - \ 2. Output has a reference script\n\n\ - \ 3. Contains CIP-25 metadata" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: fromString \"2\", Actual: fromString \"1\" \n\n 3. ExUnits limit exceeded: Expected: { mem: fromString \"800\", steps: fromString \"16110\" }, Actual: { mem: fromString \"800\", steps: fromString \"161100\" } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" From 5557f35f3c5b108b547daeea173f3af6538ecf39 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 13:54:46 +0400 Subject: [PATCH 061/478] Fix a problem with Cip30Mock collateral filtering in getUtxos: if there are multiple outputs with same amount, they were treated as single Also, remove the wallet address from rewardAddresses --- src/Internal/Wallet/Cip30Mock.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index ca15256a9..8b3f9bf2d 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -154,10 +154,10 @@ mkCip30Mock pKey mSKey = do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos let - collateralOutputs = collateralUtxos <#> unwrap >>> _.output + collateralOutputs = collateralUtxos <#> unwrap >>> _.input -- filter out UTxOs that will be used as collateral nonCollateralUtxos = - Map.filter (not <<< flip Array.elem collateralOutputs) utxos + Map.filterKeys (not <<< flip Array.elem collateralOutputs) utxos -- Convert to CSL representation and serialize cslUtxos <- traverse (liftEffect <<< convertTransactionUnspentOutput) $ Map.toUnfoldable nonCollateralUtxos <#> \(input /\ output) -> @@ -183,7 +183,7 @@ mkCip30Mock pKey mSKey = do , getChangeAddress: fromAff do pure addressHex , getRewardAddresses: fromAff do - pure [ addressHex ] + pure [] , signTx: \str -> unsafePerformEffect $ fromAff do txBytes <- liftMaybe (error "Unable to convert CBOR") $ hexToByteArray str From 6e365b4cf1252e667af5747861560ee3bebc00c4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 14:18:03 +0400 Subject: [PATCH 062/478] Correctly show reward address in Cip30Mock --- src/Internal/Wallet/Cip30Mock.purs | 26 +++++++++++++++++++++++--- test/Plutip/Contract.purs | 15 +++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 8b3f9bf2d..d83bc6d99 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -19,15 +19,25 @@ import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.Serialization ( convertTransactionUnspentOutput , convertValue + , publicKeyHash , toBytes ) import Ctl.Internal.Serialization.Address ( Address - , NetworkId(TestnetId, MainnetId) + , NetworkId(MainnetId, TestnetId) ) +import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) import Ctl.Internal.Serialization.WitnessSet (convertWitnessSet) import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (cborBytesFromByteArray, cborBytesToHex) +import Ctl.Internal.Types.PubKeyHash + ( PubKeyHash(PubKeyHash) + , StakePubKeyHash(StakePubKeyHash) + ) +import Ctl.Internal.Types.RewardAddress + ( rewardAddressToBytes + , stakePubKeyHashRewardAddress + ) import Ctl.Internal.Wallet ( Wallet , WalletExtension(LodeWallet, NamiWallet, GeroWallet, FlintWallet, NuFiWallet) @@ -44,7 +54,7 @@ import Data.Either (hush) import Data.Foldable (fold, foldMap) import Data.Function.Uncurried (Fn2, mkFn2) import Data.Map as Map -import Data.Maybe (Maybe(Just)) +import Data.Maybe (Maybe(Just), maybe) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) import Data.Tuple.Nested ((/\)) @@ -145,6 +155,16 @@ mkCip30Mock pKey mSKey = do byteArrayToHex $ unwrap $ toBytes ((unwrap keyWallet).address env.networkId :: Address) + mbRewardAddressHex = mSKey <#> \stakeKey -> + let + stakePubKey = publicKeyFromPrivateKey (unwrap stakeKey) + stakePubKeyHash = publicKeyHash stakePubKey + rewardAddress = stakePubKeyHashRewardAddress env.networkId + $ StakePubKeyHash + $ PubKeyHash stakePubKeyHash + in + byteArrayToHex $ unwrap $ rewardAddressToBytes rewardAddress + pure $ { getNetworkId: fromAff $ pure $ case env.networkId of @@ -183,7 +203,7 @@ mkCip30Mock pKey mSKey = do , getChangeAddress: fromAff do pure addressHex , getRewardAddresses: fromAff do - pure [] + pure (maybe [] pure mbRewardAddressHex) , signTx: \str -> unsafePerformEffect $ fromAff do txBytes <- liftMaybe (error "Unable to convert CBOR") $ hexToByteArray str diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 5d290ffbf..88ff0bc82 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -1828,14 +1828,25 @@ suite = do test "CIP-30 utilities" do let - distribution :: InitialUTxOs - distribution = + distribution :: InitialUTxOsWithStakeKey + distribution = withStakeKey privateStakeKey [ BigInt.fromInt 1_000_000_000 , BigInt.fromInt 50_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami do Cip30.contract + test "ECDSA example" do + let + distribution = withStakeKey privateStakeKey + [ BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami $ ECDSA.contract group "CIP-49 Plutus Crypto Primitives" do test "ECDSA: a script that checks a signature works" do From f310538c35240dd9340439bc4f9a9ec8fb38db0a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 14:18:54 +0400 Subject: [PATCH 063/478] Consider collateral when getting wallet UTxOs in Sync, parallelize wallet operations in sync functions --- src/Internal/BalanceTx/Sync.purs | 43 +++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 5bbbd1790..6849c40fe 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -16,17 +16,21 @@ import Contract.Log (logError', logTrace', logWarn') import Contract.Monad (Contract, liftedE) import Control.Monad.Reader (local) import Control.Monad.Reader.Class (asks) -import Control.Parallel (parOneOf) +import Control.Parallel (parOneOf, parTraverse, parallel, sequential) +import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Cardano.Types.Transaction as Cardano +import Ctl.Internal.Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput + ) import Ctl.Internal.Contract.Monad (ContractSynchronizationParams) import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Contract.Wallet ( getChangeAddress , getUnusedAddresses , getWalletAddresses + , getWalletCollateral , getWalletUtxos ) -import Ctl.Internal.Contract.Wallet as Utxos import Ctl.Internal.Helpers (liftEither, liftedM) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.ByteArray (byteArrayToHex) @@ -35,13 +39,12 @@ import Ctl.Internal.Wallet (cip30Wallet) import Data.Array as Array import Data.Bifunctor (bimap) import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe, isJust) +import Data.Maybe (Maybe, fromMaybe, isJust, maybe) import Data.Monoid (guard) import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set as Set import Data.Time.Duration (Milliseconds, fromDuration) -import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple), fst, snd) import Data.Tuple.Nested ((/\)) import Effect.Aff (delay) @@ -66,7 +69,7 @@ syncBackendWithWallet = whenM isCip30Wallet do let sync :: Contract Unit sync = do - utxos <- getWalletUtxos <#> fromMaybe Map.empty + utxos <- getControlledUtxos alreadyFoundTxs <- liftEffect $ Ref.read knownTxsRef let isAlreadyFoundUtxo = @@ -79,7 +82,8 @@ syncBackendWithWallet = whenM isCip30Wallet do $ fst <$> Map.toUnfoldableUnordered utxos -- split the UTxOs into known to the query layer and not yet known { yes: newlyFound, no: stillNotFound } <- Array.partition (snd >>> isJust) - <$> traverse (\input -> Tuple input <$> getUtxo' input) notYetFoundUtxos + <$> parTraverse (\input -> Tuple input <$> getUtxo' input) + notYetFoundUtxos -- Mark newly found TxIds as known liftEffect $ Ref.modify_ ( Set.union @@ -125,8 +129,7 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do let sync :: Contract Unit sync = do - inputs <- map fst <<< Map.toUnfoldable <<< fromMaybe Map.empty <$> - getWalletUtxos + inputs <- map fst <<< Map.toUnfoldable <$> getControlledUtxos -- We can wait for just one, because once we have it, we know that -- the tx effects have propagated to the wallet (Txs are atomic) if Array.any (\input -> (unwrap input).transactionId == txHash) inputs then @@ -175,7 +178,7 @@ syncWalletWithTxInputs txInputs = whenM isCip30Wallet do _.synchronizationParams >>> _.syncWalletWithTxInputs ownAddrs <- getControlledAddresses ownInputUtxos <- txInputs # - traverse + parTraverse ( \txInput -> do utxo <- liftedM (error "Could not get utxo") $ getUtxo' txInput pure (txInput /\ utxo) @@ -192,7 +195,7 @@ syncWalletWithTxInputs txInputs = whenM isCip30Wallet do <> show ownInputUtxos let sync = do - walletUtxos <- Utxos.getWalletUtxos <#> fromMaybe Map.empty + walletUtxos <- getControlledUtxos let difference = ownInputUtxos `Map.difference` walletUtxos if Map.isEmpty difference then do logTrace' "syncWalletWithTxInputs: synchronization finished" @@ -242,10 +245,22 @@ getUtxo' oref = do -- | Reward addresses are not included. getControlledAddresses :: Contract (Set Address) getControlledAddresses = do - used <- getWalletAddresses <#> Set.fromFoldable - unused <- getUnusedAddresses <#> Set.fromFoldable - change <- getChangeAddress <#> Set.fromFoldable - pure $ used `Set.union` unused `Set.union` change + sequential $ combine + <$> parallel (getWalletAddresses <#> Set.fromFoldable) + <*> parallel (getUnusedAddresses <#> Set.fromFoldable) + <*> parallel (getChangeAddress <#> Set.fromFoldable) + where + combine used unused change = used `Set.union` unused `Set.union` change + +getControlledUtxos :: Contract UtxoMap +getControlledUtxos = do + sequential $ Map.union + <$> parallel (getWalletCollateral <#> maybe Map.empty toUtxoMap) + <*> parallel (getWalletUtxos <#> fromMaybe Map.empty) + where + toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap + toUtxoMap = Map.fromFoldable <<< map + (unwrap >>> \({ input, output }) -> input /\ output) isCip30Wallet :: Contract Boolean isCip30Wallet = asks $ isJust <<< (cip30Wallet <=< _.wallet) From 98d628a79147d704f5e21edc4b776c5f31b9a0d4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 14:33:54 +0400 Subject: [PATCH 064/478] Parallelize more wallet functions --- src/Internal/Contract/Wallet.purs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 7d6f2df8f..0d47400af 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -17,6 +17,7 @@ module Ctl.Internal.Contract.Wallet import Prelude import Control.Monad.Reader.Trans (asks) +import Control.Parallel (parTraverse) import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput @@ -42,7 +43,7 @@ import Ctl.Internal.Types.PubKeyHash import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Data.Array (catMaybes, cons, foldMap, foldr) +import Data.Array (cons, foldMap, foldr) import Data.Array as Array import Data.BigInt as BigInt import Data.Either (hush) @@ -51,7 +52,7 @@ import Data.Function (on) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) -import Data.Traversable (for, for_, traverse) +import Data.Traversable (for_, traverse) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect.Aff.Class (liftAff) @@ -97,15 +98,16 @@ getWallet :: Contract (Maybe Wallet) getWallet = asks _.wallet ownPubKeyHashes :: Contract (Array PubKeyHash) -ownPubKeyHashes = catMaybes <$> do +ownPubKeyHashes = do getWalletAddresses >>= traverse \address -> do paymentCred <- liftM - ( error $ - "Unable to get payment credential from Address" - ) $ + (error $ "Unable to get payment credential from Address") $ addressPaymentCred address - pure $ stakeCredentialToKeyHash paymentCred <#> wrap + -- scripts are impossible here, so `stakeCredentialToKeyHash` will never + -- return `Nothing` (`catMaybes` is safe) + liftM (error "Impossible happened: CIP-30 method returned script address") + $ stakeCredentialToKeyHash paymentCred <#> wrap ownPaymentPubKeyHashes :: Contract (Array PaymentPubKeyHash) ownPaymentPubKeyHashes = map wrap <$> ownPubKeyHashes @@ -198,7 +200,7 @@ getWalletBalance = do actionBasedOnWallet _.getBalance \_ -> do -- Implement via `utxosAt` addresses <- getWalletAddresses - fold <$> for addresses \address -> do + fold <$> flip parTraverse addresses \address -> do liftAff $ queryHandle.utxosAt address <#> hush >>> map -- Combine `Value`s (fold <<< map _.amount <<< map unwrap <<< Map.values) @@ -211,7 +213,7 @@ getWalletUtxos = do (\w conn -> w.getUtxos conn <#> map toUtxoMap) \_ -> do addresses :: Array Address <- getWalletAddresses - res :: Array (Maybe UtxoMap) <- for addresses $ + res :: Array (Maybe UtxoMap) <- flip parTraverse addresses $ map hush <<< liftAff <<< queryHandle.utxosAt pure $ Just $ foldr Map.union Map.empty $ map (fromMaybe Map.empty) res where From 253c538b6d28ef7de3567cf6f7020ec2f781c07b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 14:55:52 +0400 Subject: [PATCH 065/478] Update CHANGELOG & mention `withoutSync` in the docs --- CHANGELOG.md | 1 + doc/query-layers.md | 2 +- src/Internal/BalanceTx/Sync.purs | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43e48f62c..aec19fc83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Better reporting for WebSocket errors ([#1403](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1403)) - `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Fixed collateral selection - sort the UTxOs by ADA value in descending order, before selecting them for collateral, to ensure that if a combination that satisfies the requirements is possible, it will be selected. The bug affected CIP-30 wallets. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Output correct reward address in CIP-30 mock ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Removed diff --git a/doc/query-layers.md b/doc/query-layers.md index 2294ce242..9da77f605 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -73,7 +73,7 @@ type ContractSynchronizationParams = - `before*` boolean value fields allow to enable or disable the delays (see above for correspondence between synchronization rules and function names). - `errorOnTimeout` field controls whether a given synchronization primitive should throw an exception when timeouts are reached, or just print a warning to the console. It is set to `false` by default, use `Contract.Config.strictSynchronizationParams` to throw. -- Use `Contract.Config.disabledSynchronizationParams` to disable synchronization completely (this brings back CTL pre-v5.1.0 behavior) +- Use `Contract.Config.disabledSynchronizationParams` to disable synchronization completely (this brings back CTL pre-v5.1.0 behavior). Additionally, `Contract.Sync.withoutSync` helper function can be used to disable synchronization locally in `Contract` context. The timeouts themselves can be configured using `timeParams` field of `ContractParams`: diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 6849c40fe..63fe840c6 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -214,7 +214,8 @@ syncWalletWithTxInputs txInputs = whenM isCip30Wallet do <> "(see `timeParams.syncWallet.timeout` in `ContractParams`)" -- | A helper to set `synchronizationParams` to `disabledSynchronizationParams` --- | locally. +-- | locally, thus skipping the synchronization process during execution of +-- | the `Contract`. withoutSync :: forall (a :: Type). Contract a -> Contract a withoutSync = do local _ { synchronizationParams = disabledSynchronizationParams } From 09f274ad1385e4396ce5d78ccc6505034b763a8a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 3 Mar 2023 15:10:04 +0400 Subject: [PATCH 066/478] Parallelize KeyDir actions --- src/Internal/Test/KeyDir.purs | 47 +++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 8b3e1bd67..b29b84848 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -45,6 +45,7 @@ import Contract.Wallet.KeyFile import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) +import Control.Parallel (parTraverse, parTraverse_) import Ctl.Internal.Deserialization.Keys (freshPrivateKey) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.Plutus.Types.Transaction (_amount, _output) @@ -224,7 +225,7 @@ runContractTestsWithKeyDir params backup = do -- | recovery attempts that happen before each test run. markAsInactive :: FilePath -> Array KeyWallet -> Contract Unit markAsInactive backup wallets = do - for_ wallets \wallet -> do + flip parTraverse_ wallets \wallet -> do networkId <- asks _.networkId let address = addressBech32 $ (unwrap wallet).address networkId @@ -240,7 +241,7 @@ markAsInactive backup wallets = do restoreWallets :: FilePath -> Aff (Array KeyWallet) restoreWallets backup = do walletDirs <- readdir backup <#> Array.filter (String.startsWith "addr") - catMaybes <$> for walletDirs \walletDir -> do + catMaybes <$> flip parTraverse walletDirs \walletDir -> do let paymentKeyFilePath = Path.concat [ backup, walletDir, "payment_signing_key" ] @@ -273,19 +274,20 @@ restoreWallets backup = do -- | Save wallets to files in the backup directory for private keys backupWallets :: FilePath -> ContractEnv -> Array KeyWallet -> Aff Unit -backupWallets backup env walletsArray = liftAff $ for_ walletsArray \wallet -> - do - let - address = addressBech32 $ (unwrap wallet).address env.networkId - payment = keyWalletPrivatePaymentKey wallet - mbStake = keyWalletPrivateStakeKey wallet - folder = Path.concat [ backup, address ] +backupWallets backup env walletsArray = + liftAff $ flip parTraverse_ walletsArray \wallet -> + do + let + address = addressBech32 $ (unwrap wallet).address env.networkId + payment = keyWalletPrivatePaymentKey wallet + mbStake = keyWalletPrivateStakeKey wallet + folder = Path.concat [ backup, address ] - mkdir folder - privatePaymentKeyToFile (Path.concat [ folder, "payment_signing_key" ]) - payment - for mbStake $ privateStakeKeyToFile - (Path.concat [ folder, "stake_signing_key" ]) + mkdir folder + privatePaymentKeyToFile (Path.concat [ folder, "payment_signing_key" ]) + payment + for mbStake $ privateStakeKeyToFile + (Path.concat [ folder, "stake_signing_key" ]) -- | Create a transaction that builds a specific UTxO distribution on the wallets. fundWallets @@ -352,14 +354,15 @@ returnFunds returnFunds backup env allWalletsArray mbFundTotal hasRun = runContractInEnv env $ noLogs do - nonEmptyWallets <- catMaybes <$> for allWalletsArray \wallet -> do - withKeyWallet wallet do - utxoMap <- liftedM "Failed to get utxos" $ - (getWalletAddresses <#> Array.head) >>= traverse utxosAt - if Map.isEmpty utxoMap then do - markAsInactive backup [ wallet ] - pure Nothing - else pure $ Just (utxoMap /\ wallet) + nonEmptyWallets <- catMaybes <$> + flip parTraverse allWalletsArray \wallet -> do + withKeyWallet wallet do + utxoMap <- liftedM "Failed to get utxos" $ + (getWalletAddresses <#> Array.head) >>= traverse utxosAt + if Map.isEmpty utxoMap then do + markAsInactive backup [ wallet ] + pure Nothing + else pure $ Just (utxoMap /\ wallet) when (Array.length nonEmptyWallets /= 0) do -- Print the messages only if we are running during initial fund recovery From 7d006760ca55fae12e7a1e2f41d9152141e2d63f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 5 Mar 2023 11:39:04 +0400 Subject: [PATCH 067/478] Add a link to ply-ctl --- doc/importing-scripts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/importing-scripts.md b/doc/importing-scripts.md index be7705eb9..24d558858 100644 --- a/doc/importing-scripts.md +++ b/doc/importing-scripts.md @@ -137,4 +137,4 @@ Note that we specified plutus version. ### Plutarch -You can use [`ply`](https://github.com/mlabs-haskell/ply). +You can use [`ply`](https://github.com/mlabs-haskell/ply) and [`ply-ctl`](https://github.com/mlabs-haskell/ply-ctl). \ No newline at end of file From c10b72446860fdb0ae55f9cde4d9c76627f66e4d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 13:29:56 +0400 Subject: [PATCH 068/478] Make hashing functions run on public types --- src/Contract/Hashing.purs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs index 863c49c27..b17ae3854 100644 --- a/src/Contract/Hashing.purs +++ b/src/Contract/Hashing.purs @@ -1,8 +1,20 @@ module Contract.Hashing ( module X + , transactionHash + , publicKeyHash + , auxiliaryDataHash ) where +import Prelude + import Contract.Scripts (plutusScriptStakeValidatorHash) as X +import Ctl.Internal.Cardano.Types.Transaction + ( AuxiliaryData + , AuxiliaryDataHash + , PublicKey + , Transaction + , convertPubKey + ) import Ctl.Internal.Hashing ( blake2b224Hash , blake2b224HashHex @@ -16,7 +28,22 @@ import Ctl.Internal.Hashing , sha256HashHex , sha3_256Hash , sha3_256HashHex - , transactionHash ) as X +import Ctl.Internal.Hashing (transactionHash) as Internal import Ctl.Internal.NativeScripts (nativeScriptHash) as X -import Ctl.Internal.Serialization (publicKeyHash) as X +import Ctl.Internal.Serialization (convertTransaction) +import Ctl.Internal.Serialization (publicKeyHash) as Internal +import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) +import Ctl.Internal.Types.PubKeyHash (PubKeyHash) +import Ctl.Internal.Types.Transaction (TransactionHash) +import Data.Newtype (wrap) +import Effect (Effect) + +transactionHash :: Transaction -> Effect TransactionHash +transactionHash tx = Internal.transactionHash <$> convertTransaction tx + +publicKeyHash :: PublicKey -> PubKeyHash +publicKeyHash pk = wrap $ Internal.publicKeyHash $ convertPubKey pk + +auxiliaryDataHash :: AuxiliaryData -> Effect AuxiliaryDataHash +auxiliaryDataHash = hashAuxiliaryData From ef2d6ff1d3dfc71496e7ce7c37e3e9ce680aca3d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 13:44:39 +0400 Subject: [PATCH 069/478] Add start-runtime command to template's package.json and update docs to use it --- doc/development.md | 10 ++++++---- doc/e2e-testing.md | 6 +++--- templates/ctl-scaffold/README.md | 6 +++--- templates/ctl-scaffold/package.json | 1 + 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/doc/development.md b/doc/development.md index c5269d178..834131353 100644 --- a/doc/development.md +++ b/doc/development.md @@ -45,7 +45,7 @@ Running `nix develop` in the root of the repository will place you in a developm To develop locally, you can use one the CTL flake to launch all required services (using default configuration values): -- The easiest way: `nix run -L .#ctl-runtime` will both build and run the services +- The easiest way: `npm run start-runtime` will both build and run the services - The same, but indirectly in your shell: ``` $ nix build -L .#ctl-runtime @@ -59,9 +59,11 @@ To develop locally, you can use one the CTL flake to launch all required service - `spago build` - To test the project, currently only supported when running in a NodeJS environment: - Use `npm run test`, or, if you need to test some specific functionality: - - `npm run unit-test` for unit tests - - `npm run integration-test` for integration tests (requires ctl-runtime running) - - `npm run plutip-test` for Plutip integration tests (does not require ctl-runtime) + - `npm run unit-test` for unit tests (no need for a runtime) + - `npm run integration-test` for integration tests (requires a runtime started) + - `npm run plutip-test` for Plutip integration tests (does not require a runtime) + - `npm run staking-test` to run Plutip-powered tests for ADA staking functionality + - `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs a Blockfrost API key) - `nix build .#checks..ctl-unit-test` will build and run the unit tests (useful for CI) - To run or build/bundle the project for the browser: - `npm run e2e-serve` will start a Webpack development server at `localhost:4008` diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index 65647af1d..242bff4df 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -51,9 +51,9 @@ For a working example see `test/E2E.purs`. It can be run conveniently using `npm The process is as follows: -1. run `npm run e2e-serve` in one shell -2. run `nix run -L .#ctl-runtime` in another shell -3. run `npm run e2e-test` in the third shell +1. run `npm run e2e-serve` in Nix shell (enter `nix develop`) +2. run `npm run start-runtime` in another shell (can be outside of `nix develop` shell) +3. run `npm run e2e-test` in second Nix shell (enter `nix develop`) ## How Wallets are Used diff --git a/templates/ctl-scaffold/README.md b/templates/ctl-scaffold/README.md index 2f065a486..98de618f5 100644 --- a/templates/ctl-scaffold/README.md +++ b/templates/ctl-scaffold/README.md @@ -39,6 +39,6 @@ Here are a few tips on how to get started with testing your code. [Headless browser test suite](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/e2e-testing.md) allows to run user contracts with real wallet browser extensions automatically. -- Start the CTL runtime: `nix run -L .#ctl-scaffold-runtime` -- run `npm run e2e-serve` from Nix shell -- run `npm run e2e-test` from Nix shell +- Start the CTL runtime services: `npm run start-runtime` +- run `npm run e2e-serve` from Nix shell to start a web server +- run `npm run e2e-test` from Nix shell to run the test suite diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index ae06e407a..41f5b6b66 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -10,6 +10,7 @@ "blockfrost-test": "source ./test/blockfrost.env && spago run --main Scaffold.Test.Blockfrost", "test": "spago run --main Test.Scaffold.Main", "e2e-serve": "make e2e-serve", + "start-runtime": "nix run -L .#ctl-scaffold-runtime", "e2e-test": "source ./test/e2e.env && spago test --main Scaffold.Test.E2E -a 'e2e-test run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Scaffold.Test.E2E -a 'e2e-test run --no-headless'", "e2e-browser": "source ./test/e2e.env && spago run --main Scaffold.Test.E2E -a 'e2e-test browser'", From 873d3d2b82fc20b4667257615a25c5ebc438a17e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 14:42:31 +0400 Subject: [PATCH 070/478] Apply review suggestions, Make PoolPubKeyHash a wrapper over PubKeyHash --- CHANGELOG.md | 5 ++++- src/Contract/Wallet/Key.purs | 10 +++++++++- src/Internal/BalanceTx/BalanceTx.purs | 3 +-- src/Internal/BalanceTx/Sync.purs | 17 ++++++++++++----- src/Internal/Cardano/Types/Transaction.purs | 16 +++++++++------- src/Internal/Deserialization/Transaction.purs | 6 +++--- src/Internal/QueryM/Pools.purs | 1 + src/Internal/Serialization.purs | 7 ++++--- src/Internal/Test/KeyDir.purs | 2 +- test/Fixtures.purs | 7 ++++--- test/Plutip/Staking.purs | 5 ++--- 11 files changed, 50 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aec19fc83..fb74f3c52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Automatic retries for `503 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) - New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Added `start-runtime` npm script to the template, to simplify UX ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Changed @@ -67,9 +68,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): - `checkNewUtxosAtAddress` -> `assertNewUtxosAtAddress` - `assertLovelaceDeltaAtAddress` -> `checkLovelaceDeltaAtAddress` - - `assertValueDeltaAtAddress` -> `assertValueDeltaAtAddress` + - `assertValueDeltaAtAddress` -> `checkValueDeltaAtAddress` - New fields added to `ContractParams`: `ContractTimeParams` and `ContractSynchronizationParams`. Default values are `Contract.Config.defaultTimeParams` and `Contract.Config.defaultSynchronizationParams` . See [docs on query layers configuration](./doc/query-layers.md) for more info. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `getWalletBalance` is now implemented via `getWalletUtxos` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `PoolPubKeyHash` is now a wrapper over `PubKeyHash` instead of `Ed25519KeyHash` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `Contract.Wallet.Key.publicKeyFromPrivateKey` uses `PublicKey` type from public API ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) ### Fixed diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index 4defcd9e6..acd9f7065 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -1,11 +1,19 @@ module Contract.Wallet.Key ( module X + , publicKeyFromPrivateKey ) where -import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) as X +import Prelude + +import Ctl.Internal.Cardano.Types.Transaction (PublicKey, mkFromCslPubKey) +import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) as Internal +import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) , keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey , privateKeysToKeyWallet ) as X + +publicKeyFromPrivateKey :: PrivateKey -> PublicKey +publicKeyFromPrivateKey = mkFromCslPubKey <<< Internal.publicKeyFromPrivateKey diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 38c961570..a2ba74044 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -193,8 +193,7 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do >>> _.syncBackendWithWallet >>> _.beforeBalancing ) - do - syncBackendWithWallet + syncBackendWithWallet note CouldNotGetUtxos <$> do Wallet.getWalletUtxos -- Use UTxOs from source addresses diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 63fe840c6..6671cba6a 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -113,6 +113,11 @@ syncBackendWithWallet = whenM isCip30Wallet do -- | The assumption is that the transaction has at least one output and that it -- | hasn't been consumed by another transaction yet. -- | You don't need to use this function if you use `awaitTxConfirmed*`. +-- | +-- | Theoretically, this function does not work well with UTxO locking feature +-- | of Eternl wallet, but in practice, there's a very low chance that the user +-- | will lock a UTxO right after submitting a Tx before we see it. +-- | Please read `doc/query-layers.md` for more context. syncWalletWithTransaction :: TransactionHash -> Contract Unit syncWalletWithTransaction txHash = whenM isCip30Wallet do { delay: delayMs, timeout } <- asks (_.timeParams >>> _.syncWallet) @@ -124,7 +129,8 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do <> guard (not errorOnTimeout) "Continuing anyway. " <> "This may indicate UTxO locking" <> " in use in the wallet. Consider increasing " - <> "`timeParams.syncWallet.timeout` in `ContractParams`" + <> "`timeParams.syncWallet.timeout` in `ContractParams`. " + <> "See `doc/query-layers.md` for more info." queryHandle <- getQueryHandle let sync :: Contract Unit @@ -144,10 +150,11 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do sync -- Collect all the addresses controlled by the wallet -- (reward addresses are omitted on purpose, we don't need them) - ownAddresses <- getControlledAddresses - outputAddresses <- liftAff $ liftEither =<< do - queryHandle.getOutputAddressesByTxHash txHash <#> - bimap (error <<< show) Set.fromFoldable + ownAddresses /\ outputAddresses <- sequential do + Tuple <$> parallel getControlledAddresses <*> parallel do + liftAff $ liftEither =<< do + queryHandle.getOutputAddressesByTxHash txHash <#> + bimap (error <<< show) Set.fromFoldable if Set.isEmpty (Set.intersection ownAddresses outputAddresses) then do logWarn' $ "syncWalletWithTransaction: " <> "Skipping wait for wallet state synchronization, because the " diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index c443f23fb..d118568db 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -134,7 +134,7 @@ import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum (OutputDatum) import Ctl.Internal.Types.PlutusData (PlutusData) -import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash) +import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, PubKeyHash(PubKeyHash)) import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RewardAddress (RewardAddress) @@ -616,7 +616,7 @@ type PoolRegistrationParams = , poolMetadata :: Maybe PoolMetadata } -newtype PoolPubKeyHash = PoolPubKeyHash Ed25519KeyHash +newtype PoolPubKeyHash = PoolPubKeyHash PubKeyHash derive instance Newtype PoolPubKeyHash _ derive instance Eq PoolPubKeyHash @@ -625,28 +625,30 @@ derive instance Generic PoolPubKeyHash _ instance EncodeAeson PoolPubKeyHash where encodeAeson (PoolPubKeyHash kh) = - encodeAeson (ed25519KeyHashToBech32 "pool" kh) + encodeAeson (ed25519KeyHashToBech32 "pool" $ unwrap kh) instance DecodeAeson PoolPubKeyHash where decodeAeson aeson = do str <- decodeAeson aeson - PoolPubKeyHash <$> note (TypeMismatch "PoolPubKeyHash") + PoolPubKeyHash <<< PubKeyHash <$> note (TypeMismatch "PoolPubKeyHash") (ed25519KeyHashFromBech32 str) instance Show PoolPubKeyHash where show (PoolPubKeyHash kh) = "(PoolPubKeyHash (Ed25519KeyHash (unsafePartial $ fromJust $ \ \ed25519KeyHashFromBech32 " - <> show (ed25519KeyHashToBech32 "pool" kh) + <> show (ed25519KeyHashToBech32 "pool" $ unwrap kh) <> ")))" mkPoolPubKeyHash :: Bech32String -> Maybe PoolPubKeyHash mkPoolPubKeyHash str - | startsWith "pool" str = PoolPubKeyHash <$> ed25519KeyHashFromBech32 str + | startsWith "pool" str = PoolPubKeyHash <<< PubKeyHash <$> + ed25519KeyHashFromBech32 str | otherwise = Nothing poolPubKeyHashToBech32 :: PoolPubKeyHash -> Bech32String -poolPubKeyHashToBech32 = unwrap >>> ed25519KeyHashToBech32Unsafe "pool" +poolPubKeyHashToBech32 = unwrap >>> unwrap >>> ed25519KeyHashToBech32Unsafe + "pool" data Certificate = StakeRegistration StakeCredential diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index 518e5a908..44dfde2e2 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -336,7 +336,7 @@ convertCertificate = _convertCert certConvHelper certConvHelper = { stakeDeregistration: T.StakeDeregistration , stakeRegistration: T.StakeRegistration - , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap + , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap , poolRegistration: convertPoolRegistration , poolRetirement: convertPoolRetirement , genesisKeyDelegation: \genesisHash genesisDelegateHash vrfKeyhash -> do @@ -365,7 +365,7 @@ convertPoolRegistration params = do let relays = convertRelay <$> poolParamsRelays containerHelper params T.PoolRegistration - { operator: PoolPubKeyHash $ poolParamsOperator params + { operator: PoolPubKeyHash $ wrap $ poolParamsOperator params , vrfKeyhash: VRFKeyHash $ poolParamsVrfKeyhash params , pledge: poolParamsPledge params , cost: poolParamsCost params @@ -438,7 +438,7 @@ convertPoolRetirement -> UInt -> T.Certificate convertPoolRetirement poolKeyHash epoch = do - T.PoolRetirement { poolKeyHash: wrap poolKeyHash, epoch: wrap epoch } + T.PoolRetirement { poolKeyHash: wrap $ wrap poolKeyHash, epoch: wrap epoch } convertMint :: Csl.Mint -> T.Mint convertMint mint = T.Mint $ mkNonAdaAsset diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 1f785cc0f..93b2a2d1c 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -51,6 +51,7 @@ getPoolParameters poolPubKeyHash = do poolIdStr <- liftM (error "Unable to encode pool pubkey hash to bech32") $ ed25519KeyHashToBech32 "pool" + $ unwrap $ unwrap poolPubKeyHash res <- liftM (error "Unable to find pool ID in the response") $ Map.lookup poolIdStr diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index cfec0c527..08771abab 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -671,7 +671,7 @@ convertCert = case _ of T.StakeDeregistration stakeCredential -> newStakeDeregistrationCertificate stakeCredential T.StakeDelegation stakeCredential keyHash -> - newStakeDelegationCertificate stakeCredential (unwrap keyHash) + newStakeDelegationCertificate stakeCredential (unwrap $ unwrap keyHash) T.PoolRegistration { operator , vrfKeyhash @@ -688,7 +688,8 @@ convertCert = case _ of (unwrap <<< unwrap <$> poolOwners) relays' <- convertRelays relays poolMetadata' <- for poolMetadata convertPoolMetadata - newPoolRegistrationCertificate (unwrap operator) (T.unVRFKeyHash vrfKeyhash) + newPoolRegistrationCertificate (unwrap $ unwrap operator) + (T.unVRFKeyHash vrfKeyhash) pledge cost margin' @@ -697,7 +698,7 @@ convertCert = case _ of relays' (maybeToUor poolMetadata') T.PoolRetirement { poolKeyHash, epoch } -> - newPoolRetirementCertificate (unwrap poolKeyHash) + newPoolRetirementCertificate (unwrap $ unwrap poolKeyHash) (UInt.toInt $ unwrap epoch) T.GenesisKeyDelegation { genesisHash: T.GenesisHash genesisHash diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index b29b84848..95410d6e6 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -424,7 +424,7 @@ mustPayToKeyWallet -> TxConstraints i o mustPayToKeyWallet wallet value = let - convert = wrap <<< publicKeyHash <<< publicKeyFromPrivateKey + convert = publicKeyHash <<< publicKeyFromPrivateKey payment = over wrap convert $ keyWalletPrivatePaymentKey wallet mbStake = over wrap convert <$> keyWalletPrivateStakeKey wallet in diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 1cdf17acf..097b8a7bc 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -582,9 +582,10 @@ txFixture4 = , certs: Just [ StakeRegistration stake1 , StakeDeregistration stake1 - , StakeDelegation stake1 (wrap ed25519KeyHash1) + , StakeDelegation stake1 + (PoolPubKeyHash $ PubKeyHash ed25519KeyHash1) , PoolRegistration - { operator: wrap ed25519KeyHash1 + { operator: PoolPubKeyHash $ PubKeyHash ed25519KeyHash1 , vrfKeyhash: unsafePartial $ fromJust $ hexToByteArray "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" @@ -617,7 +618,7 @@ txFixture4 = } } , PoolRetirement - { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 + { poolKeyHash: PoolPubKeyHash $ PubKeyHash ed25519KeyHash1 , epoch: Epoch one } , GenesisKeyDelegation diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 03e43cde2..bd459c828 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -7,7 +7,6 @@ import Prelude import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash(PubKeyHash) , getNetworkId , ownPaymentPubKeysHashes , ownStakePubKeysHashes @@ -36,6 +35,7 @@ import Contract.Staking , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) +import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Plutip (runPlutipContract, withStakeKey) import Contract.Test.Utils (exitCode, interruptOnSignal) import Contract.Time (getCurrentEpoch) @@ -70,7 +70,6 @@ import Contract.Wallet (withKeyWallet) import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.IncludeDatum (only42Script) -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpretWithConfig) import Data.Array (head, (!!)) import Data.Array as Array import Data.BigInt as BigInt @@ -326,7 +325,7 @@ suite = do } , rewardAccount , poolOwners: - [ PaymentPubKeyHash $ PubKeyHash $ publicKeyHash $ + [ PaymentPubKeyHash $ publicKeyHash $ publicKeyFromPrivateKey (unwrap privateStakeKey) ] From 43aa0536c19701b3b197991348ee48f3c8fd61a5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 14:52:58 +0400 Subject: [PATCH 071/478] Fix missing newline --- doc/importing-scripts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/importing-scripts.md b/doc/importing-scripts.md index 24d558858..7e41d8fcc 100644 --- a/doc/importing-scripts.md +++ b/doc/importing-scripts.md @@ -137,4 +137,4 @@ Note that we specified plutus version. ### Plutarch -You can use [`ply`](https://github.com/mlabs-haskell/ply) and [`ply-ctl`](https://github.com/mlabs-haskell/ply-ctl). \ No newline at end of file +You can use [`ply`](https://github.com/mlabs-haskell/ply) and [`ply-ctl`](https://github.com/mlabs-haskell/ply-ctl). From 45055fe67328fb9379276fc8a1b11da703bf0656 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 15:36:52 +0400 Subject: [PATCH 072/478] Skip flaky staking tests --- test/Plutip/Staking.purs | 430 ++++++++++++++++++++------------------- 1 file changed, 218 insertions(+), 212 deletions(-) diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index bd459c828..3fc8d4b70 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -93,7 +93,7 @@ import Effect.Aff import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) -import Mote (group, test) +import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config) as Common import Test.Ctl.Plutip.Common (privateStakeKey) @@ -386,226 +386,232 @@ suite = do pools <- getPoolIds pools `shouldSatisfy` Array.notElem poolOperator - test "Plutus Stake script: delegate to existing pool & withdraw rewards" do - let - distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 - ] - runPlutipContract config distribution \alice -> - withKeyWallet alice do - alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) - validator <- alwaysSucceedsScript <#> unwrap >>> - PlutusScriptStakeValidator - let - stakeValidatorHash = plutusScriptStakeValidatorHash validator - validatorHash = ValidatorHash $ unwrap stakeValidatorHash - - -- Lock funds on the stake script - do - let - constraints = - mustPayToScriptAddress validatorHash - (ScriptCredential validatorHash) - unitDatum - DatumWitness - $ lovelaceValueOf - $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 - - lookups :: Lookups.ScriptLookups Void - lookups = mempty - - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Register stake script - do + skip $ test + "Plutus Stake script: delegate to existing pool & withdraw rewards" + do + let + distribution = withStakeKey privateStakeKey + [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + ] + runPlutipContract config distribution \alice -> + withKeyWallet alice do + alicePkh /\ aliceStakePkh <- Tuple + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <*> liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeysHashes) + validator <- alwaysSucceedsScript <#> unwrap >>> + PlutusScriptStakeValidator let - constraints = - mustRegisterStakeScript stakeValidatorHash - - lookups :: Lookups.ScriptLookups Void - lookups = mempty - - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Select a pool - poolId <- selectPoolId - - -- Delegate - do + stakeValidatorHash = plutusScriptStakeValidatorHash validator + validatorHash = ValidatorHash $ unwrap stakeValidatorHash + + -- Lock funds on the stake script + do + let + constraints = + mustPayToScriptAddress validatorHash + (ScriptCredential validatorHash) + unitDatum + DatumWitness + $ lovelaceValueOf + $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Register stake script + do + let + constraints = + mustRegisterStakeScript stakeValidatorHash + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Select a pool + poolId <- selectPoolId + + -- Delegate + do + let + constraints = + mustDelegateStakePlutusScript validator unitRedeemer poolId + + lookups :: Lookups.ScriptLookups Void + lookups = + Lookups.ownPaymentPubKeyHash alicePkh <> + Lookups.ownStakePubKeyHash aliceStakePkh + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Wait until rewards let - constraints = - mustDelegateStakePlutusScript validator unitRedeemer poolId - - lookups :: Lookups.ScriptLookups Void - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Wait until rewards - let - -- No need for limit on number of retries, because we have a - -- timeout for tests. - waitUntilRewards = do - mbDelegationsAndRewards <- + -- No need for limit on number of retries, because we have a + -- timeout for tests. + waitUntilRewards = do + mbDelegationsAndRewards <- + getValidatorHashDelegationsAndRewards stakeValidatorHash + case mbDelegationsAndRewards of + Just dels@{ rewards } | unwrap <$> rewards > Just zero -> + pure dels + _ -> do + liftAff $ delay $ Milliseconds 5000.0 + waitUntilRewards + + { rewards: rewardsBefore, delegate } <- waitUntilRewards + delegate `shouldEqual` Just poolId + + -- Withdraw + do + let + constraints = + mustWithdrawStakePlutusScript validator unitRedeemer + + lookups :: Lookups.ScriptLookups Void + lookups = + Lookups.ownPaymentPubKeyHash alicePkh <> + Lookups.ownStakePubKeyHash aliceStakePkh + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Check rewards. + -- Not going to deregister here, because the rewards are added too + -- soon, and we can't deregister the stake key if there are rewards + -- left. + -- This will not happen in real life scenarios, because epoch are + -- (usually) significantly longer. + do + { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ getValidatorHashDelegationsAndRewards stakeValidatorHash - case mbDelegationsAndRewards of - Just dels@{ rewards } | unwrap <$> rewards > Just zero -> - pure dels - _ -> do - liftAff $ delay $ Milliseconds 5000.0 - waitUntilRewards - - { rewards: rewardsBefore, delegate } <- waitUntilRewards - delegate `shouldEqual` Just poolId - - -- Withdraw - do - let - constraints = - mustWithdrawStakePlutusScript validator unitRedeemer - - lookups :: Lookups.ScriptLookups Void - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Check rewards. - -- Not going to deregister here, because the rewards are added too - -- soon, and we can't deregister the stake key if there are rewards - -- left. - -- This will not happen in real life scenarios, because epoch are - -- (usually) significantly longer. - do - { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ - getValidatorHashDelegationsAndRewards stakeValidatorHash - rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore + rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore - test "Native Stake script: delegate to existing pool & withdraw rewards" do - let - distribution = - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 - ] /\ - withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 - ] - runPlutipContract config distribution \(alice /\ bob) -> do - bobPkh /\ bobStakePkh <- withKeyWallet bob do - Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + skip $ test + "Native Stake script: delegate to existing pool & withdraw rewards" + do let - nativeScript = ScriptAny - [ ScriptPubkey $ unwrap $ unwrap bobStakePkh ] - validator = NativeScriptStakeValidator nativeScript - stakeValidatorHash = - nativeScriptStakeValidatorHash validator - - -- Alice - withKeyWallet alice do - -- She locks funds on the stake script (no need for her to validate - -- the script in order to do that) - do - let - constraints = - mustPayToNativeScriptAddress - (NativeScriptHash $ unwrap stakeValidatorHash) - (ScriptCredential $ ValidatorHash $ unwrap stakeValidatorHash) - $ lovelaceValueOf - $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 - - lookups :: Lookups.ScriptLookups Void - lookups = mempty - - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Alice registers stake script (again, no need to validate it) - do - let - constraints = - mustRegisterStakeScript stakeValidatorHash - - lookups :: Lookups.ScriptLookups Void - lookups = mempty - - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Bob performs operations with the stake script that require his - -- (and only his) signature. - withKeyWallet bob do - - -- Select first pool - poolId <- selectPoolId - - -- Delegate - do - let - constraints = - mustDelegateStakeNativeScript validator poolId - - lookups :: Lookups.ScriptLookups Void - lookups = - Lookups.ownPaymentPubKeyHash bobPkh <> - Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Wait until rewards + distribution = + [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + ] /\ + withStakeKey privateStakeKey + [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + ] + runPlutipContract config distribution \(alice /\ bob) -> do + bobPkh /\ bobStakePkh <- withKeyWallet bob do + Tuple + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <*> liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeysHashes) let - -- No need for limit on number of retries, because we have a - -- timeout for tests. - waitUntilRewards = do - mbDelegationsAndRewards <- - getValidatorHashDelegationsAndRewards stakeValidatorHash - case mbDelegationsAndRewards of - Just dels@{ rewards } | unwrap <$> rewards > Just zero -> - pure dels - _ -> do - liftAff $ delay $ Milliseconds 5000.0 - waitUntilRewards - - { rewards: rewardsBefore, delegate } <- waitUntilRewards - delegate `shouldEqual` Just poolId + nativeScript = ScriptAny + [ ScriptPubkey $ unwrap $ unwrap bobStakePkh ] + validator = NativeScriptStakeValidator nativeScript + stakeValidatorHash = + nativeScriptStakeValidatorHash validator - -- Withdraw - do + -- Alice + withKeyWallet alice do + -- She locks funds on the stake script (no need for her to validate + -- the script in order to do that) + do + let + constraints = + mustPayToNativeScriptAddress + (NativeScriptHash $ unwrap stakeValidatorHash) + ( ScriptCredential $ ValidatorHash $ unwrap + stakeValidatorHash + ) + $ lovelaceValueOf + $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Alice registers stake script (again, no need to validate it) + do + let + constraints = + mustRegisterStakeScript stakeValidatorHash + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Bob performs operations with the stake script that require his + -- (and only his) signature. + withKeyWallet bob do + + -- Select first pool + poolId <- selectPoolId + + -- Delegate + do + let + constraints = + mustDelegateStakeNativeScript validator poolId + + lookups :: Lookups.ScriptLookups Void + lookups = + Lookups.ownPaymentPubKeyHash bobPkh <> + Lookups.ownStakePubKeyHash bobStakePkh + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Wait until rewards let - constraints = - mustWithdrawStakeNativeScript validator - - lookups :: Lookups.ScriptLookups Void - lookups = - Lookups.ownPaymentPubKeyHash bobPkh <> - Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog - - -- Check rewards. - -- Not going to deregister here, because the rewards are added too - -- soon, and we can't deregister the stake key if there are rewards - -- left. - -- This will not happen in real life scenarios, because epoch are - -- (usually) significantly longer. - do - { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ - getValidatorHashDelegationsAndRewards stakeValidatorHash - rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore + -- No need for limit on number of retries, because we have a + -- timeout for tests. + waitUntilRewards = do + mbDelegationsAndRewards <- + getValidatorHashDelegationsAndRewards stakeValidatorHash + case mbDelegationsAndRewards of + Just dels@{ rewards } | unwrap <$> rewards > Just zero -> + pure dels + _ -> do + liftAff $ delay $ Milliseconds 5000.0 + waitUntilRewards + + { rewards: rewardsBefore, delegate } <- waitUntilRewards + delegate `shouldEqual` Just poolId + + -- Withdraw + do + let + constraints = + mustWithdrawStakeNativeScript validator + + lookups :: Lookups.ScriptLookups Void + lookups = + Lookups.ownPaymentPubKeyHash bobPkh <> + Lookups.ownStakePubKeyHash bobStakePkh + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + + -- Check rewards. + -- Not going to deregister here, because the rewards are added too + -- soon, and we can't deregister the stake key if there are rewards + -- left. + -- This will not happen in real life scenarios, because epoch are + -- (usually) significantly longer. + do + { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ + getValidatorHashDelegationsAndRewards stakeValidatorHash + rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore - test "PubKey: delegate to existing pool & withdraw rewards" do + skip $ test "PubKey: delegate to existing pool & withdraw rewards" do let distribution = withStakeKey privateStakeKey [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 From 5a524623138368e794139f7c5f3845dac908f7c3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 15:41:06 +0400 Subject: [PATCH 073/478] Make --prune-utxo and --defer-db-indexes kupo flags configurable in Nix --- nix/runtime.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 4fa68e8f3..99addd0da 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -25,6 +25,8 @@ rec { since = "origin"; match = "*/*"; # matches Shelley addresses only tag = "v2.2.0"; + deferDbIndexes = true; # whether to pass --defer-db-indexes + pruneUtxo = true; # whether to pass --prune-utxo # TODO: Do we want to support connection through ogmios? }; # Additional config that will be included in Arion's `docker-compose.raw`. This @@ -123,15 +125,17 @@ rec { "${nodeSocketPath}" "--since" "${kupo.since}" - "--defer-db-indexes" "--match" "${"${kupo.match}"}" "--host" "0.0.0.0" "--workdir" "kupo-db" - "--prune-utxo" - ]; + ] ++ ( + pkgs.lib.lists.optional kupo.pruneUtxo "--prune-utxo" + ) ++ ( + pkgs.lib.lists.optional kupo.deferDbIndexes "--defer-db-indexes" + ); }; }; ogmios = { From ef3c10f3f6f412096888b72a83b1895a66d06984 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 Mar 2023 15:44:21 +0400 Subject: [PATCH 074/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2c7c10f3..2ddf49969 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added - Automatic retries for `403 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) +- Configuration options for Kupo in `buildCtlRuntime` ([`deferDbIndexes`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-defer-db-indexes) and [`pruneUtxo`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-prune-utxo)) ([#1448](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1448)) ### Changed From 3614167bd24d86449b2d2825ba77ab5a8bf11d8c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Mar 2023 14:26:57 +0400 Subject: [PATCH 075/478] Add a note on synchronization to Blockfrost README --- doc/blockfrost.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 1cfdca254..0735311a9 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -12,6 +12,8 @@ - [6. Setting Tx confirmation delay](#6-setting-tx-confirmation-delay) - [7. Test suite setup on PureScript side](#7-test-suite-setup-on-purescript-side) - [Running `Contract`s with Blockfrost](#running-contracts-with-blockfrost) +- [Running Blockfrost locally](#running-blockfrost-locally) + - [Synchronization](#synchronization) - [Limitations](#limitations) - [Performance](#performance) - [Transaction chaining](#transaction-chaining) @@ -136,6 +138,19 @@ type BlockfrostBackendParams = For convenience, use `blockfrostPublicMainnetServerConfig`, `blockfrostPublicPreviewServerConfig` or `blockfrostPublicPreprodServerConfig` for pre-configured `ServerConfig` setups. +## Running Blockfrost locally + +### Synchronization + +Synchronization takes 30 minutes or more. + +`cardano-db-sync` will print messages like these, so you can estimate the sync progress knowing the latest epoch number. + +``` +db-sync-preview_1 | [db-sync-node:Info:70] [2023-03-06 15:09:27.39 UTC] Starting epoch 38 +db-sync-preview_1 | [db-sync-node:Info:70] [2023-03-06 15:09:27.40 UTC] epochPluginInsertBlockDetails: epoch 37 +``` + ## Limitations ### Performance From f1e5dd0a753277a67ddad6224b4f8fe7dc4c81cb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Mar 2023 14:27:57 +0400 Subject: [PATCH 076/478] Move QueryHandle type to a separate module --- src/Internal/Contract/QueryHandle.purs | 54 ++------------------ src/Internal/Contract/QueryHandle/Type.purs | 56 +++++++++++++++++++++ 2 files changed, 59 insertions(+), 51 deletions(-) create mode 100644 src/Internal/Contract/QueryHandle/Type.purs diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 3c4ebc255..909dbcdca 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -1,7 +1,5 @@ module Ctl.Internal.Contract.QueryHandle ( getQueryHandle - , QueryHandle - , AffE ) where import Prelude @@ -9,20 +7,13 @@ import Prelude import Contract.Log (logDebug', logWarn') import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Class (ask) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Transaction - ( PoolPubKeyHash - , Transaction - , TransactionOutput - , UtxoMap - ) import Ctl.Internal.Contract.Monad (Contract, ContractEnv, runQueryM) import Ctl.Internal.Contract.QueryBackend ( BlockfrostBackend , CtlBackend , QueryBackend(BlockfrostBackend, CtlBackend) ) -import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError) +import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) import Ctl.Internal.Hashing (transactionHash) as Hashing import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.QueryM (QueryM) @@ -37,66 +28,27 @@ import Ctl.Internal.QueryM.Kupo , isTxConfirmed , utxosAt ) as Kupo -import Ctl.Internal.QueryM.Ogmios - ( AdditionalUtxoSet - , CurrentEpoch - , SubmitTxR(SubmitFail, SubmitTxSuccess) - , TxEvaluationR - ) -import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) +import Ctl.Internal.QueryM.Ogmios (SubmitTxR(SubmitFail, SubmitTxSuccess)) import Ctl.Internal.QueryM.Pools ( getPoolIds , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) as QueryM import Ctl.Internal.Serialization (convertTransaction, toBytes) as Serialization -import Ctl.Internal.Serialization.Address (Address, NetworkId) -import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Service.Blockfrost ( BlockfrostServiceM , runBlockfrostServiceM ) import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) -import Ctl.Internal.Types.Chain as Chain -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.EraSummaries (EraSummaries) -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Either (Either(Left, Right)) import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe, isJust) +import Data.Maybe (fromMaybe, isJust) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error) -type AffE (a :: Type) = Aff (Either ClientError a) - -type QueryHandle = - { getDatumByHash :: DataHash -> AffE (Maybe Datum) - , getScriptByHash :: ScriptHash -> AffE (Maybe ScriptRef) - , getTxMetadata :: - TransactionHash - -> Aff (Either GetTxMetadataError GeneralTransactionMetadata) - , getUtxoByOref :: TransactionInput -> AffE (Maybe TransactionOutput) - , doesTxExist :: TransactionHash -> AffE Boolean - , utxosAt :: Address -> AffE UtxoMap - , getChainTip :: AffE Chain.Tip - , getCurrentEpoch :: Aff CurrentEpoch - -- TODO Capture errors from all backends - , submitTx :: Transaction -> Aff (Either ClientError TransactionHash) - , evaluateTx :: Transaction -> AdditionalUtxoSet -> Aff TxEvaluationR - , getEraSummaries :: AffE EraSummaries - , getPoolIds :: AffE (Array PoolPubKeyHash) - , getPubKeyHashDelegationsAndRewards :: - NetworkId -> StakePubKeyHash -> AffE (Maybe DelegationsAndRewards) - , getValidatorHashDelegationsAndRewards :: - NetworkId -> StakeValidatorHash -> AffE (Maybe DelegationsAndRewards) - } - getQueryHandle :: Contract QueryHandle getQueryHandle = ask <#> \contractEnv -> case contractEnv.backend of diff --git a/src/Internal/Contract/QueryHandle/Type.purs b/src/Internal/Contract/QueryHandle/Type.purs new file mode 100644 index 000000000..e3c72e82e --- /dev/null +++ b/src/Internal/Contract/QueryHandle/Type.purs @@ -0,0 +1,56 @@ +module Ctl.Internal.Contract.QueryHandle.Type + ( QueryHandle + , AffE + ) where + +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) +import Ctl.Internal.Cardano.Types.Transaction + ( PoolPubKeyHash + , Transaction + , TransactionOutput + , UtxoMap + ) +import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError) +import Ctl.Internal.QueryM.Ogmios + ( AdditionalUtxoSet + , CurrentEpoch + , TxEvaluationR + ) +import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) +import Ctl.Internal.Serialization.Address (Address, NetworkId) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Ctl.Internal.Service.Error (ClientError) +import Ctl.Internal.Types.Chain as Chain +import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.EraSummaries (EraSummaries) +import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) +import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) +import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) +import Data.Either (Either) +import Data.Maybe (Maybe) +import Effect.Aff (Aff) + +type AffE (a :: Type) = Aff (Either ClientError a) + +type QueryHandle = + { getDatumByHash :: DataHash -> AffE (Maybe Datum) + , getScriptByHash :: ScriptHash -> AffE (Maybe ScriptRef) + , getTxMetadata :: + TransactionHash + -> Aff (Either GetTxMetadataError GeneralTransactionMetadata) + , getUtxoByOref :: TransactionInput -> AffE (Maybe TransactionOutput) + , doesTxExist :: TransactionHash -> AffE Boolean + , utxosAt :: Address -> AffE UtxoMap + , getChainTip :: AffE Chain.Tip + , getCurrentEpoch :: Aff CurrentEpoch + -- TODO Capture errors from all backends + , submitTx :: Transaction -> Aff (Either ClientError TransactionHash) + , evaluateTx :: Transaction -> AdditionalUtxoSet -> Aff TxEvaluationR + , getEraSummaries :: AffE EraSummaries + , getPoolIds :: AffE (Array PoolPubKeyHash) + , getPubKeyHashDelegationsAndRewards :: + NetworkId -> StakePubKeyHash -> AffE (Maybe DelegationsAndRewards) + , getValidatorHashDelegationsAndRewards :: + NetworkId -> StakeValidatorHash -> AffE (Maybe DelegationsAndRewards) + } From 2453e405185bc6410713be40232694c269dca947 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Mar 2023 15:59:51 +0400 Subject: [PATCH 077/478] Do not re-construct QueryHandle every time it is needed. --- src/Contract/PlutusData.purs | 2 +- src/Contract/Scripts.purs | 2 +- src/Contract/Staking.purs | 2 +- src/Contract/Time.purs | 2 +- src/Contract/Transaction.purs | 2 +- src/Contract/Utxos.purs | 2 +- src/Internal/BalanceTx/BalanceTx.purs | 3 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 2 +- src/Internal/Contract.purs | 3 +- src/Internal/Contract/AwaitTxConfirmed.purs | 3 +- src/Internal/Contract/LogParams.purs | 15 ++++++++ src/Internal/Contract/MinFee.purs | 4 +- src/Internal/Contract/Monad.purs | 40 +++++++++++++++----- src/Internal/Contract/QueryHandle.purs | 37 ++++++++---------- src/Internal/Contract/Sign.purs | 4 +- src/Internal/Contract/WaitUntilSlot.purs | 3 +- src/Internal/Contract/Wallet.purs | 3 +- src/Internal/Plutip/Server.purs | 9 ++++- src/Internal/Types/ScriptLookups.purs | 3 +- src/Internal/Types/TypedTxOut.purs | 3 +- src/Internal/Wallet/Cip30Mock.purs | 2 +- 21 files changed, 86 insertions(+), 60 deletions(-) create mode 100644 src/Internal/Contract/LogParams.purs diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index 4255b0e3d..1d5334ea0 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -24,7 +24,7 @@ import Prelude import Contract.Monad (Contract) import Control.Parallel (parTraverse) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Deserialization.PlutusData (deserializeData) as Deserialization import Ctl.Internal.FromData ( class FromData diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index d9f5686fc..ccb9057f4 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -28,7 +28,7 @@ import Ctl.Internal.Cardano.Types.NativeScript ) ) as NativeScript import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.NativeScripts (NativeScriptHash(NativeScriptHash)) as X import Ctl.Internal.Scripts ( mintingPolicyHash diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index db7792e8f..0cef956ff 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -10,7 +10,7 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Reader (asks) import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) as X import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 726fb8578..deae988fa 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -22,7 +22,7 @@ import Contract.Chain import Contract.Monad (Contract, liftedE) import Control.Monad.Reader.Class (asks) import Ctl.Internal.Cardano.Types.Transaction (Epoch(Epoch)) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.QueryM.Ogmios (CurrentEpoch(CurrentEpoch)) import Ctl.Internal.QueryM.Ogmios diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 9966627de..092a6b5a4 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -171,7 +171,7 @@ import Ctl.Internal.Contract.AwaitTxConfirmed , isTxConfirmed ) as X import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError) import Ctl.Internal.Contract.QueryHandle.Error ( GetTxMetadataError diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index dc5efb861..7ab7faaad 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -15,7 +15,7 @@ import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) import Contract.Transaction (TransactionInput, TransactionOutput) import Control.Monad.Reader.Class (asks) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletBalance, getWalletUtxos) as Utxos import Ctl.Internal.Plutus.Conversion ( fromPlutusAddress diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 45da66fa5..23f37984e 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -112,8 +112,7 @@ import Ctl.Internal.Cardano.Types.Value import Ctl.Internal.Cardano.Types.Value as Value import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) import Ctl.Internal.Contract.Wallet (getChangeAddress, getWalletAddresses) as Contract.Wallet import Ctl.Internal.Contract.Wallet (getWalletCollateral) import Ctl.Internal.Helpers ((??)) diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 567a4cdc5..1be11135b 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -42,7 +42,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _witnessSet ) import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract.MinFee -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet diff --git a/src/Internal/Contract.purs b/src/Internal/Contract.purs index 8c84aecff..17ac25415 100644 --- a/src/Internal/Contract.purs +++ b/src/Internal/Contract.purs @@ -3,8 +3,7 @@ module Ctl.Internal.Contract (getChainTip, getProtocolParameters) where import Prelude import Control.Monad.Reader.Class (asks) -import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Types.Chain (Tip) import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters) import Data.Either (either) diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index 7946b16f3..a7c038bea 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -11,9 +11,8 @@ import Contract.Monad (liftedE) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf) import Ctl.Internal.Contract (getChainTip) -import Ctl.Internal.Contract.Monad (Contract) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.QueryBackend (getBlockfrostBackend) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Chain as Chain diff --git a/src/Internal/Contract/LogParams.purs b/src/Internal/Contract/LogParams.purs new file mode 100644 index 000000000..f21194a9d --- /dev/null +++ b/src/Internal/Contract/LogParams.purs @@ -0,0 +1,15 @@ +module Ctl.Internal.Contract.LogParams (LogParams) where + +import Prelude + +import Data.Log.Level (LogLevel) +import Data.Log.Message (Message) +import Data.Maybe (Maybe) +import Effect.Aff (Aff) + +type LogParams rest = + { logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + | rest + } diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index a2a04a0f1..f71ece87a 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -14,8 +14,7 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ) import Ctl.Internal.Cardano.Types.Value (Coin) import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletAddresses, getWalletCollateral) import Ctl.Internal.Helpers (liftM, liftedM) import Ctl.Internal.Serialization.Address @@ -121,4 +120,3 @@ getSelfSigners tx additionalUtxos = do toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap toUtxoMap = Map.fromFoldable <<< map (unwrap >>> \({ input, output }) -> input /\ output) - diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 5b61130e0..9d4f8d6ac 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -14,6 +14,8 @@ module Ctl.Internal.Contract.Monad , buildBackend , getLedgerConstants , filterLockedUtxos + , getQueryHandle + , mkQueryHandle ) where import Prelude @@ -34,6 +36,7 @@ import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Contract.Hooks (Hooks) +import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend ( CtlBackend , CtlBackendParams @@ -41,6 +44,11 @@ import Ctl.Internal.Contract.QueryBackend , QueryBackendParams(BlockfrostBackendParams, CtlBackendParams) , getCtlBackend ) +import Ctl.Internal.Contract.QueryHandle + ( queryHandleForBlockfrostBackend + , queryHandleForCtlBackend + ) +import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) import Ctl.Internal.Helpers (filterMapWithKeyM, liftM, logWithLevel) import Ctl.Internal.JsWebSocket (_wsClose, _wsFinalize) import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) @@ -167,6 +175,7 @@ type LedgerConstants = type ContractEnv = { backend :: QueryBackend + , handle :: QueryHandle , networkId :: NetworkId , logLevel :: LogLevel , walletSpec :: Maybe WalletSpec @@ -178,6 +187,17 @@ type ContractEnv = , ledgerConstants :: LedgerConstants } +getQueryHandle :: Contract QueryHandle +getQueryHandle = asks _.handle + +mkQueryHandle :: forall rest. LogParams rest -> QueryBackend -> QueryHandle +mkQueryHandle params queryBackend = + case queryBackend of + CtlBackend backend _ -> + queryHandleForCtlBackend runQueryM params backend + BlockfrostBackend backend _ -> do + queryHandleForBlockfrostBackend params backend + -- | Initializes a `Contract` environment. Does not ensure finalization. -- | Consider using `withContractEnv` if possible - otherwise use -- | `stopContractEnv` to properly finalize. @@ -193,7 +213,8 @@ mkContractEnv params = do b1 <- parallel do backend <- buildBackend logger params.backendParams ledgerConstants <- getLedgerConstants params backend - pure $ merge { backend, ledgerConstants } + pure $ merge + { backend, ledgerConstants, handle: mkQueryHandle params backend } b2 <- parallel do wallet <- buildWallet pure $ merge { wallet } @@ -372,17 +393,18 @@ wrapQueryM qm = do contractEnv <- ask liftAff $ runQueryM contractEnv ctlBackend qm -runQueryM :: forall (a :: Type). ContractEnv -> CtlBackend -> QueryM a -> Aff a -runQueryM contractEnv ctlBackend = - flip runReaderT (mkQueryEnv contractEnv ctlBackend) <<< unwrap +runQueryM + :: forall (a :: Type) rest. LogParams rest -> CtlBackend -> QueryM a -> Aff a +runQueryM params ctlBackend = + flip runReaderT (mkQueryEnv params ctlBackend) <<< unwrap -mkQueryEnv :: ContractEnv -> CtlBackend -> QueryEnv -mkQueryEnv contractEnv ctlBackend = +mkQueryEnv :: forall rest. LogParams rest -> CtlBackend -> QueryEnv +mkQueryEnv params ctlBackend = { config: { kupoConfig: ctlBackend.kupoConfig - , logLevel: contractEnv.logLevel - , customLogger: contractEnv.customLogger - , suppressLogs: contractEnv.suppressLogs + , logLevel: params.logLevel + , customLogger: params.customLogger + , suppressLogs: params.suppressLogs } , runtime: { ogmiosWs: ctlBackend.ogmios.ws diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 909dbcdca..ff617349b 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -1,18 +1,14 @@ module Ctl.Internal.Contract.QueryHandle - ( getQueryHandle + ( queryHandleForCtlBackend + , queryHandleForBlockfrostBackend ) where import Prelude import Contract.Log (logDebug', logWarn') import Control.Monad.Error.Class (throwError) -import Control.Monad.Reader.Class (ask) -import Ctl.Internal.Contract.Monad (Contract, ContractEnv, runQueryM) -import Ctl.Internal.Contract.QueryBackend - ( BlockfrostBackend - , CtlBackend - , QueryBackend(BlockfrostBackend, CtlBackend) - ) +import Ctl.Internal.Contract.LogParams (LogParams) +import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend, CtlBackend) import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) import Ctl.Internal.Hashing (transactionHash) as Hashing import Ctl.Internal.Helpers (logWithLevel) @@ -49,16 +45,13 @@ import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error) -getQueryHandle :: Contract QueryHandle -getQueryHandle = ask <#> \contractEnv -> - case contractEnv.backend of - CtlBackend backend _ -> - queryHandleForCtlBackend contractEnv backend - BlockfrostBackend backend _ -> do - queryHandleForBlockfrostBackend contractEnv backend - -queryHandleForCtlBackend :: ContractEnv -> CtlBackend -> QueryHandle -queryHandleForCtlBackend contractEnv backend = +queryHandleForCtlBackend + :: forall rest + . (forall (a :: Type). LogParams rest -> CtlBackend -> QueryM a -> Aff a) + -> LogParams rest + -> CtlBackend + -> QueryHandle +queryHandleForCtlBackend runQueryM params backend = { getDatumByHash: runQueryM' <<< Kupo.getDatumByHash , getScriptByHash: runQueryM' <<< Kupo.getScriptByHash , getUtxoByOref: runQueryM' <<< Kupo.getUtxoByOref @@ -92,11 +85,11 @@ queryHandleForCtlBackend contractEnv backend = where runQueryM' :: forall (a :: Type). QueryM a -> Aff a - runQueryM' = runQueryM contractEnv backend + runQueryM' = runQueryM params backend queryHandleForBlockfrostBackend - :: ContractEnv -> BlockfrostBackend -> QueryHandle -queryHandleForBlockfrostBackend contractEnv backend = + :: forall rest. LogParams rest -> BlockfrostBackend -> QueryHandle +queryHandleForBlockfrostBackend logParams backend = { getDatumByHash: runBlockfrostServiceM' <<< Blockfrost.getDatumByHash , getScriptByHash: runBlockfrostServiceM' <<< Blockfrost.getScriptByHash , getUtxoByOref: runBlockfrostServiceM' <<< Blockfrost.getUtxoByOref @@ -129,5 +122,5 @@ queryHandleForBlockfrostBackend contractEnv backend = where runBlockfrostServiceM' :: forall (a :: Type). BlockfrostServiceM a -> Aff a runBlockfrostServiceM' = runBlockfrostServiceM - (fromMaybe logWithLevel contractEnv.customLogger contractEnv.logLevel) + (fromMaybe logWithLevel logParams.customLogger logParams.logLevel) backend diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index 7fa2b3d6c..de395a7d2 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -7,8 +7,7 @@ import Prelude import Control.Monad.Reader (asks) import Ctl.Internal.Cardano.Types.Transaction (_body, _inputs, _witnessSet) import Ctl.Internal.Cardano.Types.Transaction as Transaction -import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.Wallet ( getWalletAddresses , getWalletUtxos @@ -99,4 +98,3 @@ walletWaitForInputs txInputs = do -- minutes, so 150 seconds would probably be enough to also account for -- possible network latency. go 150 - diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index c4266223d..f15731672 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -11,8 +11,7 @@ import Contract.Log (logTrace') import Control.Monad.Error.Class (liftEither) import Control.Monad.Reader.Class (asks) import Ctl.Internal.Contract (getChainTip) -import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Types.BigNum as BigNum diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 31541a8e7..499896eac 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -24,8 +24,7 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput import Ctl.Internal.Cardano.Types.Value (Value) import Ctl.Internal.Cardano.Types.Value (geq, lovelaceValueOf) as Value import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) import Ctl.Internal.Helpers (liftM, liftedM) import Ctl.Internal.Serialization.Address ( Address diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 810314c64..5b99345b5 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -26,6 +26,7 @@ import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad ( buildBackend , getLedgerConstants + , mkQueryHandle , stopContractEnv ) import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) @@ -338,7 +339,12 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do let configLogger = Just $ map liftEffect <<< addLogEntry - bracket (mkClusterContractEnv plutipCfg suppressedLogger configLogger) + bracket + ( mkClusterContractEnv + plutipCfg { customLogger = configLogger } + suppressedLogger + configLogger + ) stopContractEnv \env -> pure { env @@ -584,6 +590,7 @@ mkClusterContractEnv plutipCfg logger customLogger = do backend pure { backend + , handle: mkQueryHandle plutipCfg backend , networkId: MainnetId , logLevel: plutipCfg.logLevel , walletSpec: Nothing diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 3eacf38b9..1396b54e8 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -101,8 +101,7 @@ import Ctl.Internal.Cardano.Types.Value , split ) import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, wrapQueryM) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers (liftM, (<\>)) import Ctl.Internal.IsData (class IsData) diff --git a/src/Internal/Types/TypedTxOut.purs b/src/Internal/Types/TypedTxOut.purs index a35410ef8..2d7deaa54 100644 --- a/src/Internal/Types/TypedTxOut.purs +++ b/src/Internal/Types/TypedTxOut.purs @@ -38,8 +38,7 @@ import Ctl.Internal.Cardano.Types.Transaction ( TransactionOutput(TransactionOutput) ) import Ctl.Internal.Cardano.Types.Value (Value) -import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers (liftM) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 7bd180da8..576e5280b 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -13,7 +13,7 @@ import Control.Promise (Promise, fromAff) import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) -import Ctl.Internal.Contract.QueryHandle (getQueryHandle) +import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Deserialization.Transaction (deserializeTransaction) import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.Serialization From 318a71c68ca25e340b41617bd6eb9bebf7a61a5a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Mar 2023 19:55:53 +0400 Subject: [PATCH 078/478] - Make Ogmios params configurable via env variables in Blockfrost test suite - specify dependencies of blockfrost service in nix runtime - add NPM scripts for local blockfrost tests - make it possible to combine BF and Ogmios in query handle --- nix/runtime.nix | 1 + package.json | 2 + src/Contract/Config.purs | 1 + src/Contract/Test/Blockfrost.purs | 108 ++++++++++++++------ src/Internal/Contract/Monad.purs | 15 ++- src/Internal/Contract/QueryBackend.purs | 6 ++ src/Internal/Contract/QueryHandle.purs | 23 +++++ src/Internal/Test/KeyDir.purs | 24 +++-- templates/ctl-scaffold/test/Blockfrost.purs | 3 +- test/Blockfrost/Contract.purs | 9 +- test/blockfrost-local.env | 23 +++++ 11 files changed, 167 insertions(+), 48 deletions(-) create mode 100644 test/blockfrost-local.env diff --git a/nix/runtime.nix b/nix/runtime.nix index e2cc23673..67ce2f3ee 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -222,6 +222,7 @@ rec { blockfrost.service = { useHostStore = true; ports = [ (bindPort blockfrost.port) ]; + depends_on = [ "db-sync-${network.name}" "postgres-${network.name}" ]; environment = { BLOCKFROST_CONFIG_SERVER_PORT = toString blockfrost.port; BLOCKFROST_CONFIG_SERVER_LISTEN_ADDRESS = "0.0.0.0"; diff --git a/package.json b/package.json index 97a463cbf..fdc0085b5 100755 --- a/package.json +++ b/package.json @@ -12,8 +12,10 @@ "scripts": { "test": "npm run unit-test && npm run integration-test && npm run plutip-test && npm run staking-test", "start-runtime": "nix run -L .#ctl-runtime", + "start-blockfrost-runtime": "nix run -L .#ctl-runtime-blockfrost", "integration-test": "spago run --main Test.Ctl.Integration", "blockfrost-test": "source ./test/blockfrost.env && spago run --main Test.Ctl.Blockfrost.Contract", + "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Test.Ctl.Blockfrost.Contract", "unit-test": "spago run --main Test.Ctl.Unit", "plutip-test": "spago run --main Test.Ctl.Plutip", "staking-test": "spago run --main Test.Ctl.Plutip.Staking", diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 9ca9e43e4..705f65410 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -40,6 +40,7 @@ import Ctl.Internal.Contract.QueryBackend , getCtlBackend , mkBlockfrostBackendParams , mkCtlBackendParams + , mkSelfHostedBlockfrostBackendParams ) as X import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) diff --git a/src/Contract/Test/Blockfrost.purs b/src/Contract/Test/Blockfrost.purs index 88c3d5802..b446c5675 100644 --- a/src/Contract/Test/Blockfrost.purs +++ b/src/Contract/Test/Blockfrost.purs @@ -19,13 +19,19 @@ import Contract.Config ) import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Internal.ServerConfig (defaultKupoServerConfig) import Ctl.Internal.Test.ContractTest (ContractTest) import Ctl.Internal.Test.E2E.Runner (readBoolean) import Ctl.Internal.Test.KeyDir (runContractTestsWithKeyDir) -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isNothing, maybe) +import Data.Array (any) +import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, isNothing, maybe) import Data.Newtype (unwrap) import Data.Number as Number +import Data.String (joinWith) import Data.Time.Duration (Seconds(Seconds)) +import Data.Traversable (traverse) +import Data.Tuple (Tuple(Tuple)) +import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt as UInt import Effect (Effect) import Effect.Aff (Aff) @@ -104,20 +110,11 @@ runContractTestsWithBlockfrost executeContractTestsWithBlockfrost :: Config -> ContractParams - -> Maybe CtlBackendParams -> TestPlanM ContractTest Unit -> Aff Unit -executeContractTestsWithBlockfrost - testConfig - contractParams - mbCtlBackendParams - suite = do +executeContractTestsWithBlockfrost testConfig contractParams suite = do blockfrostApiKey <- liftEffect $ lookupEnv "BLOCKFROST_API_KEY" <#> notEmptyString - when (isNothing blockfrostApiKey) do - liftEffect $ Console.warn $ - "Warning: BLOCKFROST_API_KEY is not set. " <> - "If you are using a public instance, the tests will fail" privatePaymentKeyFile <- getEnvVariable "PRIVATE_PAYMENT_KEY_FILE" "Please specify a payment key file" @@ -134,7 +131,12 @@ executeContractTestsWithBlockfrost <> "s." testKeysDirectory <- getEnvVariable "BACKUP_KEYS_DIR" "Please specify a directory to store temporary private keys in" - blockfrostConfig <- liftEffect $ readBlockfrostServerConfig + blockfrostConfig /\ mbOgmiosConfig <- + liftEffect $ readBlockfrostServerConfigs + when (isNothing blockfrostApiKey && isNothing mbOgmiosConfig) do + liftEffect $ Console.warn $ + "Warning: BLOCKFROST_API_KEY is not set. " <> + "If you are using a public instance, the tests will fail" let backendParams = { blockfrostConfig @@ -143,7 +145,11 @@ executeContractTestsWithBlockfrost } interpretWithConfig testConfig $ runContractTestsWithBlockfrost contractParams backendParams - mbCtlBackendParams + ( mbOgmiosConfig <#> \ogmiosConfig -> + { ogmiosConfig: ogmiosConfig + , kupoConfig: defaultKupoServerConfig -- will never be used + } + ) { privateKeySources: { payment: PrivatePaymentKeyFile privatePaymentKeyFile , stake: PrivateStakeKeyFile <$> mbPrivateStakeKeyFile @@ -159,13 +165,6 @@ executeContractTestsWithBlockfrost Just result -> pure result pure res - -- Treat env variables set to "" as empty - notEmptyString :: Maybe String -> Maybe String - notEmptyString = - case _ of - Just "" -> Nothing - other -> other - parseConfirmationDelay :: Maybe String -> Effect (Maybe Seconds) parseConfirmationDelay = notEmptyString >>> maybe (pure Nothing) \str -> @@ -174,18 +173,67 @@ executeContractTestsWithBlockfrost "TX_CONFIRMATION_DELAY_SECONDS must be set to a valid number" Just number -> pure $ Just $ Seconds number -readBlockfrostServerConfig :: Effect ServerConfig -readBlockfrostServerConfig = do - port <- lookupEnv "BLOCKFROST_PORT" >>= \mbPort -> - liftMaybe (error "Unable to read BLOCKFROST_PORT environment variable") +readBlockfrostServerConfigs :: Effect (ServerConfig /\ Maybe ServerConfig) +readBlockfrostServerConfigs = + Tuple <$> readServerConfig "BLOCKFROST" <*> readServerConfigMaybe "OGMIOS" + +readServerConfig :: String -> Effect ServerConfig +readServerConfig service = do + port <- lookupEnv (service <> "_PORT") >>= \mbPort -> + liftMaybe + (error $ "Unable to read " <> service <> "_PORT environment variable") (mbPort >>= UInt.fromString) - host <- lookupEnv "BLOCKFROST_HOST" >>= - liftMaybe (error "Unable to read BLOCKFROST_HOST") - secure <- lookupEnv "BLOCKFROST_SECURE" >>= \mbSecure -> + host <- lookupEnv (service <> "_HOST") >>= + liftMaybe (error $ "Unable to read " <> service <> "_HOST") + secure <- lookupEnv (service <> "_SECURE") >>= \mbSecure -> liftMaybe - ( error - "Unable to read BLOCKFROST_SECURE ('true' - use HTTPS, 'false' - use HTTP)" + ( error $ + "Unable to read " <> service <> + "_SECURE ('true' - use HTTPS, 'false' - use HTTP)" ) (mbSecure >>= readBoolean) - path <- lookupEnv "BLOCKFROST_PATH" + path <- lookupEnv $ service <> "_PATH" pure { port, host, secure, path } + +readServerConfigMaybe :: String -> Effect (Maybe ServerConfig) +readServerConfigMaybe service = do + mbPort <- (lookupEnv (service <> "_PORT") <#> notEmptyString) >>= traverse + \port -> + liftMaybe + (error $ "Unable to read " <> service <> "_PORT environment variable") + (UInt.fromString port) + mbHost <- lookupEnv (service <> "_HOST") <#> notEmptyString + mbSecure <- lookupEnv (service <> "_SECURE") >>= traverse \secure -> + liftMaybe + ( error $ + "Unable to read " <> service <> + "_SECURE ('true' - use HTTPS, 'false' - use HTTP)" + ) + (readBoolean secure) + mbPath <- lookupEnv (service <> "_PATH") + let + vars = [ void mbPort, void mbHost, void mbSecure, void mbPath ] + when (any isJust vars && any isNothing vars) do + liftEffect $ throw $ forgotSomethingError + pure $ do + port <- mbPort + host <- mbHost + secure <- mbSecure + pure { port, host, secure, path: mbPath } + where + forgotSomethingError = + "All of " + <> joinWith ", " + [ service <> "_HOST" + , service <> "_PORT" + , service <> "_SECURE" + , service <> "_PATH" + ] + <> " must be provided!" + +-- | Treat env variables set to "" as empty +notEmptyString :: Maybe String -> Maybe String +notEmptyString = + case _ of + Just "" -> Nothing + other -> other diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 9d4f8d6ac..d19056650 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -47,6 +47,7 @@ import Ctl.Internal.Contract.QueryBackend import Ctl.Internal.Contract.QueryHandle ( queryHandleForBlockfrostBackend , queryHandleForCtlBackend + , queryHandleForSelfHostedBlockfrostBackend ) import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) import Ctl.Internal.Helpers (filterMapWithKeyM, liftM, logWithLevel) @@ -78,7 +79,7 @@ import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), isRight) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe(Just), fromMaybe) +import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Traversable (for_, traverse, traverse_) import Effect (Effect) @@ -193,10 +194,14 @@ getQueryHandle = asks _.handle mkQueryHandle :: forall rest. LogParams rest -> QueryBackend -> QueryHandle mkQueryHandle params queryBackend = case queryBackend of - CtlBackend backend _ -> - queryHandleForCtlBackend runQueryM params backend - BlockfrostBackend backend _ -> do - queryHandleForBlockfrostBackend params backend + CtlBackend ctlBackend _ -> + queryHandleForCtlBackend runQueryM params ctlBackend + BlockfrostBackend blockfrostBackend Nothing -> do + queryHandleForBlockfrostBackend params blockfrostBackend + BlockfrostBackend blockfrostBackend (Just ctlBackend) -> do + queryHandleForSelfHostedBlockfrostBackend params blockfrostBackend + runQueryM + ctlBackend -- | Initializes a `Contract` environment. Does not ensure finalization. -- | Consider using `withContractEnv` if possible - otherwise use diff --git a/src/Internal/Contract/QueryBackend.purs b/src/Internal/Contract/QueryBackend.purs index 711a7154a..766266128 100644 --- a/src/Internal/Contract/QueryBackend.purs +++ b/src/Internal/Contract/QueryBackend.purs @@ -9,6 +9,7 @@ module Ctl.Internal.Contract.QueryBackend , getBlockfrostBackend , getCtlBackend , mkBlockfrostBackendParams + , mkSelfHostedBlockfrostBackendParams , mkCtlBackendParams ) where @@ -76,3 +77,8 @@ mkCtlBackendParams = flip CtlBackendParams Nothing mkBlockfrostBackendParams :: BlockfrostBackendParams -> QueryBackendParams mkBlockfrostBackendParams = flip BlockfrostBackendParams Nothing + +mkSelfHostedBlockfrostBackendParams + :: BlockfrostBackendParams -> CtlBackendParams -> QueryBackendParams +mkSelfHostedBlockfrostBackendParams bf ctl = BlockfrostBackendParams bf + (Just ctl) diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index ff617349b..f26c97cd7 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -1,6 +1,7 @@ module Ctl.Internal.Contract.QueryHandle ( queryHandleForCtlBackend , queryHandleForBlockfrostBackend + , queryHandleForSelfHostedBlockfrostBackend ) where import Prelude @@ -124,3 +125,25 @@ queryHandleForBlockfrostBackend logParams backend = runBlockfrostServiceM' = runBlockfrostServiceM (fromMaybe logWithLevel logParams.customLogger logParams.logLevel) backend + +queryHandleForSelfHostedBlockfrostBackend + :: forall rest + . LogParams rest + -> BlockfrostBackend + -> (forall (a :: Type). LogParams rest -> CtlBackend -> QueryM a -> Aff a) + -> CtlBackend + -> QueryHandle +queryHandleForSelfHostedBlockfrostBackend + params + blockfrostBackend + runQueryM + ctlBackend = + let + blockfrostQueryHandle = queryHandleForBlockfrostBackend params + blockfrostBackend + ctlQueryHandle = queryHandleForCtlBackend runQueryM params ctlBackend + in + blockfrostQueryHandle + { evaluateTx = ctlQueryHandle.evaluateTx + , submitTx = ctlQueryHandle.submitTx -- TODO + } diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 8b3e1bd67..2e4e11c8c 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -163,8 +163,8 @@ runContractTestsWithKeyDir params backup = do "The test engine cannot satisfy the requested ADA distribution " <> "because there are not enough funds left. \n\n" <> "Total required value is: " - <> BigInt.toString distrTotalAmount - <> " Lovelace (estimated)\n" + <> showLovelace distrTotalAmount + <> " (estimated)\n" <> "Total available value is: " <> BigInt.toString (valueToCoin' balance) <> "\nThe test suite is using this address: " @@ -303,8 +303,8 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do -- Use log so we can see, regardless of suppression info $ joinWith " " [ "Sent" - , BigInt.toString fundTotal - , "lovelace to test wallets" + , showLovelace fundTotal + , "to test wallets" ] pure fundTotal @@ -396,13 +396,12 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = info $ joinWith " " $ [ "Refunded" - , BigInt.toString refundTotal - , "Lovelace" + , showLovelace refundTotal ] <> maybe [] ( \fundTotal -> [ "of" - , BigInt.toString fundTotal - , "Lovelace from test wallets" + , showLovelace fundTotal + , "from test wallets" ] ) mbFundTotal @@ -412,6 +411,15 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = <> "need any funds to succeed. Consider using `noWallet` to " <> "skip funds distribution step" +showLovelace :: BigInt -> String +showLovelace n = + if isAdaExact then BigInt.toString (n `div` million) <> " ADA" + else BigInt.toString n <> " Lovelace" + where + million = BigInt.fromInt 1_000_000 + isAdaExact = + (n `div` million) * million == n + -- | A helper function that abstracts away conversion between `KeyWallet` and -- | its address and just gives us a `TxConstraints` value. mustPayToKeyWallet diff --git a/templates/ctl-scaffold/test/Blockfrost.purs b/templates/ctl-scaffold/test/Blockfrost.purs index 678568e5f..eb43193cb 100644 --- a/templates/ctl-scaffold/test/Blockfrost.purs +++ b/templates/ctl-scaffold/test/Blockfrost.purs @@ -8,7 +8,7 @@ import Prelude import Contract.Config (testnetConfig) import Contract.Monad (launchAff_) import Contract.Test.Blockfrost (executeContractTestsWithBlockfrost) -import Data.Maybe (Maybe(Nothing, Just)) +import Data.Maybe (Maybe(Just)) import Data.Time.Duration (Milliseconds(Milliseconds)) import Effect (Effect) import Test.Scaffold.Main (suite) @@ -19,5 +19,4 @@ main = launchAff_ do executeContractTestsWithBlockfrost TestSpec.defaultConfig { timeout = Just $ Milliseconds 1000000.0 } testnetConfig { suppressLogs = true } - Nothing suite diff --git a/test/Blockfrost/Contract.purs b/test/Blockfrost/Contract.purs index 7d1e1a2e1..7f841b59b 100644 --- a/test/Blockfrost/Contract.purs +++ b/test/Blockfrost/Contract.purs @@ -6,10 +6,14 @@ module Test.Ctl.Blockfrost.Contract (main) where import Prelude -import Contract.Config (testnetConfig) +import Contract.Config + ( defaultKupoServerConfig + , defaultOgmiosWsConfig + , testnetConfig + ) import Contract.Monad (launchAff_) import Contract.Test.Blockfrost (executeContractTestsWithBlockfrost) -import Data.Maybe (Maybe(Nothing, Just)) +import Data.Maybe (Maybe(Just)) import Data.Time.Duration (Milliseconds(Milliseconds)) import Effect (Effect) import Test.Ctl.Integration as IntegrationTest @@ -21,7 +25,6 @@ main = launchAff_ do executeContractTestsWithBlockfrost TestSpec.defaultConfig { timeout = Just $ Milliseconds 1000000.0 } testnetConfig { suppressLogs = true } - Nothing do Plutip.suite IntegrationTest.stakingSuite diff --git a/test/blockfrost-local.env b/test/blockfrost-local.env new file mode 100644 index 000000000..db168b399 --- /dev/null +++ b/test/blockfrost-local.env @@ -0,0 +1,23 @@ +# Blockfrost test suite configuration. +# +# This file specifies some environment variables that can be read by +# `executePlutipTestsWithBlockfrost` function to run contract tests using +# Blockfrost. +# +# See ../doc/blockfrost.md for info on how to set it up + +export BLOCKFROST_API_KEY= +export PRIVATE_PAYMENT_KEY_FILE= +export PRIVATE_STAKE_KEY_FILE= +export BACKUP_KEYS_DIR=./test-data/keys/ +export TX_CONFIRMATION_DELAY_SECONDS=30 + +export BLOCKFROST_PORT=3000 +export BLOCKFROST_HOST=127.0.0.1 +export BLOCKFROST_SECURE=false +export BLOCKFROST_PATH="" + +export OGMIOS_PORT=1337 +export OGMIOS_HOST=127.0.0.1 +export OGMIOS_PATH="" +export OGMIOS_SECURE=false From f46247826949b752638e86b0e1e75fac3f4c08ec Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Mar 2023 23:29:18 +0400 Subject: [PATCH 079/478] Update the docs --- doc/balancing.md | 5 ++++ doc/blockfrost.md | 27 +++++++++++++++++-- templates/ctl-scaffold/package.json | 4 ++- .../ctl-scaffold/test/blockfrost-local.env | 23 ++++++++++++++++ templates/ctl-scaffold/test/blockfrost.env | 2 +- 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 templates/ctl-scaffold/test/blockfrost-local.env diff --git a/doc/balancing.md b/doc/balancing.md index a78527ea5..8dbea4d1b 100644 --- a/doc/balancing.md +++ b/doc/balancing.md @@ -4,6 +4,7 @@ - [Configuring balancing process](#configuring-balancing-process) - [Balancer constraints](#balancer-constraints) - [Concurrent spending](#concurrent-spending) + - [Balancing a Tx for other wallet](#balancing-a-tx-for-other-wallet) - [Balancing process limitations](#balancing-process-limitations) @@ -27,6 +28,10 @@ Attempting to spend UTxOs concurrently leads to some of the transactions being r Obviously, the number of available UTxOs must be greater than the number of transactions. CTL will throw an exception if it's not the case. +## Balancing a Tx for other wallet + +Setting `mustUseUtxosAtAddress` and `mustSendChangeToAddress` at the same time allows to build a transaction without any connection to the current wallet. For example, it's possible to balance it on server-side and send to the user to sign, or balance a Tx on one user's side while leaving fees at the expense of some other user. + ## Balancing process limitations It may be surprising at first, but balancing a transaction on Cardano is generally undecidable. diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 0735311a9..cdb490542 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -13,6 +13,7 @@ - [7. Test suite setup on PureScript side](#7-test-suite-setup-on-purescript-side) - [Running `Contract`s with Blockfrost](#running-contracts-with-blockfrost) - [Running Blockfrost locally](#running-blockfrost-locally) + - [Configuration](#configuration) - [Synchronization](#synchronization) - [Limitations](#limitations) - [Performance](#performance) @@ -140,11 +141,33 @@ For convenience, use `blockfrostPublicMainnetServerConfig`, `blockfrostPublicPre ## Running Blockfrost locally +Blockfrost can be started locally using [blockfrost-backend-ryo](https://github.com/blockfrost/blockfrost-backend-ryo) distribution. It is included in CTL runtime as optional service, use `npm run start-blockfrost-runtime` instead of `npm run start-runtime`. + +The differences are: + +- There's no need to provide an API key +- `/tx/submit` and `/utils/txs/evaluate` endpoints are not provided by the distribution, so Ogmios should be used for these. + +### Configuration + +Configuration is the same as above, but `mkSelfHostedBlockfrostBackendParams` should be used, to specify Ogmios and Kupo parameters (only Ogmios will in fact be used). + +The Blockfrost test suite can also be configured for local runtime, see [`blockfrost-local.env`](../test/blockfrost-local.env) for an example. + +To let it connect to local Ogmios, the parameters should be provided separately: + +```bash +export OGMIOS_PORT=1337 +export OGMIOS_HOST=127.0.0.1 +export OGMIOS_PATH="" +export OGMIOS_SECURE=false +``` + ### Synchronization -Synchronization takes 30 minutes or more. +`cardano-db-sync` takes 30 minutes or more to synchronize with `preview` network (and many hours with `mainnet`). -`cardano-db-sync` will print messages like these, so you can estimate the sync progress knowing the latest epoch number. +It will print messages like these, so you can estimate the sync progress knowing the latest epoch number: ``` db-sync-preview_1 | [db-sync-node:Info:70] [2023-03-06 15:09:27.39 UTC] Starting epoch 38 diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index ae06e407a..1bc663158 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -7,8 +7,10 @@ "test": "test" }, "scripts": { - "blockfrost-test": "source ./test/blockfrost.env && spago run --main Scaffold.Test.Blockfrost", + "start-blockfrost-runtime": "nix run -L .#ctl-runtime-blockfrost", "test": "spago run --main Test.Scaffold.Main", + "blockfrost-test": "source ./test/blockfrost.env && spago run --main Scaffold.Test.Blockfrost", + "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Scaffold.Test.Blockfrost", "e2e-serve": "make e2e-serve", "e2e-test": "source ./test/e2e.env && spago test --main Scaffold.Test.E2E -a 'e2e-test run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Scaffold.Test.E2E -a 'e2e-test run --no-headless'", diff --git a/templates/ctl-scaffold/test/blockfrost-local.env b/templates/ctl-scaffold/test/blockfrost-local.env new file mode 100644 index 000000000..da36f7a8b --- /dev/null +++ b/templates/ctl-scaffold/test/blockfrost-local.env @@ -0,0 +1,23 @@ +# Blockfrost test suite configuration. +# +# This file specifies some environment variables that can be read by +# `executePlutipTestsWithBlockfrost` function to run contract tests using +# Blockfrost. +# +# See https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/blockfrost.md for info on how to set it up + +export BLOCKFROST_API_KEY= +export PRIVATE_PAYMENT_KEY_FILE= +export PRIVATE_STAKE_KEY_FILE= +export BACKUP_KEYS_DIR=./test-data/keys/ +export TX_CONFIRMATION_DELAY_SECONDS=30 + +export BLOCKFROST_PORT=3000 +export BLOCKFROST_HOST=127.0.0.1 +export BLOCKFROST_SECURE=false +export BLOCKFROST_PATH="" + +export OGMIOS_PORT=1337 +export OGMIOS_HOST=127.0.0.1 +export OGMIOS_PATH="" +export OGMIOS_SECURE=false diff --git a/templates/ctl-scaffold/test/blockfrost.env b/templates/ctl-scaffold/test/blockfrost.env index c1cce9423..ce92a09ae 100644 --- a/templates/ctl-scaffold/test/blockfrost.env +++ b/templates/ctl-scaffold/test/blockfrost.env @@ -1,7 +1,7 @@ # Blockfrost test suite configuration. # # This file specifies some environment variables that can be read by -# `executePlutipTestsWithBlockfrost` function to run plutip tests using +# `executePlutipTestsWithBlockfrost` function to run contract tests using # Blockfrost. # # See https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/blockfrost.md for info on how to set it up From 947379dfd83bec4a3bdf1b2990e3bf9d1c0099f5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 00:09:37 +0400 Subject: [PATCH 080/478] Update template and fix warnings --- templates/ctl-scaffold/flake.lock | 16066 ++++++++++++++------ templates/ctl-scaffold/flake.nix | 4 +- templates/ctl-scaffold/package.json | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- test/Blockfrost/Contract.purs | 6 +- 6 files changed, 11690 insertions(+), 4396 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index ef566500c..30c2ee881 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -132,6 +132,70 @@ "type": "github" } }, + "HTTP_13": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_14": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_15": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_16": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -260,4822 +324,11465 @@ "type": "github" } }, - "blank": { + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_2": { + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_3": { + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_5" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_4": { + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank_5": { + "agenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "bot-plutus-interface": { + "agenix_3": { "inputs": { - "CHaP": "CHaP_4", - "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_4", "nixpkgs": [ "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs-unstable" + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" ] }, "locked": { - "lastModified": 1670496765, - "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32": { - "flake": false, + "agenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_10": { - "flake": false, + "agenix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_11": { - "flake": false, + "agenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_33" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_12": { - "flake": false, + "agenix_7": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_2": { - "flake": false, + "agenix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "cabal-32_3": { - "flake": false, + "alejandra": { + "inputs": { + "flakeCompat": "flakeCompat", + "nixpkgs": "nixpkgs_28" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1646360966, + "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", + "owner": "kamadorueda", + "repo": "alejandra", + "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "kamadorueda", + "repo": "alejandra", "type": "github" } }, - "cabal-32_4": { + "bats-assert": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_5": { + "bats-assert_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_6": { + "bats-assert_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_7": { + "bats-support": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_8": { + "bats-support_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-32_9": { + "bats-support_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34": { - "flake": false, + "bitte": { + "inputs": { + "agenix": "agenix", + "agenix-cli": "agenix-cli", + "blank": "blank", + "capsules": "capsules", + "data-merge": "data-merge", + "deploy": "deploy_2", + "fenix": "fenix_4", + "hydra": "hydra_2", + "n2c": "n2c", + "nix": "nix_4", + "nixpkgs": "nixpkgs_22", + "nixpkgs-docker": "nixpkgs-docker", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "nomad-driver-nix": "nomad-driver-nix_2", + "nomad-follower": "nomad-follower_2", + "ops-lib": "ops-lib_2", + "ragenix": "ragenix_3", + "std": "std", + "terranix": "terranix_2", + "utils": "utils_10" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1661790449, + "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_10": { - "flake": false, + "bitte-cells": { + "inputs": { + "cardano-db-sync": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-db-sync" + ], + "cardano-iohk-nix": [ + "ctl", + "db-sync", + "cardano-world", + "iohk-nix" + ], + "cardano-node": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-node" + ], + "cardano-wallet": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet" + ], + "cicero": "cicero", + "data-merge": [ + "ctl", + "db-sync", + "cardano-world", + "data-merge" + ], + "n2c": [ + "ctl", + "db-sync", + "cardano-world", + "n2c" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ], + "std": [ + "ctl", + "db-sync", + "cardano-world", + "std" + ] + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1660761733, + "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", + "owner": "input-output-hk", + "repo": "bitte-cells", + "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte-cells", "type": "github" } }, - "cabal-34_11": { - "flake": false, + "bitte_2": { + "inputs": { + "agenix": "agenix_2", + "agenix-cli": "agenix-cli_2", + "blank": "blank_2", + "deploy": "deploy", + "fenix": "fenix_2", + "hydra": "hydra", + "nix": "nix", + "nixpkgs": "nixpkgs_8", + "nixpkgs-unstable": "nixpkgs-unstable", + "nomad": "nomad", + "nomad-driver-nix": "nomad-driver-nix", + "nomad-follower": "nomad-follower", + "ops-lib": "ops-lib", + "ragenix": "ragenix", + "terranix": "terranix", + "utils": "utils_5", + "vulnix": "vulnix" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_12": { - "flake": false, + "bitte_3": { + "inputs": { + "agenix": "agenix_6", + "agenix-cli": "agenix-cli_3", + "blank": "blank_3", + "deploy": "deploy_3", + "fenix": "fenix_6", + "hydra": "hydra_3", + "nix": "nix_8", + "nixpkgs": "nixpkgs_37", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "nomad": "nomad_2", + "nomad-driver-nix": "nomad-driver-nix_3", + "nomad-follower": "nomad-follower_3", + "ops-lib": "ops-lib_3", + "ragenix": "ragenix_4", + "terranix": "terranix_3", + "utils": "utils_19", + "vulnix": "vulnix_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "blank": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_3": { - "flake": false, + "blank_2": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_4": { - "flake": false, + "blank_3": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_5": { - "flake": false, + "blank_4": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_6": { - "flake": false, + "blank_5": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_7": { - "flake": false, + "blank_6": { "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_8": { - "flake": false, + "blank_7": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-34_9": { - "flake": false, + "blank_8": { "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1678211206, + "narHash": "sha256-ywBdK+f8dgcK4M/L1knNMCMDLchi2A7ci5xKzvbLgzs=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "b5642b01e5174c65cdfaa01460c220e6f1e0de7c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "cabal-36_10": { + "bot-plutus-interface": { + "inputs": { + "CHaP": "CHaP_4", + "flake-compat": "flake-compat_18", + "haskell-nix": "haskell-nix_6", + "iohk-nix": "iohk-nix_5", + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1670496765, + "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "bot-plutus-interface", + "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "type": "github" + } + }, + "byron-chain": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_2": { + "cabal-32_10": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-32_11": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-32_12": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-32_13": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_6": { + "cabal-32_14": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_7": { + "cabal-32_15": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_8": { + "cabal-32_16": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_9": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cardano-configurations": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1671845278, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "36a75a920de312519c3a9086061daccb997f9cd0", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_2": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-configurations_3": { + "cabal-32_5": { "flake": false, "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_3" - }, + "cabal-32_6": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, + "cabal-32_7": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_6" - }, + "cabal-32_8": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_11" - }, + "cabal-32_9": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_5": { - "inputs": { - "nixpkgs": "nixpkgs_13" - }, + "cabal-34": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_6": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "cabal-34_10": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "cardano-node-workbench": [ - "ctl", - "ogmios", - "blank" - ], - "customConfig": "customConfig", - "flake-compat": "flake-compat_2", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nixTools": "nixTools", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_4" - }, + "cabal-34_11": { + "flake": false, "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_3", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "membench": "membench_2", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils" - }, + "cabal-34_12": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_7", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", - "membench": "membench_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_6" - }, + "cabal-34_13": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_7", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixTools": "nixTools_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_9" - }, + "cabal-34_14": { + "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell": { + "cabal-34_15": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_10": { + "cabal-34_16": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_11": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_12": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_2": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_3": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_4": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_5": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_6": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_7": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_8": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_9": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "ctl": { - "inputs": { - "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ctl", - "ogmios-nixos", - "cardano-node" - ], - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat", - "iohk-nix-environments": "iohk-nix-environments", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ], - "ogmios": "ogmios", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" - }, + "cabal-36_11": { + "flake": false, "locked": { - "lastModified": 1676722762, - "narHash": "sha256-E6fvOkRzE9h9SIqBMoMtN+yFKNOgh330zHvJCf0Pm7M=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "ee5233d556bce8aee7fd1c2934641b72eecae196", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "ee5233d556bce8aee7fd1c2934641b72eecae196", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig": { + "cabal-36_12": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_2": { + "cabal-36_13": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_3": { + "cabal-36_14": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_4": { + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_5": { + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_6": { + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_7": { + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_8": { + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "cabal-36_8": { + "flake": false, + "locked": { + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "owner": "haskell", + "repo": "cabal", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "type": "github" }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_9": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "devshell_3": { + "capsules": { "inputs": { - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_16", + "ragenix": "ragenix_2" }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "dmerge": { + "capsules_2": { "inputs": { - "nixlib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_45", + "ragenix": "ragenix_5" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_3": { - "inputs": { - "nixlib": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "easy-purescript-nix": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "lastModified": 1671845278, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "36a75a920de312519c3a9086061daccb997f9cd0", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1670462928, + "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_10": { + "cardano-configurations_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1667387423, + "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "flake-compat_11": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "flake-compat_12": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "repo": "cardano-graphql", "type": "github" } }, - "flake-compat_13": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_64" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_14": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_66" + }, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_15": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_67" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "cardano-mainnet-mirror_4": { + "inputs": { + "nixpkgs": "nixpkgs_72" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "cardano-mainnet-mirror_5": { + "inputs": { + "nixpkgs": "nixpkgs_74" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "cardano-mainnet-mirror_6": { + "inputs": { + "nixpkgs": "nixpkgs_75" + }, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "flake-compat_5": { + "cardano-node": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-compat_6": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "cardano-node-snapshot": { + "inputs": { + "customConfig": "customConfig_5", + "haskellNix": "haskellNix_5", + "iohkNix": "iohkNix_5", + "membench": "membench_2", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_22" + }, + "locked": { + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "cardano-node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_9", + "haskellNix": "haskellNix_9", + "iohkNix": "iohkNix_9", + "membench": "membench_4", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_27" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1644954571, + "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "cardano-node", + "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "cardano-node_2": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "cardano-node-workbench": [ + "ctl", + "ogmios", + "blank" + ], + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_9", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nixTools": "nixTools", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ctl", + "ogmios", + "blank" + ], + "node-process": "node-process", + "node-snapshot": "node-snapshot", + "plutus-apps": "plutus-apps", + "utils": "utils_25" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1667644902, + "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "1.35.4", + "repo": "cardano-node", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "cardano-node_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", + "cardano-node-workbench": [ + "ctl", + "ogmios-nixos", + "blank" + ], + "customConfig": "customConfig_7", + "flake-compat": "flake-compat_14", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_7", + "hostNixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_7", + "nixTools": "nixTools_2", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "node-measured": [ + "ctl", + "ogmios-nixos", + "blank" + ], + "node-process": "node-process_2", + "node-snapshot": "node-snapshot_2", + "plutus-apps": "plutus-apps_2", + "utils": "utils_30" + }, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "flake-compat", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "flake-utils": { + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_10": { + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_11": { + "cardano-shell_11": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_12": { + "cardano-shell_12": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_13": { + "cardano-shell_13": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_14": { + "cardano-shell_14": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_15": { + "cardano-shell_15": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_16": { + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_17": { + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_18": { + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_19": { + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_2": { + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_20": { + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_21": { + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_3": { + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_4": { + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "flake-utils_5": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_5", + "flake-utils": "flake-utils_20", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "flake-utils_7": { + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_6", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_2", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_56", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_2", + "tullia": "tullia" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "flake-utils_8": { + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_7", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_7", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_32", + "poetry2nix": "poetry2nix", + "utils": "utils_14" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "flake-utils_9": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "ctl": { + "inputs": { + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": [ + "ctl", + "ogmios-nixos", + "cardano-node" + ], + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_8", + "iohk-nix-environments": "iohk-nix-environments", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ctl", + "ogmios", + "nixpkgs" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + }, + "locked": { + "lastModified": 1678217358, + "narHash": "sha256-lTSQV5KWuetgtol2F4EQLYIbF4fNqRS7mC8HdFPl8cM=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "f46247826949b752638e86b0e1e75fac3f4c08ec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "f46247826949b752638e86b0e1e75fac3f4c08ec", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, + "customConfig_10": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "ghc-8.6.5-iohk_12": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_2": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "customConfig_6": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "customConfig_7": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "customConfig_8": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "customConfig_9": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "empty-flake", "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "ghc-8.6.5-iohk_9": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix": { + "data-merge_3": { "inputs": { - "nixpkgs": "nixpkgs_8", - "utils": "utils_5" + "nixlib": "nixlib_3", + "yants": "yants_3" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "gomod2nix_2": { + "db-sync": { "inputs": { - "nixpkgs": "nixpkgs_16", - "utils": "utils_10" + "cardano-world": "cardano-world", + "customConfig": "customConfig_2", + "flake-compat": "flake-compat_7", + "haskellNix": "haskellNix_2", + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_21" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "gomod2nix_3": { + "deploy": { "inputs": { - "nixpkgs": "nixpkgs_20", - "utils": "utils_11" + "fenix": "fenix", + "flake-compat": "flake-compat", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", - "type": "github" + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_7" }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", - "type": "github" + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_15" }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, "locked": { - "lastModified": 1669338728, - "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "deploy-rs", "type": "github" } }, - "hackage_2": { - "flake": false, + "devshell": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_3": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_4": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_5": { - "flake": false, + "devshell_12": { "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_6": { - "flake": false, + "devshell_13": { "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_7": { - "flake": false, + "devshell_14": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_8": { - "flake": false, + "devshell_15": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "hackage_9": { - "flake": false, + "devshell_16": { + "inputs": { + "flake-utils": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix": { + "devshell_17": { "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "nix-tools": "nix-tools", - "nixpkgs": [ + "flake-utils": [ "ctl", - "kupo-nixos", + "ogmios-nixos", "haskell-nix", - "nixpkgs-unstable" + "tullia", + "std", + "flake-utils" ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_2": { + "devshell_18": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_6", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy", + "flake-utils": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], "nixpkgs": [ "ctl", - "ogmios", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6", - "tullia": "tullia" + ] }, "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_9", - "flake-utils": "flake-utils_14", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_5", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" + "devshell_2": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_18", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_6", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12", - "tullia": "tullia_3" + "devshell_4": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_5": { "locked": { - "lastModified": 1669338917, - "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix": { + "devshell_6": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": [ + "flake-utils": [ "ctl", - "ogmios", - "cardano-node", - "hackageNix" + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" ], - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", "nixpkgs": [ "ctl", - "ogmios", - "cardano-node", + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + ] }, "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_2": { + "devshell_7": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_3", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_29" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_4", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_4", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" - }, + "devshell_8": { "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "nix-tools": "nix-tools_4", - "nixpkgs": [ + "devshell_9": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "dmerge": { + "inputs": { + "nixlib": [ "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_5": { + "dmerge_2": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_10", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ + "nixlib": [ "ctl", - "ogmios-nixos", - "cardano-node", - "hackageNix" + "db-sync", + "cardano-world", + "std", + "nixpkgs" ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_4", - "nix-tools": "nix-tools_5", - "nixpkgs": [ + "yants": [ "ctl", - "ogmios-nixos", - "cardano-node", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_3": { + "inputs": { + "nixlib": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "yants": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_6": { + "dmerge_4": { "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_6", - "nixpkgs": [ + "nixlib": [ "ctl", "ogmios-nixos", - "cardano-node", - "node-snapshot", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" + "yants": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_7": { + "dmerge_5": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_7", - "nixpkgs": [ + "nixlib": [ "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" + "yants": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "haskellNix_8": { + "driver": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_13", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_8", + "devshell": "devshell_8", + "inclusive": "inclusive_6", + "nix": "nix_6", "nixpkgs": [ "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" + "utils": "utils_11" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nomad-driver-nix", "type": "github" } }, - "hpc-coveralls": { + "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1666686938, + "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", "type": "github" } }, - "hpc-coveralls_10": { - "flake": false, + "ema": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_47", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "hpc-coveralls_11": { + "ema_2": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "hpc-coveralls_12": { - "flake": false, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_50", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs_6", + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "fenix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_19", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_35", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "hpc-coveralls_8": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hpc-coveralls_9": { + "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "input-output-hk", + "repo": "flake-compat", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": "nix_2", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "hydra_4": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" } }, - "hydra_5": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "hydra_6": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-compat_16": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "flake-compat_17": { + "flake": false, "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohk-nix-environments": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "flake-compat_18": { + "flake": false, "locked": { - "lastModified": 1674063615, - "narHash": "sha256-xz/+7zO/O+2XrnxoFOjyEc72Sdy2ieQLpDq78XG15oI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "ccd5bf7d8168a0452d9ec504ea1b559ada7752df", + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ] - }, + "flake-compat_19": { + "flake": false, "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "repo": "flake-compat", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ] - }, + "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "nixpkgs" - ] - }, + "flake-compat_20": { + "flake": false, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ] - }, + "flake-compat_21": { + "flake": false, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-compat_22": { + "flake": false, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ] - }, + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "iohkNix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" - }, - "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" - } - }, - "kupo": { + "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "kupo-nixos": { + "flake-parts": { "inputs": { - "haskell-nix": "haskell-nix", - "iohk-nix": "iohk-nix", - "kupo": [ - "ctl", - "kupo" - ], - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_49" }, "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "lowdown-src": { - "flake": false, + "flake-utils": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "flake-utils_10": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "flake-utils_11": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "flake-utils_12": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "flake-utils_13": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "flake-utils_14": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "flake-utils_15": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "flake-utils_16": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "mdbook-kroki-preprocessor_3": { - "flake": false, + "flake-utils_17": { "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "membench": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" - }, + "flake-utils_18": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, + "flake-utils_19": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, + "flake-utils_2": { "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "membench_4": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" - }, + "flake-utils_20": { "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_7", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_12" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_12": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_13": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_14": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_15": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_16": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_69", + "utils": "utils_26" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_77", + "utils": "utils_31" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_81", + "utils": "utils_32" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1665882657, + "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1656898050, + "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_12": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_13": { + "flake": false, + "locked": { + "lastModified": 1667783503, + "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_14": { + "flake": false, + "locked": { + "lastModified": 1669338728, + "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_7": { + "flake": false, + "locked": { + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_8": { + "flake": false, + "locked": { + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_9": { + "flake": false, + "locked": { + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-utils": "flake-utils_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls", + "nix-tools": "nix-tools", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_22", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_28", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_9", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "ogmios", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_10", + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1670464865, + "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6c992eacf65c19e29ae5296b11def11813179643", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_16", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "hackage": "hackage_13", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_11", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_15", + "tullia": "tullia_3" + }, + "locked": { + "lastModified": 1667783630, + "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_45", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "hackage": "hackage_14", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_12", + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_16", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1669338917, + "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_21", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_4", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_10": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cardano-shell": "cardano-shell_14", + "flake-utils": "flake-utils_40", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "hackage": "hackage_12", + "hpc-coveralls": "hpc-coveralls_14", + "nix-tools": "nix-tools_12", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_10", + "flake-utils": "flake-utils_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": [ + "ctl", + "ogmios", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1665882789, + "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9af167fb4343539ca99465057262f289b44f55da", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_30", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_7", + "nix-tools": "nix-tools_6", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": "hackage_7", + "hpc-coveralls": "hpc-coveralls_8", + "nix-tools": "nix-tools_7", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_8", + "hpc-coveralls": "hpc-coveralls_9", + "nix-tools": "nix-tools_8", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_7": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "hackageNix" + ], + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_10", + "nix-tools": "nix-tools_9", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11" + }, + "locked": { + "lastModified": 1656898207, + "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_8": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_12", + "flake-utils": "flake-utils_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_12", + "nix-tools": "nix-tools_10", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_12" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_9": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_13", + "flake-utils": "flake-utils_39", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "hackage": "hackage_11", + "hpc-coveralls": "hpc-coveralls_13", + "nix-tools": "nix-tools_11", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_13" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_12": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_13": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_14": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_15": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_16": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_3": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_11", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": "nix_13", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_7": { + "inputs": { + "nix": "nix_14", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_8": { + "inputs": { + "nix": "nix_15", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_16", + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_3", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_15", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_44", + "utils": "utils_20" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix-environments": { + "inputs": { + "nixpkgs": "nixpkgs_62" + }, + "locked": { + "lastModified": 1674063615, + "narHash": "sha256-xz/+7zO/O+2XrnxoFOjyEc72Sdy2ieQLpDq78XG15oI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "ccd5bf7d8168a0452d9ec504ea1b559ada7752df", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670489000, + "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1649070135, + "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_10": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_7": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_9": { + "inputs": { + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1639165170, + "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "revCount": 7, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + }, + "original": { + "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", + "type": "git", + "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "kupo": [ + "ctl", + "kupo" + ], + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_3": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_4": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_5": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "membench": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "cardano-node-measured": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_2" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_2": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "cardano-node-measured": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_3": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", + "cardano-node-measured": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-process": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot" + ], + "cardano-node-snapshot": "cardano-node-snapshot_2", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_4" + }, + "locked": { + "lastModified": 1645070579, + "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "type": "github" + } + }, + "membench_4": { + "inputs": { + "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", + "cardano-node-measured": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-process": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "cardano-node-snapshot": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot" + ], + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "ouroboros-network": "ouroboros-network_3" + }, + "locked": { + "lastModified": 1644547122, + "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "owner": "input-output-hk", + "repo": "cardano-memory-benchmark", + "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "type": "github" + }, + "original": { + "owner": "input-output-hk", "repo": "cardano-memory-benchmark", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "n2c": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_20" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_36", + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": "flake-utils_44", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_48", + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_7", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_10", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_13" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_17", + "flake-utils": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_10": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_11": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_12": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_5": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_6": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_7": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_8": { + "flake": false, + "locked": { + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_9": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_58" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_70" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_42", + "nixpkgs": "nixpkgs_78" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": "nixpkgs_82" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nixTools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nixTools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_40", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_52", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_54", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_63", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_65", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_80", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_11", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_21", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_23", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_31", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_36", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_38" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1676253841, + "narHash": "sha256-jhuI8Mmky8VCD45OoJEuF6HdPLFBwNrHA0ljjZ/zkfw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a45a8916243a7d27acc358f4fc18c4491f3eeca8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1669997163, + "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_4": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_6": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_7": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_13": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_14": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_15": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_16": { + "locked": { + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_17": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_18": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_4": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_5": { + "locked": { + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_6": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_7": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_8": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_9": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_22": { + "locked": { + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_23": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_24": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_25": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_26": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_27": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_29": { + "locked": { + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_31": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_32": { + "locked": { + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_33": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_34": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_35": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_36": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_37": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs_38": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_39": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs_4": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_40": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_41": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_2", - "nixpkgs-regression": "nixpkgs-regression" + "nixpkgs_42": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_43": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_44": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_6", - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs_45": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_46": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_10", - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs_47": { + "locked": { + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + } + }, + "nixpkgs_48": { + "locked": { + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_49": { + "locked": { + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_50": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools": { - "flake": false, + "nixpkgs_51": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_52": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs_53": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs_54": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs_55": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs_56": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_6": { - "flake": false, + "nixpkgs_57": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_7": { - "flake": false, + "nixpkgs_58": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_8": { - "flake": false, + "nixpkgs_59": { "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_9" - }, + "nixpkgs_6": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_17" - }, + "nixpkgs_60": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_21" + "nixpkgs_61": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_62": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1674487464, + "narHash": "sha256-Jgq50e4S4JVCYpWLqrabBzDp/1mfaxHCh8/OOorHTy0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3954218cf613eba8e0dcefa9abe337d26bc48fd0", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_63": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixTools": { - "flake": false, + "nixpkgs_64": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixTools_2": { - "flake": false, + "nixpkgs_65": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_4", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs_66": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs_67": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_12", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs_68": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs_69": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_19", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs_7": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_70": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_71": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs_72": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_73": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs": { + "nixpkgs_74": { "locked": { - "lastModified": 1674487464, - "narHash": "sha256-Jgq50e4S4JVCYpWLqrabBzDp/1mfaxHCh8/OOorHTy0=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3954218cf613eba8e0dcefa9abe337d26bc48fd0", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { @@ -5083,2233 +11790,2618 @@ "type": "indirect" } }, - "nixpkgs-2003": { + "nixpkgs_75": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_76": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2003_10": { + "nixpkgs_77": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_11": { + "nixpkgs_78": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_12": { + "nixpkgs_79": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_2": { + "nixpkgs_8": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_80": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2003_3": { + "nixpkgs_81": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_4": { + "nixpkgs_82": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_5": { + "nixpkgs_83": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "node-process": { + "flake": false, + "locked": { + "lastModified": 1648681325, + "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "type": "github" + } + }, + "node-process_2": { + "flake": false, + "locked": { + "lastModified": 1654323094, + "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "type": "github" + } + }, + "node-snapshot": { + "inputs": { + "customConfig": "customConfig_4", + "haskellNix": "haskellNix_4", + "iohkNix": "iohkNix_4", + "membench": "membench", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example", + "utils": "utils_24" + }, + "locked": { + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + } + }, + "node-snapshot_2": { + "inputs": { + "customConfig": "customConfig_8", + "haskellNix": "haskellNix_8", + "iohkNix": "iohkNix_8", + "membench": "membench_3", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "haskellNix", + "nixpkgs-2105" + ], + "plutus-example": "plutus-example_2", + "utils": "utils_29" + }, + "locked": { + "lastModified": 1645120669, + "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "type": "github" + } + }, + "nomad": { + "inputs": { + "nix": "nix_2", + "nixpkgs": "nixpkgs_10", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", + "type": "github" + } + }, + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell", + "inclusive": "inclusive", + "nix": "nix_3", + "nixpkgs": "nixpkgs_12", + "utils": "utils_3" + }, + "locked": { + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_6": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_4", + "inclusive": "inclusive_4", + "nix": "nix_5", + "nixpkgs": "nixpkgs_24", + "utils": "utils_8" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_7": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_11", + "inclusive": "inclusive_9", + "nix": "nix_10", + "nixpkgs": "nixpkgs_41", + "utils": "utils_17" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2003_8": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_2", + "inclusive": "inclusive_2", + "nixpkgs": "nixpkgs_13", + "utils": "utils_4" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2003_9": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_5", + "inclusive": "inclusive_5", + "nixpkgs": "nixpkgs_25", + "utils": "utils_9" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105": { + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_12", + "inclusive": "inclusive_10", + "nixpkgs": "nixpkgs_42", + "utils": "utils_18" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2105_10": { + "nomad_2": { + "inputs": { + "nix": "nix_9", + "nixpkgs": "nixpkgs_39", + "utils": "utils_16" + }, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2105_11": { + "ogmios": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_12": { + "ogmios-nixos": { + "inputs": { + "CHaP": "CHaP_3", + "blank": "blank_6", + "cardano-configurations": "cardano-configurations_3", + "cardano-node": "cardano-node_3", + "flake-compat": "flake-compat_15", + "haskell-nix": "haskell-nix_5", + "iohk-nix": "iohk-nix_4", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1668087435, + "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "3b229c1795efa30243485730b78ea053992fdc7a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-2105_2": { + "ogmios_2": { + "inputs": { + "CHaP": "CHaP", + "blank": "blank_4", + "cardano-configurations": "cardano-configurations_2", + "cardano-node": "cardano-node_2", + "flake-compat": "flake-compat_11", + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "nixpkgs": [ + "ctl", + "ogmios", + "haskell-nix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1670513793, + "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "ogmios", + "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" } }, - "nixpkgs-2105_3": { + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_4": { + "old-ghc-nix_10": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_5": { + "old-ghc-nix_11": { + "flake": false, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_6": { + "old-ghc-nix_12": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_7": { + "old-ghc-nix_13": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_8": { + "old-ghc-nix_14": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2105_9": { + "old-ghc-nix_15": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111": { + "old-ghc-nix_16": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_10": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_11": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_12": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_2": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_3": { + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_4": { + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_5": { + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_6": { + "old-ghc-nix_9": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-2111_7": { + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_8": { + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-2111_9": { + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + }, + "ouroboros-network": { + "flake": false, + "locked": { + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_2": { + "ouroboros-network_2": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_3": { + "ouroboros-network_3": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2205_4": { + "ouroboros-network_4": { + "flake": false, "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1643385024, + "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "owner": "input-output-hk", + "repo": "ouroboros-network", + "rev": "8e97076176d465f5f4f86d5b5596220272630649", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ouroboros-network", "type": "github" } }, - "nixpkgs-2211": { + "plutip": { + "inputs": { + "CHaP": [ + "ctl", + "plutip", + "bot-plutus-interface", + "CHaP" + ], + "bot-plutus-interface": "bot-plutus-interface", + "flake-compat": "flake-compat_21", + "haskell-nix": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "plutip", + "bot-plutus-interface", + "iohk-nix" + ], + "nixpkgs": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "lastModified": 1671024770, + "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", "type": "github" } }, - "nixpkgs-regression": { + "plutus-apps": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1647347289, + "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_2": { + "plutus-apps_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1654271253, + "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "owner": "input-output-hk", + "repo": "plutus-apps", + "rev": "61de89d33340279b8452a0dbb52a87111db87e82", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "plutus-apps", + "type": "github" } }, - "nixpkgs-regression_3": { + "plutus-example": { + "inputs": { + "customConfig": "customConfig_6", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "ctl", + "ogmios", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_23" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_4": { + "plutus-example_2": { + "inputs": { + "customConfig": "customConfig_10", + "haskellNix": "haskellNix_10", + "iohkNix": "iohkNix_10", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "plutus-example", + "haskellNix", + "nixpkgs-2105" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1640022647, + "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "type": "github" } }, - "nixpkgs-regression_5": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", + "type": "github" } }, - "nixpkgs-regression_6": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_48" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" } }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_10": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_17", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_11": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_12": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_14", + "nixpkgs": "nixpkgs_43", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_2": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_16", + "nixpkgs": "nixpkgs_46", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-unstable_3": { + "root": { + "inputs": { + "ctl": "ctl", + "flake-compat": "flake-compat_22", + "nixpkgs": [ + "ctl", + "nixpkgs" + ] + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_4": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_5": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_6": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_7": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_8": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-unstable_9": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_10": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_11": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_12": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_13": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_14": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_15": { + "stackage_10": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_16": { + "stackage_11": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1656898145, + "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_17": { + "stackage_12": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_18": { + "stackage_13": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_19": { + "stackage_14": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_2": { + "stackage_15": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1667610757, + "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_20": { + "stackage_16": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1669338854, + "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_21": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_22": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_3": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_4": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_5": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1665537461, + "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_6": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_7": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_8": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "std": { + "inputs": { + "devshell": "devshell_6", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago", + "nixpkgs": "nixpkgs_27", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process": { - "flake": false, + "std_2": { + "inputs": { + "devshell": "devshell_14", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_24", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_57", + "yants": "yants_4" + }, "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-process_2": { - "flake": false, + "std_3": { + "inputs": { + "devshell": "devshell_15", + "nixpkgs": "nixpkgs_60", + "yants": "yants_5" + }, "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot": { + "std_4": { "inputs": { - "customConfig": "customConfig_2", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", - "membench": "membench", - "nixpkgs": [ + "blank": "blank_5", + "devshell": "devshell_16", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_35", + "makes": [ "ctl", "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example", - "utils": "utils_3" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "microvm": [ + "ctl", + "ogmios", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_71", + "yants": "yants_6" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "node-snapshot_2": { + "std_5": { "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "membench": "membench_3", - "nixpkgs": [ + "blank": "blank_7", + "devshell": "devshell_17", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_43", + "makes": [ "ctl", "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "tullia", + "std", + "blank" ], - "plutus-example": "plutus-example_2", - "utils": "utils_8" + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", + "microvm": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_79", + "yants": "yants_7" }, "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios": { + "std_6": { "inputs": { - "CHaP": "CHaP", - "blank": "blank", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node", - "flake-compat": "flake-compat_4", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix_2", - "nixpkgs": [ + "blank": "blank_8", + "devshell": "devshell_18", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_47", + "makes": [ "ctl", - "ogmios", + "plutip", + "bot-plutus-interface", "haskell-nix", - "nixpkgs-unstable" - ] + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", + "microvm": [ + "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_83", + "yants": "yants_8" }, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_3", - "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_8", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_3", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" - ] - }, + "stdlib": { "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "stdlib_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, + "stdlib_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, + "stdlib_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_12": { - "flake": false, + "stdlib_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_2": { - "flake": false, + "stdlib_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_3": { - "flake": false, + "stdlib_4": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } - }, - "old-ghc-nix_4": { - "flake": false, + }, + "stdlib_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_5": { - "flake": false, + "stdlib_6": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, + "stdlib_7": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "stdlib_8": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, + "stdlib_9": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "old-ghc-nix_9": { - "flake": false, + "tailwind-haskell": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_51" + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1654211622, + "narHash": "sha256-N5Xa/JhF9PRgmt+ZVZFaHT7onezENxp7ktnGhhqOBaw=", + "owner": "srid", + "repo": "tailwind-haskell", + "rev": "8d08cda7a1cb67435de1ba1739f65e25b303364f", "type": "github" }, "original": { - "owner": "angerman", + "owner": "srid", "ref": "master", - "repo": "old-ghc-nix", + "repo": "tailwind-haskell", "type": "github" } }, - "ouroboros-network": { - "flake": false, + "terranix": { + "inputs": { + "bats-assert": "bats-assert", + "bats-support": "bats-support", + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples" + }, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "ouroboros-network_2": { - "flake": false, + "terranix-examples": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_3": { - "flake": false, + "terranix-examples_2": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "ouroboros-network_4": { - "flake": false, + "terranix-examples_3": { "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", + "owner": "terranix", + "repo": "terranix-examples", "type": "github" } }, - "plutip": { + "terranix_2": { "inputs": { - "CHaP": [ - "ctl", - "plutip", - "bot-plutus-interface", - "CHaP" - ], - "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_14", - "haskell-nix": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix" - ], - "iohk-nix": [ - "ctl", - "plutip", - "bot-plutus-interface", - "iohk-nix" - ], + "bats-assert": "bats-assert_2", + "bats-support": "bats-support_2", + "flake-utils": "flake-utils_9", "nixpkgs": [ "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ] + "db-sync", + "cardano-world", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_2" }, "locked": { - "lastModified": 1671024770, - "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps": { - "flake": false, + "terranix_3": { + "inputs": { + "bats-assert": "bats-assert_3", + "bats-support": "bats-support_3", + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_3" + }, "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "plutus-apps_2": { - "flake": false, + "tullia": { + "inputs": { + "nix2container": "nix2container", + "nixpkgs": "nixpkgs_59", + "std": "std_3" + }, "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "plutus-apps", + "repo": "tullia", "type": "github" } }, - "plutus-example": { + "tullia_2": { "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", "nixpkgs": [ "ctl", "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_2" + "std": "std_4" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "plutus-example_2": { + "tullia_3": { "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", "nixpkgs": [ "ctl", "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" + "haskell-nix", + "nixpkgs" ], - "utils": "utils_7" + "std": "std_5" }, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "repo": "tullia", "type": "github" } }, - "root": { + "tullia_4": { "inputs": { - "ctl": "ctl", - "flake-compat": "flake-compat_15", + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_4", "nixpkgs": [ "ctl", + "plutip", + "bot-plutus-interface", + "haskell-nix", "nixpkgs" - ] - } - }, - "stackage": { - "flake": false, + ], + "std": "std_6" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "lastModified": 1666200256, + "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "repo": "tullia", + "rev": "575362c2244498e8d2c97f72861510fa72e75d44", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "tullia", "type": "github" } }, - "stackage_10": { - "flake": false, + "utils": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_11": { - "flake": false, + "utils_10": { "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_12": { - "flake": false, + "utils_11": { "locked": { - "lastModified": 1669338854, - "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_2": { - "flake": false, + "utils_12": { "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_3": { - "flake": false, + "utils_13": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_4": { - "flake": false, + "utils_14": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_5": { - "flake": false, + "utils_15": { "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_6": { - "flake": false, + "utils_16": { "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "stackage_7": { - "flake": false, + "utils_17": { "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_8": { - "flake": false, + "utils_18": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "stackage_9": { - "flake": false, + "utils_19": { "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std": { - "inputs": { - "blank": "blank_2", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "makes": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_10", - "yants": "yants" - }, + "utils_2": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "std_2": { - "inputs": { - "blank": "blank_4", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_16", - "makes": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "microvm": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_18", - "yants": "yants_2" - }, + "utils_20": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "std_3": { - "inputs": { - "blank": "blank_5", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_20", - "makes": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_22", - "yants": "yants_3" - }, + "utils_21": { "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std" - }, + "utils_22": { "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_2" - }, + "utils_23": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_3", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ], - "std": "std_3" - }, + "utils_24": { "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_25": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7324,7 +14416,7 @@ "type": "github" } }, - "utils_10": { + "utils_26": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7339,13 +14431,13 @@ "type": "github" } }, - "utils_11": { + "utils_27": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -7354,7 +14446,7 @@ "type": "github" } }, - "utils_2": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7369,7 +14461,7 @@ "type": "github" } }, - "utils_3": { + "utils_29": { "locked": { "lastModified": 1623875721, "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", @@ -7384,13 +14476,28 @@ "type": "github" } }, - "utils_4": { + "utils_3": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_30": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7399,7 +14506,7 @@ "type": "github" } }, - "utils_5": { + "utils_31": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7414,13 +14521,13 @@ "type": "github" } }, - "utils_6": { + "utils_32": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7429,7 +14536,22 @@ "type": "github" } }, - "utils_7": { + "utils_4": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_5": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7444,13 +14566,28 @@ "type": "github" } }, - "utils_8": { + "utils_6": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_7": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -7459,22 +14596,181 @@ "type": "github" } }, + "utils_8": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, "utils_9": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, + "vulnix": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, + "vulnix_2": { + "flake": false, + "locked": { + "lastModified": 1632431644, + "narHash": "sha256-iePIr+z/YxrST5pLKnhF666cAMme90dAOS5vgAiwmxg=", + "owner": "dermetfan", + "repo": "vulnix", + "rev": "cea4e8973a39377aa42541b9dbf3a13ab46d51db", + "type": "github" + }, + "original": { + "owner": "dermetfan", + "ref": "runtime-deps", + "repo": "vulnix", + "type": "github" + } + }, "yants": { + "inputs": { + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_53" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { "inputs": { "nixpkgs": [ "ctl", @@ -7499,7 +14795,7 @@ "type": "github" } }, - "yants_2": { + "yants_7": { "inputs": { "nixpkgs": [ "ctl", @@ -7524,7 +14820,7 @@ "type": "github" } }, - "yants_3": { + "yants_8": { "inputs": { "nixpkgs": [ "ctl", diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 6dbc8dc06..b7ec6731b 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "ee5233d556bce8aee7fd1c2934641b72eecae196"; + rev = "f46247826949b752638e86b0e1e75fac3f4c08ec"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; @@ -136,6 +136,8 @@ { default = self.apps.${system}.ctl-scaffold-runtime; ctl-scaffold-runtime = pkgs.launchCtlRuntime runtimeConfig; + ctl-scaffold-blockfrost-runtime = pkgs.launchCtlRuntime + (pkgs.lib.recursiveUpdate runtimeConfig { blockfrost = { enable = true; }; }); docs = (psProjectFor pkgs).launchSearchablePursDocs { }; }); diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 1bc663158..a42c6a5e1 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -7,7 +7,7 @@ "test": "test" }, "scripts": { - "start-blockfrost-runtime": "nix run -L .#ctl-runtime-blockfrost", + "start-blockfrost-runtime": "nix run -L .#ctl-scaffold-blockfrost-runtime", "test": "spago run --main Test.Scaffold.Main", "blockfrost-test": "source ./test/blockfrost.env && spago run --main Scaffold.Test.Blockfrost", "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Scaffold.Test.Blockfrost", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 01290d1ca..60ed32f85 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -353,7 +353,7 @@ let additions = , "web-html" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "ee5233d556bce8aee7fd1c2934641b72eecae196" + , version = "f46247826949b752638e86b0e1e75fac3f4c08ec" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index afb4c0444..b8e49d35c 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "ee5233d556bce8aee7fd1c2934641b72eecae196"; + version = "f46247826949b752638e86b0e1e75fac3f4c08ec"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "ee5233d556bce8aee7fd1c2934641b72eecae196"; - sha256 = "1cwv1zyhkjbvrks7v1x0scl8bv1p5n1k50ca91yxh4vk8hxfz9qk"; + rev = "f46247826949b752638e86b0e1e75fac3f4c08ec"; + sha256 = "1hziwm9p81rgk2xi9afdhwbip0id220ifxl9nrhfpfcnj9br0d4m"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Blockfrost/Contract.purs b/test/Blockfrost/Contract.purs index 7f841b59b..138afc2cd 100644 --- a/test/Blockfrost/Contract.purs +++ b/test/Blockfrost/Contract.purs @@ -6,11 +6,7 @@ module Test.Ctl.Blockfrost.Contract (main) where import Prelude -import Contract.Config - ( defaultKupoServerConfig - , defaultOgmiosWsConfig - , testnetConfig - ) +import Contract.Config (testnetConfig) import Contract.Monad (launchAff_) import Contract.Test.Blockfrost (executeContractTestsWithBlockfrost) import Data.Maybe (Maybe(Just)) From be88f38e8ea6e7a4ec9d28eefea1d0541b2060e5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 13:20:24 +0400 Subject: [PATCH 081/478] - Expand docs for self-hosted Blockfrost - update template's gitignore - Add `blockfrostSelfHostedServerConfig` --- .gitignore | 2 + doc/blockfrost.md | 73 ++++++++++++++++---------- src/Contract/Config.purs | 1 + src/Internal/Contract/QueryHandle.purs | 2 +- src/Internal/ServerConfig.purs | 9 ++++ templates/ctl-scaffold/.gitignore | 3 ++ 6 files changed, 61 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index a1c3cf9e5..b99207a31 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,8 @@ output.js .idea/ test-data/chrome-user-data test-data/preview +test-data/preprod +test-data/mainnet test-data/keys tmp node_modules diff --git a/doc/blockfrost.md b/doc/blockfrost.md index cdb490542..365116d32 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -4,16 +4,18 @@ - [Setting up a Blockfrost-powered test suite](#setting-up-a-blockfrost-powered-test-suite) - - [1. Getting an API key](#1-getting-an-api-key) - - [2. Generating private keys](#2-generating-private-keys) - - [3. Funding your address](#3-funding-your-address) - - [4. Setting up a directory for temporary keys](#4-setting-up-a-directory-for-temporary-keys) - - [5. Providing an API endpoint URL](#5-providing-an-api-endpoint-url) - - [6. Setting Tx confirmation delay](#6-setting-tx-confirmation-delay) - - [7. Test suite setup on PureScript side](#7-test-suite-setup-on-purescript-side) + - [Getting an API key](#getting-an-api-key) + - [Generating private keys](#generating-private-keys) + - [Funding your address](#funding-your-address) + - [Setting up a directory for temporary keys](#setting-up-a-directory-for-temporary-keys) + - [Providing an API endpoint URL](#providing-an-api-endpoint-url) + - [Setting Tx confirmation delay](#setting-tx-confirmation-delay) + - [Test suite setup on PureScript side](#test-suite-setup-on-purescript-side) - [Running `Contract`s with Blockfrost](#running-contracts-with-blockfrost) - [Running Blockfrost locally](#running-blockfrost-locally) - [Configuration](#configuration) + - [Contract parameters](#contract-parameters) + - [Test suite](#test-suite) - [Synchronization](#synchronization) - [Limitations](#limitations) - [Performance](#performance) @@ -31,17 +33,19 @@ For testing, we offer an automated test engine that allows to run any `ContractT ## Setting up a Blockfrost-powered test suite +In this section, we show how to set up a test suite that uses public Blockfrost deployment to run `Contract`s and prints the report nicely using [Mote](https://github.com/garyb/purescript-mote). + Public Blockfrost instances have endpoints for different networks. By default, the test suite is configured to run on `preview`. The configuration is stored in environment variables defined in [`test/blockfrost.env` file](../test/blockfrost.env), or a similar one in your project if it is initialized from the template. Here's how to populate this configuration file to be ready for use: -### 1. Getting an API key +### Getting an API key Go to https://blockfrost.io to generate a new API key and specify it as `BLOCKFROST_API_KEY` in the config. -### 2. Generating private keys +### Generating private keys Follow https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ to generate a private payment key (and, optionally, a stake key). @@ -65,7 +69,7 @@ For public testnets, get it from [cardano-configurations repo](https://github.co The common values are 1 for `preprod` and 2 for `preview`. -### 3. Funding your address +### Funding your address Fund your address using the [testnet faucet](https://docs.cardano.org/cardano-testnet/tools/faucet). Make sure you are sending the funds in the correct network. @@ -73,7 +77,7 @@ Point the test suite to your keys by setting `PRIVATE_PAYMENT_KEY_FILE` and `PRI If you are going to use an enterprise address (without a staking credential component), then do not provide the staking key file. The choice of using either type of addresses does not affect anything, because the test suite will be using the address only to distribute funds to other, temporary addresses. -### 4. Setting up a directory for temporary keys +### Setting up a directory for temporary keys During testing, the test engine will move funds around according to the UTxO distribution specifications provided via `Contract.Test.withWallets` calls in the test bodies. It will generate private keys as needed on the fly. The private keys will be stored in a special directory, to prevent loss of funds in case the test suite suddently exits. Set `BACKUP_KEYS_DIR` to an existing directory where you would like the keys to be stored. @@ -81,7 +85,7 @@ In this directory, keys will be stored in subdirs named as addresses that are de Each test run generates fresh keys that will be stored indefinitely, and it's up to the user to decide when to delete the corresponding directories. The reason why the keys are not being disposed of automatically is because there may be some on-chain state uniquely tied to them that the user may not want to lose access to. -### 5. Providing an API endpoint URL +### Providing an API endpoint URL Blockfrost dashboard provides endpoint URLs for your projects. @@ -94,10 +98,10 @@ export BLOCKFROST_SECURE=true # Use HTTPS export BLOCKFROST_PATH="/api/v0" ``` -### 6. Setting Tx confirmation delay +### Setting Tx confirmation delay We introduce an artificial delay after Tx confirmation to ensure that the changes propagate to Blockfrost's query layer. -Blockfrost does not update the query layer state atomically (proxied Ogmios eval-tx endpoint seems to lag behind the DB), and we have no way to query it, so this is the best workaround we can have. +Blockfrost does not update the query layer state atomically (proxied Ogmios eval-tx endpoint [seems to lag behind the DB](https://github.com/blockfrost/blockfrost-backend-ryo/issues/86)), and we have no way to query it, so this is the best workaround we can have. If the tests are failing because the effects of the transaction do not seem to propagate (the symptom is unexpected errors from Ogmios), it is possible to increase the delay by setting the environment variable for the test suite: ```bash @@ -112,24 +116,25 @@ If there's a problem with UTxO set syncrhonization, most commonly Blockfrost ret [TRACE] 2023-02-16T12:26:13.019Z { body: "{\"error\":\"Bad Request\",\"message\":\"\\\"transaction submit error ShelleyTxValidationError ShelleyBasedEraBabbage (ApplyTxError [UtxowFailure (UtxoFailure (FromAlonzoUtxoFail (ValueNotConservedUTxO ... ``` -### 7. Test suite setup on PureScript side +### Test suite setup on PureScript side `executeContractTestsWithBlockfrost` is a helper function that reads all the variables above and takes care of contract environment setup. It accepts a number of arguments: -1. A test spec config, e.g. `Test.Spec.Runner.defaultConfig` - it's probably better to increase the timeout. +1. A test spec config, e.g. `Test.Spec.Runner.defaultConfig` - it's probably better to increase the timeout to 300 seconds or more. 2. A `Contract` config, e.g. `Contract.Config.testnetConfig` -3. An optional CTL runtime config -4. A `ContractTest` suite +3. A `ContractTest` suite -See [this example](../test/Blockfrost/Contract.purs), which can be executed with `npm run blockfrost-test` command. It will automatically load the exported variables from [`test/blockfrost.env`](../test/blockfrost.env). +See [this example](../test/Blockfrost/Contract.purs), which can be executed with `npm run blockfrost-test` command in CTL repo. It will automatically load the exported variables from [`test/blockfrost.env`](../test/blockfrost.env). ## Running `Contract`s with Blockfrost +On production, the environment should be configured on PureScript side (environment variables are not respected). + `mkBlockfrostBackendParams` can be called on a populated `BlockfrostBackendParams` record to create a `QueryBackendParams` value. `backendParams` field of `ContractParams` uses a value of this type. And `ContractParams` can in turn be used with `runContract`. -``` +```purescript type BlockfrostBackendParams = { blockfrostConfig :: ServerConfig , blockfrostApiKey :: Maybe String @@ -143,18 +148,24 @@ For convenience, use `blockfrostPublicMainnetServerConfig`, `blockfrostPublicPre Blockfrost can be started locally using [blockfrost-backend-ryo](https://github.com/blockfrost/blockfrost-backend-ryo) distribution. It is included in CTL runtime as optional service, use `npm run start-blockfrost-runtime` instead of `npm run start-runtime`. -The differences are: +The differences between public and run-your-own flavours of Blockfrost are: - There's no need to provide an API key -- `/tx/submit` and `/utils/txs/evaluate` endpoints are not provided by the distribution, so Ogmios should be used for these. +- `/tx/submit` and `/utils/txs/evaluate` endpoints, that are simply proxied to Ogmios on the public instance, [are not provided](https://github.com/blockfrost/blockfrost-backend-ryo/issues/38) within the distribution, so Ogmios should be used for these. ### Configuration -Configuration is the same as above, but `mkSelfHostedBlockfrostBackendParams` should be used, to specify Ogmios and Kupo parameters (only Ogmios will in fact be used). +#### Contract parameters + +Configuration on PureScript side is the same as above, but `mkSelfHostedBlockfrostBackendParams` should be used, to specify Ogmios and Kupo parameters (only Ogmios will in fact be used). + +`Contract.Config.blockfrostSelfHostedServerConfig` contains default server parameters usable with a locally-deployed Blockfrost instance, together with `defaultOgmiosWsConfig`. -The Blockfrost test suite can also be configured for local runtime, see [`blockfrost-local.env`](../test/blockfrost-local.env) for an example. +CTL handles the absence of `submit` and `evaluate` endpoints in self-hosted Blockfrost nicely by setting up own runtime to query Ogmios for these two endpoints when `mkSelfHostedBlockfrostBackendParams` is used. -To let it connect to local Ogmios, the parameters should be provided separately: +#### Test suite + +The Blockfrost test suite can also be configured for local runtime. To let it connect to local Ogmios, these four parameters must be provided: ```bash export OGMIOS_PORT=1337 @@ -163,6 +174,8 @@ export OGMIOS_PATH="" export OGMIOS_SECURE=false ``` +See [`blockfrost-local.env`](../test/blockfrost-local.env) for a complete example. + ### Synchronization `cardano-db-sync` takes 30 minutes or more to synchronize with `preview` network (and many hours with `mainnet`). @@ -180,15 +193,19 @@ db-sync-preview_1 | [db-sync-node:Info:70] [2023-03-06 15:09:27.40 UTC] epochP The main disadvantage of using Blockfrost in comparison with CTL backend is speed of Tx confirmation (see [here](#6-setting-tx-confirmation-delay) for explanation). +Contracts running with local Blockfrost instance are expected to be slightly slower, because transaction propagation takes a bit longer. + ### Transaction chaining -Blockfrost is proxying [Ogmios](https://ogmios.dev) to provide an endpoint for execution units evaluation. This Ogmios endpoint normally [accepts a parameter](https://ogmios.dev/mini-protocols/local-tx-submission/#additional-utxo-set) that allows to specify additional UTxOs that should be considered. Transaction chaining is relying on this feature to allow Ogmios to "see" the newly created UTxOs. But Blockfrost seems to not pass this parameter to Ogmios ([issue](https://github.com/blockfrost/blockfrost-backend-ryo/issues/85)). +Public Blockfrost instance is proxying [Ogmios](https://ogmios.dev) to provide an endpoint for execution units evaluation. This Ogmios endpoint normally [accepts a parameter](https://ogmios.dev/mini-protocols/local-tx-submission/#additional-utxo-set) that allows to specify additional UTxOs that should be considered. Transaction chaining is relying on this feature to allow Ogmios to "see" the newly created UTxOs. But Blockfrost seems to not pass this parameter to Ogmios ([issue](https://github.com/blockfrost/blockfrost-backend-ryo/issues/85)). + +When using self-hosted blockfrost, chaining works normally, because local Ogmios is used without proxying. ### Getting pool parameters -`getPoolParameters` function only runs with Ogmios backend, see [here](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) for more context. +`getPoolParameters` function only runs with [CTL backend](./runtime.md#ctl-backend) (Ogmios), see [here](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) for more context. -It is not used for constraints resolution, the only way to make it run is to call it manually. +This function is never used for constraints resolution, the only way to make it run is to call it manually. ## See also diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 705f65410..ef3128ce3 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -50,6 +50,7 @@ import Ctl.Internal.ServerConfig , blockfrostPublicMainnetServerConfig , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig + , blockfrostSelfHostedServerConfig , defaultKupoServerConfig , defaultOgmiosWsConfig ) diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index f26c97cd7..490cc8997 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -145,5 +145,5 @@ queryHandleForSelfHostedBlockfrostBackend in blockfrostQueryHandle { evaluateTx = ctlQueryHandle.evaluateTx - , submitTx = ctlQueryHandle.submitTx -- TODO + , submitTx = ctlQueryHandle.submitTx } diff --git a/src/Internal/ServerConfig.purs b/src/Internal/ServerConfig.purs index 0be0c767c..76d4a883b 100644 --- a/src/Internal/ServerConfig.purs +++ b/src/Internal/ServerConfig.purs @@ -4,6 +4,7 @@ module Ctl.Internal.ServerConfig , blockfrostPublicMainnetServerConfig , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig + , blockfrostSelfHostedServerConfig , defaultKupoServerConfig , defaultOgmiosWsConfig , mkHttpUrl @@ -68,6 +69,14 @@ blockfrostPublicMainnetServerConfig = , path: Just "/api/v0" } +blockfrostSelfHostedServerConfig :: ServerConfig +blockfrostSelfHostedServerConfig = + { port: UInt.fromInt 3000 + , host: "127.0.0.1" + , secure: false + , path: Just "" + } + mkHttpUrl :: ServerConfig -> Url mkHttpUrl = mkServerUrl "http" diff --git a/templates/ctl-scaffold/.gitignore b/templates/ctl-scaffold/.gitignore index 40f998ca1..628f00fcd 100644 --- a/templates/ctl-scaffold/.gitignore +++ b/templates/ctl-scaffold/.gitignore @@ -16,6 +16,9 @@ result-* /node_modules/ test-data/chrome-user-data test-data/preview +test-data/preprod +test-data/mainnet +test-data/keys .projectile /dist/ output.js From 847787ee14d751761271d3deb35b496581550df8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 14:35:12 +0400 Subject: [PATCH 082/478] Expand docs for development --- doc/development.md | 68 +++++++++++++++++++++++-------- doc/runtime.md | 2 + scripts/examples-imports-check.sh | 2 + scripts/whitespace-check.sh | 2 + 4 files changed, 57 insertions(+), 17 deletions(-) diff --git a/doc/development.md b/doc/development.md index 834131353..d8eae424f 100644 --- a/doc/development.md +++ b/doc/development.md @@ -9,7 +9,13 @@ This document outlines development workflows for CTL itself. You may also wish t - [Nix environment](#nix-environment) - [Launching services for development](#launching-services-for-development) -- [Building, testing, and running the PS project](#building-testing-and-running-the-ps-project) +- [Workflows](#workflows) + - [Building](#building) + - [Testing](#testing) + - [With NodeJS](#with-nodejs) + - [With Nix](#with-nix) + - [Nix checks](#nix-checks) + - [Bundling for the browser](#bundling-for-the-browser) - [Generating PS documentation](#generating-ps-documentation) - [Adding PS/JS dependencies](#adding-psjs-dependencies) - [Purescript](#purescript) @@ -52,22 +58,50 @@ To develop locally, you can use one the CTL flake to launch all required service $ arion --prebuilt-file ./result up ``` -## Building, testing, and running the PS project - -- To build the project **without bundling and for a NodeJS environment**: - - `nix build` _or_ - - `spago build` -- To test the project, currently only supported when running in a NodeJS environment: - - Use `npm run test`, or, if you need to test some specific functionality: - - `npm run unit-test` for unit tests (no need for a runtime) - - `npm run integration-test` for integration tests (requires a runtime started) - - `npm run plutip-test` for Plutip integration tests (does not require a runtime) - - `npm run staking-test` to run Plutip-powered tests for ADA staking functionality - - `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs a Blockfrost API key) - - `nix build .#checks..ctl-unit-test` will build and run the unit tests (useful for CI) -- To run or build/bundle the project for the browser: - - `npm run e2e-serve` will start a Webpack development server at `localhost:4008` - - `npm run build` will output a Webpack-bundled example module to `dist` (or `nix build -L .#ctl-example-bundle-web` to build an example module using Nix into `./result/`) +## Workflows + +### Building + +To **build** the project **without bundling and for a NodeJS environment**: + +- `nix build` _or_ +- `spago build` + +### Testing + +#### With NodeJS + +- `npm run unit-test` for unit tests (no need for a runtime) - [entry point](../test/Unit.purs) +- `npm run integration-test` for integration tests (requires a [runtime](./runtime.md#ctl-backend)) - [entry point](../test/Integration.purs) +- `npm run plutip-test` for Plutip integration tests (does not require a runtime) - [entry point](../test/Plutip.purs) +- `npm run staking-test` to run [Plutip](./plutip-testing.md)-powered tests for ADA staking functionality - [entry point](../test/Plutip/Staking.purs) +- `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs [some setup](./blockfrost.md#setting-up-a-blockfrost-powered-test-suite)) - [entry point](../test/Blockfrost/Contract.purs) +- `npm run blockfrost-local-test` for self-hosted [Blockfrost-powered tests](./blockfrost.md) (requires a [local Blockfrost runtime](./blockfrost.md#running-blockfrost-locally)) - [entry point](../test/Blockfrost/Contract.purs) +- `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP) + +#### With Nix + +Here and below, `` should be replaced with [one of the supported systems](https://github.com/Plutonomicon/cardano-transaction-lib/blob/15fd9c5b683df47134dce4a0479f1edc30d4b6f7/flake.nix#L51) that you use, e.g. `x86_64-linux`. + +- Unit tests: `nix build .#checks..ctl-unit-test` +- [E2E tests in Nix with wallet mocks](./e2e-testing.md#using-cip-30-mock-with-plutip): `nix build -L .#checks..ctl-e2e-test` +- Contract tests ([Plutip](./plutip-testing.md)): `nix build -L .#checks..ctl-plutip-test` +- [Staking](./staking.md) tests ([Plutip](./plutip-testing.md)): `nix build -L .#checks..ctl-staking-test` + +#### Nix checks + +- Check formatting: `nix build -L .#checks..formatting-check` +- Check correctness of `package.json` dependencies in template: `nix build -L .#checks..template-deps-json` +- Check correctness of Spago dependencies in template: `nix build -L .#checks..template-dhall-diff` +- Check that CTL revisions match in Spago package set and Nix in template: `nix build -L .#checks..template-version` +- Check that examples don't use internal modules: `nix build -L .#checks..examples-imports-check` + +### Bundling for the browser + +To run or build/bundle the project for the browser: + +- `npm run e2e-serve` will start a Webpack development server at `localhost:4008`, which is required for [E2E tests](./e2e-testing.md) +- `npm run build` will output a Webpack-bundled example module to `dist` (or `nix build -L .#ctl-example-bundle-web` to build an example module using Nix into `./result/`) By default, Webpack will build a [Purescript module](../examples/ByUrl.purs) that serves multiple example `Contract`s depending on URL (see [here](./e2e-testing.md#serving-the-contract-to-be-tested)). You can point Webpack to another Purescript entrypoint by changing the `ps-bundle` variable in the Makefile or in the `main` argument in the flake's `packages.ctl-examples-bundle-web`. diff --git a/doc/runtime.md b/doc/runtime.md index c8f6a8672..ac484631f 100644 --- a/doc/runtime.md +++ b/doc/runtime.md @@ -33,6 +33,8 @@ The services that are currently **required** are: - You **must** use Kupo v2.2.0 or greater with CTL - Like Ogmios, Kupo requires a running Cardano node +To start all of them for tests, run `npm run start-runtime`. + ### Using NixOS module CTL's dependencies can be configured and started via NixOS modules. See [nix/test-nixos-configuration.nix](../nix/test-nixos-configuration.nix) for example. diff --git a/scripts/examples-imports-check.sh b/scripts/examples-imports-check.sh index 1f6132db3..99625f02a 100644 --- a/scripts/examples-imports-check.sh +++ b/scripts/examples-imports-check.sh @@ -1,5 +1,7 @@ #!/bin/sh +# Checks that no internal modules are used in examples + examples_imports_check() { local examples_path="./examples" local examples_with_internal_imports="" diff --git a/scripts/whitespace-check.sh b/scripts/whitespace-check.sh index 4ebf22247..ced258a00 100755 --- a/scripts/whitespace-check.sh +++ b/scripts/whitespace-check.sh @@ -1,5 +1,7 @@ #!/bin/sh +# Checks that files don't have trailing whitespaces in them + files=" *.md *.nix From 0b6c9398e966acd10cb19a674c5521402450e205 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 15:45:20 +0400 Subject: [PATCH 083/478] - Update CHANGELOG - Make postgres container only available with Blockfrost - follow code style --- CHANGELOG.md | 2 ++ doc/development.md | 2 +- nix/runtime.nix | 2 +- src/Internal/Contract/Monad.purs | 12 +++++++++--- templates/ctl-scaffold/test/blockfrost-local.env | 5 +++-- templates/ctl-scaffold/test/blockfrost.env | 2 +- test/blockfrost-local.env | 5 +++-- test/blockfrost.env | 2 +- 8 files changed, 21 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb74f3c52..1f542585f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) - Automatic retries for `503 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) - New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Added `start-runtime` npm script to the template, to simplify UX ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) @@ -73,6 +74,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `getWalletBalance` is now implemented via `getWalletUtxos` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `PoolPubKeyHash` is now a wrapper over `PubKeyHash` instead of `Ed25519KeyHash` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `Contract.Wallet.Key.publicKeyFromPrivateKey` uses `PublicKey` type from public API ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `Contract.Test.Blockfrost.executeContractTestsWithBlockfrost` does not require optional `CtlBackendParams` value (it is now constructed from environment variables). ### Fixed diff --git a/doc/development.md b/doc/development.md index d8eae424f..6dc416442 100644 --- a/doc/development.md +++ b/doc/development.md @@ -15,7 +15,7 @@ This document outlines development workflows for CTL itself. You may also wish t - [With NodeJS](#with-nodejs) - [With Nix](#with-nix) - [Nix checks](#nix-checks) - - [Bundling for the browser](#bundling-for-the-browser) + - [Bundling for the browser](#bundling-for-the-browser) - [Generating PS documentation](#generating-ps-documentation) - [Adding PS/JS dependencies](#adding-psjs-dependencies) - [Purescript](#purescript) diff --git a/nix/runtime.nix b/nix/runtime.nix index 67ce2f3ee..b59d6637d 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -170,6 +170,7 @@ rec { ]; }; }; + } // (if config.blockfrost.enable then { # TODO do not directly use Docker images # Arion allow to run NixOS in containers, explore this direction "postgres-${network.name}" = { @@ -186,7 +187,6 @@ rec { }; }; }; - } // (if config.blockfrost.enable then { "db-sync-${network.name}".service = { useHostStore = true; depends_on = [ "postgres-${network.name}" ]; diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index e118c638a..6b5fa0851 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -207,7 +207,8 @@ type ContractEnv = getQueryHandle :: Contract QueryHandle getQueryHandle = asks _.handle -mkQueryHandle :: forall rest. LogParams rest -> QueryBackend -> QueryHandle +mkQueryHandle + :: forall (rest :: Row Type). LogParams rest -> QueryBackend -> QueryHandle mkQueryHandle params queryBackend = case queryBackend of CtlBackend ctlBackend _ -> @@ -448,11 +449,16 @@ wrapQueryM qm = do liftAff $ runQueryM contractEnv ctlBackend qm runQueryM - :: forall (a :: Type) rest. LogParams rest -> CtlBackend -> QueryM a -> Aff a + :: forall (a :: Type) (rest :: Row Type) + . LogParams rest + -> CtlBackend + -> QueryM a + -> Aff a runQueryM params ctlBackend = flip runReaderT (mkQueryEnv params ctlBackend) <<< unwrap -mkQueryEnv :: forall rest. LogParams rest -> CtlBackend -> QueryEnv +mkQueryEnv + :: forall (rest :: Row Type). LogParams rest -> CtlBackend -> QueryEnv mkQueryEnv params ctlBackend = { config: { kupoConfig: ctlBackend.kupoConfig diff --git a/templates/ctl-scaffold/test/blockfrost-local.env b/templates/ctl-scaffold/test/blockfrost-local.env index da36f7a8b..c82b6302c 100644 --- a/templates/ctl-scaffold/test/blockfrost-local.env +++ b/templates/ctl-scaffold/test/blockfrost-local.env @@ -1,4 +1,5 @@ -# Blockfrost test suite configuration. +# Blockfrost test suite configuration that uses self-hosted (local) Blockfrost +# deployment. # # This file specifies some environment variables that can be read by # `executePlutipTestsWithBlockfrost` function to run contract tests using @@ -19,5 +20,5 @@ export BLOCKFROST_PATH="" export OGMIOS_PORT=1337 export OGMIOS_HOST=127.0.0.1 -export OGMIOS_PATH="" export OGMIOS_SECURE=false +export OGMIOS_PATH="" diff --git a/templates/ctl-scaffold/test/blockfrost.env b/templates/ctl-scaffold/test/blockfrost.env index ce92a09ae..fa8e94340 100644 --- a/templates/ctl-scaffold/test/blockfrost.env +++ b/templates/ctl-scaffold/test/blockfrost.env @@ -1,4 +1,4 @@ -# Blockfrost test suite configuration. +# Blockfrost test suite configuration that uses public Blockfrost SaaS instance. # # This file specifies some environment variables that can be read by # `executePlutipTestsWithBlockfrost` function to run contract tests using diff --git a/test/blockfrost-local.env b/test/blockfrost-local.env index db168b399..fb36806c2 100644 --- a/test/blockfrost-local.env +++ b/test/blockfrost-local.env @@ -1,4 +1,5 @@ -# Blockfrost test suite configuration. +# Blockfrost test suite configuration that uses self-hosted (local) Blockfrost +# deployment. # # This file specifies some environment variables that can be read by # `executePlutipTestsWithBlockfrost` function to run contract tests using @@ -19,5 +20,5 @@ export BLOCKFROST_PATH="" export OGMIOS_PORT=1337 export OGMIOS_HOST=127.0.0.1 -export OGMIOS_PATH="" export OGMIOS_SECURE=false +export OGMIOS_PATH="" diff --git a/test/blockfrost.env b/test/blockfrost.env index d53965fa3..546b49228 100644 --- a/test/blockfrost.env +++ b/test/blockfrost.env @@ -1,4 +1,4 @@ -# Blockfrost test suite configuration. +# Blockfrost test suite configuration that uses public Blockfrost SaaS instance. # # This file specifies some environment variables that can be read by # `executePlutipTestsWithBlockfrost` function to run plutip tests using From 8ab3dcfa72722f8b0c5a619073d6c532213d0ffb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 18:15:27 +0400 Subject: [PATCH 084/478] Clean up flake and update plutip revision --- flake.lock | 12 ++++++------ flake.nix | 9 +-------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/flake.lock b/flake.lock index 732132c96..cfc5fb8cf 100644 --- a/flake.lock +++ b/flake.lock @@ -6666,17 +6666,17 @@ ] }, "locked": { - "lastModified": 1676628683, - "narHash": "sha256-2qXuSc8BzfI2VAwQ7ntxckxiUiWef7TDl8PpI2RpxHE=", - "owner": "zmrocze", + "lastModified": 1678283073, + "narHash": "sha256-eh//MOBA7+Lmzu4fhhqpKBTlgTJxEq36jPQkVYwu6Ts=", + "owner": "mlabs-haskell", "repo": "plutip", - "rev": "6689f062fc95f64678dbabf4fef1d186cc46937c", + "rev": "89cf822c213f6a4278a88c8a8bb982696c649e76", "type": "github" }, "original": { - "owner": "zmrocze", - "ref": "plutip-core", + "owner": "mlabs-haskell", "repo": "plutip", + "rev": "89cf822c213f6a4278a88c8a8bb982696c649e76", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 6e80e1252..c2f92f883 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,6 @@ inputs = { nixpkgs.follows = "ogmios/nixpkgs"; - # nixpkgs = "nixpkgs"; flake-compat = { url = "github:edolstra/flake-compat"; @@ -13,7 +12,6 @@ }; ogmios.url = "github:mlabs-haskell/ogmios/a7687bc03b446bc74564abe1873fbabfa1aac196"; - # plutip.url = "github:mlabs-haskell/plutip?rev=8d1795d9ac3f9c6f31381104b25c71576eeba009"; kupo-nixos.url = "github:mlabs-haskell/kupo-nixos/6f89cbcc359893a2aea14dd380f9a45e04c6aa67"; kupo-nixos.inputs.kupo.follows = "kupo"; @@ -42,8 +40,7 @@ }; # Plutip server related inputs - # TODO: change this when https://github.com/mlabs-haskell/plutip/pull/169 is merged - plutip.url = "github:zmrocze/plutip/plutip-core"; + plutip.url = "github:mlabs-haskell/plutip/89cf822c213f6a4278a88c8a8bb982696c649e76"; plutip-nixpkgs.follows = "plutip/nixpkgs"; haskell-nix.url = "github:mlabs-haskell/haskell.nix"; iohk-nix = { @@ -255,10 +252,6 @@ }); }; }; - # plutip-server = nixpkgs.lib.composeManyExtensions [ - # inputs.haskell-nix.overlay - # (import "${inputs.iohk-nix}/overlays/crypto") - # ]; runtime = ( final: prev: From f33986a459ea85910279ff5d162741a95cf41984 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Mar 2023 18:26:14 +0400 Subject: [PATCH 085/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c38136cd0..9e35711a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `getWalletBalance` is now implemented via `getWalletUtxos` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `PoolPubKeyHash` is now a wrapper over `PubKeyHash` instead of `Ed25519KeyHash` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `Contract.Wallet.Key.publicKeyFromPrivateKey` uses `PublicKey` type from public API ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `plutip-server` was moved from [Plutip repo](https://github.com/mlabs-haskell/plutip) to CTL ([#1415](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1415)) ### Fixed From e306c206bc14892516883f0f9c4253e9b0532263 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Mar 2023 19:06:49 +0400 Subject: [PATCH 086/478] Add JS SDK helpers --- src/Contract/JsSdk.purs | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Contract/JsSdk.purs diff --git a/src/Contract/JsSdk.purs b/src/Contract/JsSdk.purs new file mode 100644 index 000000000..29c8e3a02 --- /dev/null +++ b/src/Contract/JsSdk.purs @@ -0,0 +1,47 @@ +-- | This module contains helper functions for CTL-based JS SDK developers. +-- | See `doc/using-from-js.md`. +module Contract.JsSdk + ( runContractJS + , runContractInEnvJS + , mkContractEnvJS + , stopContractEnvJS + , withContractEnvJS + ) where + +import Prelude + +import Contract.Monad + ( Contract + , ContractEnv + , ContractParams + , mkContractEnv + , runContract + , runContractInEnv + , stopContractEnv + , withContractEnv + ) +import Control.Promise (Promise, fromAff, toAff) +import Data.Function.Uncurried (Fn1, Fn2, mkFn1, mkFn2, runFn1) +import Effect.Unsafe (unsafePerformEffect) + +runContractJS :: forall (a :: Type). Fn2 ContractParams (Contract a) (Promise a) +runContractJS = mkFn2 \params contract -> + unsafePerformEffect $ fromAff $ runContract params contract + +runContractInEnvJS + :: forall (a :: Type). Fn2 ContractEnv (Contract a) (Promise a) +runContractInEnvJS = mkFn2 \env contract -> + unsafePerformEffect $ fromAff $ runContractInEnv env contract + +mkContractEnvJS + :: Fn1 ContractParams (Promise ContractEnv) +mkContractEnvJS = mkFn1 $ unsafePerformEffect <<< fromAff <<< mkContractEnv + +stopContractEnvJS :: Fn1 ContractEnv (Promise Unit) +stopContractEnvJS = mkFn1 $ unsafePerformEffect <<< fromAff <<< stopContractEnv + +withContractEnvJS + :: forall a. Fn2 ContractParams (Fn1 ContractEnv (Promise a)) (Promise a) +withContractEnvJS = mkFn2 \params callback -> + unsafePerformEffect $ fromAff $ withContractEnv params + (toAff <<< runFn1 callback) From d41822c223ab6d8e99a2d2fcffe3b89a20f65538 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Mar 2023 19:10:33 +0400 Subject: [PATCH 087/478] - Add docs for ContractEnv - Add docs for using CTL from JS in node and the browser - expand bundling section in faq --- README.md | 5 +- doc/contract-environment.md | 76 +++++++++ doc/ctl-as-dependency.md | 38 +---- doc/faq.md | 19 ++- doc/getting-started.md | 4 +- doc/query-layers.md | 1 + doc/secp256k1-support.md | 1 + doc/using-from-js.md | 196 +++++++++++++++++++++++ templates/ctl-scaffold/scripts/README.md | 7 + templates/ctl-scaffold/webpack.config.js | 3 +- webpack.config.js | 1 + 11 files changed, 312 insertions(+), 39 deletions(-) create mode 100644 doc/contract-environment.md create mode 100644 doc/using-from-js.md create mode 100644 templates/ctl-scaffold/scripts/README.md diff --git a/README.md b/README.md index 518e93b81..9fe30a5b7 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,11 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [CTL's runtime dependencies](./doc/runtime.md) - [Blockfrost support](./doc/blockfrost.md) - [Getting started writing CTL contracts](./doc/getting-started.md) +- [Managing contract environment](./doc/contract-environment.md) +- [Using CTL from JS](./doc/using-from-js.md) +- [Importing Plutus Scripts](./doc/importing-scripts.md) - [Migrating from Plutus to CTL](./doc/plutus-comparison.md) -- [Testing overview](./doc/testing.md) +- [Overview of testing approaches](./doc/testing.md) - [Testing contracts with Plutip](./doc/plutip-testing.md) - [End-to-end testing with headless browsers](./doc/e2e-testing.md) - [Utilities for testing](./doc/test-utils.md) diff --git a/doc/contract-environment.md b/doc/contract-environment.md new file mode 100644 index 000000000..58d17ec75 --- /dev/null +++ b/doc/contract-environment.md @@ -0,0 +1,76 @@ + + + +- [`Contract` environment](#contract-environment) + - [`ContractEnv` management](#contractenv-management) + - [Following the bracket pattern](#following-the-bracket-pattern) + - [Manually passing the environment](#manually-passing-the-environment) + - [See also](#see-also) + + + +# `Contract` environment + +CTL environment (`ContractEnv` type) consists of: + +- various settings +- network protocol parameters (fetched once on initialization) +- active Ogmios `WebSocket` (optional) +- CIP-30 wallet connection (optional) +- internal state used by [synchronization primitives](./query-layers.md) + +## `ContractEnv` management + +Initialization is a costly operation, and having multiple distinct runtimes may lead to problems with state synchronization and excessive `WebSocket` use, so it is recommended to use only one runtime at any point in time. + +If only one `Contract` is ever executed, just using `runContract` is perfectly fine. Otherwise, there are two better approaches: + +### Following the bracket pattern + +[Bracket pattern](https://wiki.haskell.org/Bracket_pattern) in functional programming world is commonly used to safely manage resources. In our case, `withContractEnv` should be used to initialize and finalize a `ContractEnv`. `withContractEnv` should be used to run a `Contract` within the environment: + +```purescript +withContractEnv :: forall (a :: Type). ContractParams -> (ContractEnv -> Aff a) -> Aff a +runContractInEnv :: forall (a :: Type). ContractEnv -> Contract a -> Aff a + +myContract1 :: Contract Uni +myContract2 :: Contract Uni + +myRunner :: ContractParams -> Aff Unit +myRunner params = withContractEnv params \env -> do + runContractInEnv env myContract1 + runContractInEnv env myContract2 +``` + +Using bracket functions is safe, but is not always convenient, because `withContractEnv` callback must hold the `Aff` context until all `Contract`s exit. + +### Manually passing the environment + +Another approach is using `mkContractEnv` coupled with `runContractInEnv` and `stopContractEnv`. + +Here's an example: + +```purescript +mkContractEnv :: ContractParams -> Aff ContractEnv +stopContractEnv :: ContractEnv -> Aff Unit + +myContract1 :: Contract Uni +myContract2 :: Contract Uni + +myRunner :: ContractParams -> Aff Unit +myRunner params = do + env <- mkContractEnv + void $ try do + runContractInEnv env myContract1 + runContractInEnv env myContract2 + stopContractEnv env +``` + +This approach is less safe in general, and it's fairly easy to hit the max WebSocket connections limit (which is 200 for Firefox) due to a forgotten `stopContractEnv` call (e.g. due to an exception), not to mention that any websocket that is not closed will force the server to also keep the connection. + +This approach, however, is better suited for use when creating [custom JavaScript SDKs](./using-from-js.md). + +## See also + +- [Using CTL from JS](./using-from-js.md) +- [CTL runtime](./runtime.md) diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 679468569..4026f93a8 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -9,9 +9,7 @@ CTL can be imported as an additional dependency into a Purescript project built - [Caveats](#caveats) - [Using CTL's overlays](#using-ctls-overlays) - [Upgrading CTL](#upgrading-ctl) -- [Using CTL from JS](#using-ctl-from-js) - - [Bundling](#bundling) - - [Wrapping CTL into a JS interface](#wrapping-ctl-into-a-js-interface) +- [See also](#see-also) @@ -86,35 +84,7 @@ Make sure to perform **all** of the following steps, otherwise you **will** enco - Sometimes the WebPack configuration also comes with breaking changes. Common source of problems are changes to `resolve.fallback`, `plugins` and `experiments` fields of the WebPack config. Use `git diff old-revision new-revision webpack.config.js` in the root of a cloned CTL repo, or use `git blame`. -## Using CTL from JS +## See also -### Bundling - -The recommended way to bundle CTL is to use WebPack. - -We depend on WebPack's `DefinePlugin` to conditionally load one of our dependency (`cardano-serialization-lib`) nodejs or browser version. - -That means that CTL _requires_ bundling it the same way when used as a dependency, as we do in development. If you intend to use another bundler, something like `DefinePlugin` should be used to transform the imports from - -```javascript -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); -} else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); -} -``` - -to only one of the variants. - -Our default [WebPack config](../webpack.config.js) uses `BROWSER_RUNTIME` environment variable to differentiate between two bundling options. - -The reason why we are tied to WebPack is that it is one of the few bundlers that support async WASM imports. - -There's [a claim that Vite bundler can also be used](https://github.com/Plutonomicon/cardano-transaction-lib/issues/79#issuecomment-1257036068), although we don't officially support this method. - -### Wrapping CTL into a JS interface - -Some users may want to provide a small set of APIs behind a JS/TS interface, instead of dealing with PureScript code. - -There's nothing specific to be done for CTL (it's a normal PureScript project), so [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) may be of help. Note that our PureScript version is using CommonJS modules and not ES modules. +- [How to use CTL-based apps from JS](./using-from-js.md) +- [Managing Contract environment correctly](./contract-environment.md) diff --git a/doc/faq.md b/doc/faq.md index 1cb7010c3..c917c8e5a 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -9,6 +9,9 @@ This document lists common problems encountered by CTL users and developers. - [Bundling-related](#bundling-related) - [Q: `lib.something` is not a function, why?](#q-libsomething-is-not-a-function-why) - [Q: I see `spago: Error: Remote host not found`, why?](#q-i-see-spago-error-remote-host-not-found-why) + - [Q: I see `WebAssembly module is included in initial chunk.` error, why?](#q-i-see-webassembly-module-is-included-in-initial-chunk-error-why) + - [Q: I see `Cannot use 'import.meta' outside a module` error in the browser, why?](#q-i-see-cannot-use-importmeta-outside-a-module-error-in-the-browser-why) + - [Q: I see `Module not found: Error: Can't resolve 'utf-8-validate'` error when bundling, why?](#q-i-see-module-not-found-error-cant-resolve-utf-8-validate-error-when-bundling-why) - [Common Contract execution problems](#common-contract-execution-problems) - [Q: What are the common reasons behind BalanceInsufficientError?](#q-what-are-the-common-reasons-behind-balanceinsufficienterror) - [Q: CTL consumed my collateral](#q-ctl-consumed-my-collateral) @@ -49,6 +52,20 @@ URL: https://github.com/purescript/package-sets/releases/download/psc-0.14.5-202 means that the CTL overlay hasn't been properly applied. Add `ctl.overlays.spago`. +### Q: I see `WebAssembly module is included in initial chunk.` error, why? + +You may be trying to use `require` instead of `import` in the app entry point, see [here](./using-from-js.md). + +### Q: I see `Cannot use 'import.meta' outside a module` error in the browser, why? + +`type="module"` is required in the HTML script import, see [here](./using-from-js.md). + +Other possible cause may be that you are trying to run a browser-targeted bundle in NodeJS. + +### Q: I see `Module not found: Error: Can't resolve 'utf-8-validate'` error when bundling, why? + +You probably forgot to set `BROWSER_RUNTIME=1` for the `webpack` command, see [here](./using-from-js.md). + ## Common Contract execution problems ### Q: What are the common reasons behind BalanceInsufficientError? @@ -128,7 +145,7 @@ If you are under wayland you need to add `--ozone-platform=wayland` to the argum Use only one `ContractEnv` value. They are implicitly created every time `runContract` is called, so avoid using this function if you need to run multiple `Contract`s. -Instead, initialize the environment with `withContractEnv` and pass it to `runContractInEnv`. The former ensures that the environment is properly finalized, but it forces the developer to follow the bracket pattern, which is not always convenient. As an alternative, `mkContractEnv` can be used. If you are initializing a contract environment with `mkContractEnv` only once during the lifeteime of your app, you should be fine, but if you re-create it dynamically and do not finalize it with `stopContractEnv`, it's fairly easy to hit the max websocket connections limit, which is 200 for Firefox, not to mention that it would be forcing the server to keep the connections. +See [here](./ctl-as-dependency.md#initializing-the-environment) for more info. ### Package 'chromium-105.0.5195.125' is not supported on 'x86_64-darwin' diff --git a/doc/getting-started.md b/doc/getting-started.md index 94c858e77..6f03b25a5 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -117,11 +117,11 @@ main = Contract.Monad.launchAff_ do ### Making the `ContractEnv` -The `ContractEnv` type contains configuration values and websocket connections that are required to execute contracts written in CTL. The users should not construct it directly - `Contract.Config.ContractParams` should be used instead. +The `ContractEnv` type contains data that is required to execute contracts written in CTL. The users should not construct it directly - `Contract.Config.ContractParams` should be used instead. For local development and testing, we provide `Contract.Config.testnetConfig` where all `CtlBackend` service hosts are set to `localhost` and the `logLevel` is set to `Trace`. -It is **not recommended to directly construct or manipulate a `ContractEnv` yourself** as the process of making a new config initializes websockets. Instead, use `Contract.Monad.ContractParams` with `runContract`. +It is **not recommended to directly construct or manipulate a `ContractEnv` yourself** as the process of making a new config initializes websockets. Instead, use `Contract.Monad.ContractParams` with `runContract` or its variants. A special `Contract.Config.WalletSpec` type is used to specify which wallet to use during the `Contract` lifetime. diff --git a/doc/query-layers.md b/doc/query-layers.md index 9da77f605..0ae2760d9 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -30,6 +30,7 @@ Thus, the goal of the developers is to ensure that the set of UTxOs available to - A dApp tries to balance a transaction with UTxOs from the wallet that are not yet available in Ogmios or Blockfrost, causing an error response - A transaction is passed for signing, but the wallet does not yet know about the UTxOs it spends, and thus refuses to sign it (this happens with Eternl) +- A transaction is sent to the network via Ogmios or Blockfrost and is confirmed there, but the wallet still does not know about its UTxOs. CTL tries to be smart when dealing with the issue, and it aims to let the user work with both query layers as if it was one. To achieve this guarantee, CTL follows three simple rules: diff --git a/doc/secp256k1-support.md b/doc/secp256k1-support.md index e6af3d1eb..fb40e20b6 100644 --- a/doc/secp256k1-support.md +++ b/doc/secp256k1-support.md @@ -21,6 +21,7 @@ For a more in depth oversight please see [Cip-49](https://github.com/mlabs-haske [Cip-49](https://github.com/mlabs-haskell/CIPs/tree/c5bdd66fe49c19c341499f86cebaa2eef9e90b74/CIP-0049) provides two new Plutus builtin functions for signature verification. Both functions take the following as Parameters: + - A verification key; - An input to verify (either the message itself, or a hash); - A signature. diff --git a/doc/using-from-js.md b/doc/using-from-js.md new file mode 100644 index 000000000..b115f469f --- /dev/null +++ b/doc/using-from-js.md @@ -0,0 +1,196 @@ + + + +- [JavaScript SDKs](#javascript-sdks) + - [Defining APIs in PureScript](#defining-apis-in-purescript) + - [Using from NodeJS](#using-from-nodejs) + - [Bundling for NodeJS](#bundling-for-nodejs) + - [Calling from NodeJS](#calling-from-nodejs) + - [Using from the browser](#using-from-the-browser) + - [Bundling for the browser](#bundling-for-the-browser) + - [WebAssembly and conditional imports](#webassembly-and-conditional-imports) + - [Calling in the browser](#calling-in-the-browser) + - [See also](#see-also) + + + +# JavaScript SDKs + +Normally, dApps involve three parts: + +- on-chain logic (Plutus or Plutarch scripts) +- off-chain logic (in our case, implemented using CTL) +- user interface + +Building CTL-based JavaScript SDKs is the simplest way to connect user interfaces (most commonly, web apps) with off-chain logic. These SDKs expose app-specific APIs for web developers to plug into the user interface. SDKs are normally consumable as NPM packages. + +## Defining APIs in PureScript + +Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. Our (older) PureScript version is using CommonJS modules and not ES modules, so `import` statements should be replaced with `require`. + +Suppose we want to wrap a single `Contract` into an interface to call it from JS with Nami wallet. + +We have to expose [functions to manage contract environment](./contract-environment.md) - initialization and finalization, as well as a config value we will use. + +```purescript +module Api where + +import Prelude + +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.JsSdk (mkContractEnvJS, stopContractEnvJS) +import Contract.Monad (ContractEnv, runContractInEnv) +import Control.Promise (Promise, fromAff) +import Data.Function.Uncurried (Fn1, mkFn1) +import Effect.Unsafe (unsafePerformEffect) +import Scaffold (contract) -- our contract + +initialize :: Fn1 ContractParams (Promise ContractEnv) +initialize = mkContractEnvJS + +finalize :: Fn1 ContractEnv (Promise Unit) +finalize = stopContractEnvJS + +run :: Fn1 ContractEnv (Promise Unit) +run = mkFn1 \env -> + unsafePerformEffect $ fromAff $ runContractInEnv env contract + +config :: ContractParams +config = testnetNamiConfig -- use Nami wallet +``` + +- `Fn1` - `Fn10` types are wrappers that represent uncurried JavaScript functions with multiple arguments, and `mkFn1` - `mkFn10` are their constructors. +- `Contract.JsSdk` is a module containing synonyms for some `Contract.Monad` functions, but adapted for use in JS SDKs. +- `fromAff` converts `Aff a` to `Effect (Promise a)`, and `unsafePerformEffect` removes the `Effect` wrapper that is not needed on the JS side. + +## Using from NodeJS + +### Bundling for NodeJS + +To prepare the module defined above for use from other NodeJS code, `spago bundle-module` should be used: + +```bash +spago bundle-module -m Api --to output.js +``` + +The resulting bundle will NOT include its NodeJS dependencies in the same file. + +It can be distributed via NPM by pointing `package.json` to it: + +```js +{ + ... + "main": "output.js", + ... + "dependencies": { + // same dependencies as CTL itself uses should be put here + } +} +``` + +### Calling from NodeJS + +The module above can be imported like this from NodeJS: + +```javascript +const { initialize, config, run, finalize } = require('./output.js'); + +(async () => { + const env = await initialize(config); + try { + await run(env); + } finally { + await finalize(env); + } +})(); +``` + +Notice that we used `finally` to finalize - this is because a running contract environment would prevent the script from exiting otherwise. Please read [this guide](./contract-environment.md) for info on how to manage the runtime environment correctly. + +## Using from the browser + +### Bundling for the browser + +The recommended way to bundle CTL for the browser is to use WebPack. + +#### WebAssembly and conditional imports + +We depend on WebPack's `DefinePlugin` to conditionally load either NodeJS or browser variant of dependencies that have WebAssembly parts. + +That means that CTL _requires_ bundling it the same way when used as a dependency, as we do in development. If you intend to use another bundler, something like `DefinePlugin` should be used to transform the import headers from this: + +```javascript +let lib; +if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + lib = require("@emurgo/cardano-serialization-lib-browser"); +} else { + lib = require("@emurgo/cardano-serialization-lib-nodejs"); +} +``` + +to only one of the import variants. + +Our default [WebPack config](../webpack.config.js) uses `BROWSER_RUNTIME` environment variable to differentiate between two bundling options: + +```js + plugins: [ + new webpack.DefinePlugin({ + BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, + }), +``` + +The reason why we are tied to WebPack is that it is one of the few bundlers that support async WASM imports. + +There's [a claim that Vite bundler can also be used](https://github.com/Plutonomicon/cardano-transaction-lib/issues/79#issuecomment-1257036068), although we don't officially support this method. + +### Calling in the browser + +Webpack config contains `entry` field, pointing to the main file of the app. + +Assuming we want to use the example app from above, it can be populated like this: + +```js +import("./output.js").then( + async ({ initialize, config, run, finalize }) => { + + const env = await initialize(config); + try { + await run(env); + } finally { + await finalize(env); + } +}); +``` + +The config also contains some setup for output target: + +```js + output: { + path: path.resolve(__dirname, "dist"), + filename: "bundle.js", + }, +``` + +But to actually build a page that can be opened in a browser, we use `HtmlWebpackPlugin`: + +```js + new HtmlWebpackPlugin({ + title: "ctl-scaffold", + template: "./index.html", + inject: false, // See stackoverflow.com/a/38292765/3067181 + }), +``` + +The HTML page should contain this import, pointing to output bundle filename: + +```html + +``` + +`type="module"` is required here. + +The whole webpage can be served with `BROWSER_RUNTIME=1 webpack-dev-server --progress` or built with `BROWSER_RUNTIME=1 webpack --mode=production` + +## See also + +- [How to import serialized Plutus scripts for NodeJS and the browser](./importing-scripts.md) diff --git a/templates/ctl-scaffold/scripts/README.md b/templates/ctl-scaffold/scripts/README.md new file mode 100644 index 000000000..4715e3825 --- /dev/null +++ b/templates/ctl-scaffold/scripts/README.md @@ -0,0 +1,7 @@ +Keep your compiled scripts here. They can be accessed from JS like this, thanks to WebPack setup: + +```js +exports.myscript = require("Scripts/myscript.plutus"); +``` + +See docs on scripts importing in CTL for more info (`doc/importing-scripts.md`) diff --git a/templates/ctl-scaffold/webpack.config.js b/templates/ctl-scaffold/webpack.config.js index e2d2c6471..ee071fa54 100644 --- a/templates/ctl-scaffold/webpack.config.js +++ b/templates/ctl-scaffold/webpack.config.js @@ -56,6 +56,7 @@ module.exports = { }, resolve: { + // We use node_modules provided by Nix shell via an environment variable modules: [process.env.NODE_PATH], extensions: [".js"], fallback: { @@ -77,7 +78,7 @@ module.exports = { alias: { // You should update this path to the location of your compiled scripts, // relative to `webpack.config.js` - Scripts: path.resolve(__dirname, "fixtures/scripts"), + Scripts: path.resolve(__dirname, "scripts"), }, }, diff --git a/webpack.config.js b/webpack.config.js index e29b5b2df..6469ab126 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -56,6 +56,7 @@ module.exports = { }, resolve: { + // We use node_modules provided by Nix shell via an environment variable modules: [process.env.NODE_PATH], extensions: [".js"], fallback: { From 967f1df03c6caab9da1e809c1e8e61627d324448 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Mar 2023 19:13:30 +0400 Subject: [PATCH 088/478] Switch to NodeJS v18 --- nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 1c36f295e..c6e1b7afb 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -15,7 +15,7 @@ # Warnings from `purs` to silence during compilation, independent of `strictComp` , censorCodes ? [ "UserDefinedWarning" ] # The version of node to use across all project components -, nodejs ? pkgs.nodejs-14_x +, nodejs ? pkgs.nodejs-18_x # Autogenerated Nix from `spago2nix generate` , spagoPackages ? "${src}/spago-packages.nix" # Configuration that will be used to generate a `devShell` for the project @@ -527,7 +527,7 @@ let script = pkgs.writeShellApplication { name = binPath; runtimeInputs = [ - pkgs.nodejs-14_x + pkgs.nodejs-18_x pkgs.nodePackages.http-server ]; text = From 375622e83feba487b56ddab7f52a8e6a9428b3ea Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Mar 2023 19:48:14 +0400 Subject: [PATCH 089/478] Fix warning in new node version (recursive rmdirSync) --- src/Internal/Plutip/Spawn.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Plutip/Spawn.js b/src/Internal/Plutip/Spawn.js index 31319b39c..4e4273f3a 100644 --- a/src/Internal/Plutip/Spawn.js +++ b/src/Internal/Plutip/Spawn.js @@ -6,7 +6,7 @@ exports.clearLineHandler = readline => () => { const fs = require("fs"); -exports._rmdirSync = path => () => fs.rmdirSync(path, { recursive: true }); +exports._rmdirSync = path => () => fs.rmSync(path, { recursive: true }); exports.removeOnSignal = ({ signal, callback }) => From 03eef18a2456a3f8fff66b814717a6bba506da21 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Mar 2023 19:56:21 +0400 Subject: [PATCH 090/478] Update CHANGELOG --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 015226988..ad43783ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Added `start-runtime` npm script to the template, to simplify UX ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Configuration options for Kupo in `buildCtlRuntime` ([`deferDbIndexes`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-defer-db-indexes) and [`pruneUtxo`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-prune-utxo)) ([#1448](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1448)) +- `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) +- New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) ### Changed @@ -77,6 +79,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Wallet.Key.publicKeyFromPrivateKey` uses `PublicKey` type from public API ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `Contract.Test.Blockfrost.executeContractTestsWithBlockfrost` does not require optional `CtlBackendParams` value (it is now constructed from environment variables). - `plutip-server` was moved from [Plutip repo](https://github.com/mlabs-haskell/plutip) to CTL ([#1415](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1415)) +- Default NodeJS stable version is now v18 ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) ### Fixed From 1e041f0b10d06b5101e3bf735636b78ed08511f7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 11 Mar 2023 11:02:07 +0400 Subject: [PATCH 091/478] Add a note about ContextReplacementPlugin --- templates/ctl-scaffold/webpack.config.js | 3 +++ webpack.config.js | 3 +++ 2 files changed, 6 insertions(+) diff --git a/templates/ctl-scaffold/webpack.config.js b/templates/ctl-scaffold/webpack.config.js index ee071fa54..ae6edde65 100644 --- a/templates/ctl-scaffold/webpack.config.js +++ b/templates/ctl-scaffold/webpack.config.js @@ -98,6 +98,9 @@ module.exports = { new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), ], diff --git a/webpack.config.js b/webpack.config.js index 6469ab126..c99c50e06 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -98,6 +98,9 @@ module.exports = { new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), ], From 3d920667500b0ae9b5c56d2dd35c8da12be4708c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 13 Mar 2023 15:22:28 +0400 Subject: [PATCH 092/478] Use Map.insert instead of Map.union (Map.singleton ... ...) --- src/Internal/Types/ScriptLookups.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 1396b54e8..bbcda0345 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1372,7 +1372,7 @@ processConstraint mpsMap osMap c = do rewardAddress = RewardAddress.stakePubKeyHashRewardAddress networkId spkh _cpsToTxBody <<< _withdrawals <<< non Map.empty %= - Map.union (Map.singleton rewardAddress (fromMaybe (Coin zero) rewards)) + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) MustWithdrawStakePlutusScript stakeValidator redeemerData -> runExceptT do let hash = plutusScriptStakeValidatorHash stakeValidator networkId <- lift getNetworkId @@ -1385,7 +1385,7 @@ processConstraint mpsMap osMap c = do (CannotWithdrawRewardsPlutusScript stakeValidator) mbRewards _cpsToTxBody <<< _withdrawals <<< non Map.empty %= - Map.union (Map.singleton rewardAddress (fromMaybe (Coin zero) rewards)) + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) let redeemer = T.Redeemer { tag: Reward @@ -1408,7 +1408,7 @@ processConstraint mpsMap osMap c = do (CannotWithdrawRewardsNativeScript stakeValidator) mbRewards _cpsToTxBody <<< _withdrawals <<< non Map.empty %= - Map.union (Map.singleton rewardAddress (fromMaybe (Coin zero) rewards)) + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) ExceptT $ attachToCps attachNativeScript (unwrap stakeValidator) MustSatisfyAnyOf xs -> do cps <- get From 722aeaacc1adcc1dab7540103945fa749fb86b78 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 13 Mar 2023 19:01:16 +0400 Subject: [PATCH 093/478] Add RedeemerIndex module --- src/Internal/BalanceTx/RedeemerIndex.purs | 105 ++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/Internal/BalanceTx/RedeemerIndex.purs diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs new file mode 100644 index 000000000..9f7360217 --- /dev/null +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -0,0 +1,105 @@ +module Ctl.Internal.BalanceTx.RedeemerIndex where + +import Prelude + +import Aeson (class EncodeAeson, encodeAeson) +import Ctl.Internal.Cardano.Types.Transaction (Certificate, Redeemer(Redeemer)) +import Ctl.Internal.Types.PlutusData (PlutusData) +import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) +import Ctl.Internal.Types.RewardAddress (RewardAddress) +import Ctl.Internal.Types.Scripts (MintingPolicyHash) +import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.Array (findIndex) +import Data.BigInt as BigInt +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) +import Data.Traversable (traverse) + +-- | Redeemer that hasn't yet been indexed, that tracks its purpose info +-- | that is enough to find its index given a `RedeemersContext`. +newtype UnindexedRedeemer = UnindexedRedeemer + { datum :: PlutusData + , purpose :: RedeemerPurpose + } + +derive instance Generic UnindexedRedeemer _ +derive instance Newtype UnindexedRedeemer _ +derive newtype instance Eq UnindexedRedeemer +derive newtype instance EncodeAeson UnindexedRedeemer + +instance Show UnindexedRedeemer where + show = genericShow + +-- | A redeemer with an index, but without `ExUnits` +newtype IndexedRedeemer = IndexedRedeemer + { tag :: RedeemerTag + , datum :: PlutusData + , index :: Int + } + +derive instance Generic IndexedRedeemer _ +derive instance Newtype IndexedRedeemer _ +derive newtype instance Eq IndexedRedeemer +derive newtype instance EncodeAeson IndexedRedeemer + +instance Show IndexedRedeemer where + show = genericShow + +-- | Sets `ExUnits` to `zero` +indexedRedeemerToRedeemer :: IndexedRedeemer -> Redeemer +indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = + Redeemer + { tag + , index: BigInt.fromInt index + , data: datum + , exUnits: { mem: zero, steps: zero } + } + +-- | Contains a value redeemer corresponds to, different for each possible +-- | `RedeemerTag`. +data RedeemerPurpose + = ForSpend TransactionInput + | ForMint MintingPolicyHash + | ForReward RewardAddress + | ForCert Certificate + +derive instance Generic RedeemerPurpose _ +derive instance Eq RedeemerPurpose + +instance EncodeAeson RedeemerPurpose where + encodeAeson = case _ of + ForSpend txo -> encodeAeson { tag: "ForSpend", value: encodeAeson txo } + ForMint mps -> encodeAeson { tag: "ForMint", value: encodeAeson mps } + ForReward addr -> encodeAeson { tag: "ForReward", value: encodeAeson addr } + ForCert cert -> encodeAeson { tag: "ForCert", value: encodeAeson cert } + +instance Show RedeemerPurpose where + show = genericShow + +-- | Contains parts of a transaction that are important when indexing redeemers +type RedeemersContext = + { inputs :: Array TransactionInput + , mintingPolicyHashes :: Array MintingPolicyHash + , rewardAddresses :: Array RewardAddress + , certs :: Array Certificate + } + +indexRedeemers + :: RedeemersContext + -> Array UnindexedRedeemer + -> Maybe (Array IndexedRedeemer) +indexRedeemers ctx redeemers = do + traverse (indexRedeemer ctx) redeemers + +indexRedeemer :: RedeemersContext -> UnindexedRedeemer -> Maybe IndexedRedeemer +indexRedeemer ctx (UnindexedRedeemer { purpose, datum }) = case purpose of + ForSpend input -> findIndex (eq input) ctx.inputs <#> \index -> + IndexedRedeemer { tag: Spend, index, datum } + ForMint mps -> findIndex (eq mps) ctx.mintingPolicyHashes <#> \index -> + IndexedRedeemer { tag: Mint, index, datum } + ForReward addr -> findIndex (eq addr) ctx.rewardAddresses <#> \index -> + IndexedRedeemer { tag: Reward, index, datum } + ForCert cert -> findIndex (eq cert) ctx.certs <#> \index -> + IndexedRedeemer { tag: Cert, index, datum } From 7336e8f0fbcca83ea69864225bf3b528226cbc32 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 13 Mar 2023 19:24:54 +0400 Subject: [PATCH 094/478] Construct RedeemersContext from transaction --- src/Internal/BalanceTx/RedeemerIndex.purs | 28 ++++++++++++++++++++--- src/Internal/Cardano/Types/Value.purs | 7 ++---- src/Internal/Serialization.purs | 3 +-- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 9f7360217..d37ea4aef 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -3,7 +3,13 @@ module Ctl.Internal.BalanceTx.RedeemerIndex where import Prelude import Aeson (class EncodeAeson, encodeAeson) -import Ctl.Internal.Cardano.Types.Transaction (Certificate, Redeemer(Redeemer)) +import Ctl.Internal.Cardano.Types.Transaction + ( Certificate + , Redeemer(Redeemer) + , Transaction(Transaction) + , TxBody(TxBody) + ) +import Ctl.Internal.Cardano.Types.Value (currencyMPSHash) import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Ctl.Internal.Types.RewardAddress (RewardAddress) @@ -11,9 +17,12 @@ import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (findIndex) import Data.BigInt as BigInt +import Data.Foldable (fold) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) +import Data.Map as Map +import Data.Maybe (Maybe, fromMaybe) +import Data.Newtype (class Newtype, unwrap) +import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (traverse) @@ -86,6 +95,19 @@ type RedeemersContext = , certs :: Array Certificate } +mkRedeemersContext :: Transaction -> RedeemersContext +mkRedeemersContext + (Transaction { body: TxBody { inputs, mint, withdrawals, certs } }) = + { inputs: Set.toUnfoldable inputs + , mintingPolicyHashes: Set.toUnfoldable (Map.keys mintedAssets) <#> + currencyMPSHash + , rewardAddresses: Set.toUnfoldable $ Map.keys $ fromMaybe Map.empty + withdrawals + , certs: fold certs + } + where + mintedAssets = fromMaybe Map.empty (map unwrap $ map unwrap mint) + indexRedeemers :: RedeemersContext -> Array UnindexedRedeemer diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 4553bd676..9fcff6cb3 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -48,7 +48,6 @@ module Ctl.Internal.Cardano.Types.Value , scriptHashAsCurrencySymbol , unionWith , unionWithNonAda - , unwrapNonAdaAsset , valueAssetClasses , valueAssets , valueOf @@ -274,6 +273,7 @@ mkUnsafeAdaSymbol byteArr = newtype NonAdaAsset = NonAdaAsset (Map CurrencySymbol (Map TokenName BigInt)) derive newtype instance Eq NonAdaAsset +derive instance Newtype NonAdaAsset _ instance Arbitrary NonAdaAsset where arbitrary = @@ -302,7 +302,7 @@ instance MeetSemilattice NonAdaAsset where meet = unionWithNonAda min instance Negate NonAdaAsset where - negation = NonAdaAsset <<< map (map negate) <<< unwrapNonAdaAsset + negation = NonAdaAsset <<< map (map negate) <<< unwrap instance Split NonAdaAsset where split (NonAdaAsset mp) = NonAdaAsset npos /\ NonAdaAsset pos @@ -363,9 +363,6 @@ equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = foldl (\quantity tn -> quantity `max` tokenQuantity tn) zero (flattenNonAdaValue nonAdaAssets) -unwrapNonAdaAsset :: NonAdaAsset -> Map CurrencySymbol (Map TokenName BigInt) -unwrapNonAdaAsset (NonAdaAsset mp) = mp - -- We shouldn't need this check if we don't export unsafeAdaSymbol etc. -- | Create a singleton `NonAdaAsset` which by definition should be safe since -- | `CurrencySymbol` and `TokenName` are safe diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 08771abab..26d9408d3 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -761,9 +761,8 @@ convertNetworkId = case _ of convertMint :: T.Mint -> Effect Mint convertMint (T.Mint nonAdaAssets) = do - let m = Value.unwrapNonAdaAsset nonAdaAssets mint <- newMint - forWithIndex_ m \scriptHashBytes' values -> do + forWithIndex_ (unwrap nonAdaAssets) \scriptHashBytes' values -> do let mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol scriptHashBytes' From bc4cb2e03336d864a361f93ef269cb6d0e7f3715 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 13 Mar 2023 20:47:15 +0400 Subject: [PATCH 095/478] Add unindexed redeemers to _redeemers in processConstraint --- src/Internal/QueryM.purs | 1 - src/Internal/Types/ScriptLookups.purs | 41 +++++++++++++++++++++++---- test/Ogmios/Aeson.purs | 1 + 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 768c6af31..72a3e25b4 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -469,7 +469,6 @@ mkServiceWebSocket lens url continue = do lens.logger Debug $ lens.serviceName <> " WebSocket error (" <> err <> "). Reconnecting..." - -- continue $ Right (ws /\ dispatcher /\ pending) continue $ Right (lens.typedWebSocket ws) pure $ Canceler $ \err -> liftEffect do _wsFinalize ws diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index bbcda0345..f1a38a544 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -61,6 +61,10 @@ import Control.Monad.Reader.Class (asks) import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.Address (addressPaymentValidatorHash) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForMint, ForCert, ForSpend, ForReward) + , UnindexedRedeemer(UnindexedRedeemer) + ) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) import Ctl.Internal.Cardano.Types.Transaction ( Certificate @@ -481,7 +485,8 @@ type ConstraintProcessingState (a :: Type) = , valueSpentBalancesOutputs :: ValueSpentBalances -- Balance of the values produced and required for the transaction's outputs , datums :: Array Datum - -- Ordered accumulation of datums so we can use to `setScriptDataHash` + -- Ordered accumulation of datums we can use to `setScriptDataHash` + , redeemers :: Array UnindexedRedeemer , redeemersTxIns :: Array (T.Redeemer /\ Maybe TransactionInput) -- Ordered accumulation of redeemers so we can use to `setScriptDataHash` and -- add execution units via Ogmios @@ -525,6 +530,12 @@ _redeemersTxIns (Array (T.Redeemer /\ Maybe TransactionInput)) _redeemersTxIns = prop (SProxy :: SProxy "redeemersTxIns") +_redeemers + :: forall (a :: Type) + . Lens' (ConstraintProcessingState a) + (Array UnindexedRedeemer) +_redeemers = prop (SProxy :: SProxy "redeemers") + _mintRedeemers :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Map MintingPolicyHash T.Redeemer) @@ -608,7 +619,6 @@ processLookupsAndConstraints -- Attach mint redeemers to witness set. mintRedeemers :: Array _ <- use _mintRedeemers <#> Map.toUnfoldable lift $ traverse_ (attachToCps attachRedeemer <<< snd) mintRedeemers - ExceptT $ foldConstraints (addOwnInput (Proxy :: Proxy datum)) ownInputs ExceptT $ foldConstraints addOwnOutput ownOutputs ExceptT addScriptDataHash @@ -647,6 +657,7 @@ runConstraintsM lookups txConstraints = do , valueSpentBalancesOutputs: ValueSpentBalances { required: mempty, provided: mempty } , datums: mempty + , redeemers: [] , redeemersTxIns: mempty , mintRedeemers: empty , lookups @@ -688,6 +699,7 @@ newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx -- after balancing (when inputs are finalised). The potential input is -- `Just` for spending script utxos, i.e. `MustSpendScriptOutput` and -- `Nothing` otherwise. + , redeemers :: Array UnindexedRedeemer } derive instance Generic UnattachedUnbalancedTx _ @@ -713,7 +725,7 @@ mkUnbalancedTx -> Contract (Either MkUnbalancedTxError UnattachedUnbalancedTx) mkUnbalancedTx scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ unbalancedTx, datums, redeemersTxIns } -> + \{ unbalancedTx, datums, redeemersTxIns, redeemers } -> let stripScriptDataHash :: UnbalancedTx -> UnbalancedTx stripScriptDataHash uTx = @@ -725,7 +737,7 @@ mkUnbalancedTx scriptLookups txConstraints = _ { plutusData = Nothing, redeemers = Nothing } tx = stripDatumsRedeemers $ stripScriptDataHash unbalancedTx in - wrap { unbalancedTx: tx, datums, redeemersTxIns } + wrap { unbalancedTx: tx, datums, redeemersTxIns, redeemers } addScriptDataHash :: forall (a :: Type) @@ -1116,6 +1128,12 @@ processConstraint mpsMap osMap c = do OutputDatum _ -> pure unit NoOutputDatum -> throwError CannotFindDatum _cpsToTxBody <<< _inputs %= Set.insert txo + let + uiRedeemer = UnindexedRedeemer + { purpose: ForSpend txo + , datum: unwrap red + } + _redeemers <>= [ uiRedeemer ] let -- Create a redeemer with hardcoded execution units then call Ogmios -- to add the units in at the very end. @@ -1176,7 +1194,8 @@ processConstraint mpsMap osMap c = do v <- liftM (CannotMakeValue cs tn i) (value i) _valueSpentBalancesOutputs <>= provideValue v pure $ map getNonAdaAsset $ value i - + _redeemers <>= + [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] let -- Create a redeemer with zero execution units then call Ogmios to -- add the units in at the very end. @@ -1311,6 +1330,10 @@ processConstraint mpsMap osMap c = do plutusScript ) index <- lift $ addCertificate cert + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForCert cert, datum: unwrap redeemerData } + ] let redeemer = T.Redeemer { tag: Cert @@ -1345,6 +1368,10 @@ processConstraint mpsMap osMap c = do ) poolKeyHash ix <- lift $ addCertificate cert + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForCert cert, datum: unwrap redeemerData } + ] let redeemer = T.Redeemer { tag: Cert @@ -1386,6 +1413,10 @@ processConstraint mpsMap osMap c = do mbRewards _cpsToTxBody <<< _withdrawals <<< non Map.empty %= Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForReward rewardAddress, datum: unwrap redeemerData } + ] let redeemer = T.Redeemer { tag: Reward diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index acd685fbf..31ccb7789 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -139,6 +139,7 @@ printEvaluateTxFailures = launchAff_ do { datums: [] , redeemersTxIns: [] , unbalancedTx: wrap { transaction: mempty, utxoIndex: Map.empty } + , redeemers: [] } ) ) From adca9a0841a79d180d711e44c7a3b45364dafa95 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 14 Mar 2023 15:32:32 +0400 Subject: [PATCH 096/478] Add a repropducible test --- examples/ManyAssets.purs | 68 +++++++++++++++++++++++++++++++++++++++ test/Plutip/Contract.purs | 14 +++++++- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 examples/ManyAssets.purs diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs new file mode 100644 index 000000000..95ff52724 --- /dev/null +++ b/examples/ManyAssets.purs @@ -0,0 +1,68 @@ +-- | Mints many assets at once. A reproduction for https://github.com/Plutonomicon/cardano-transaction-lib/issues/1441 +module Ctl.Examples.ManyAssets + ( contract + , example + , main + , mkContractWithAssertions + ) where + +import Contract.Prelude + +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Log (logInfo') +import Contract.Monad + ( Contract + , launchAff_ + , liftContractM + , liftedM + , runContract + ) +import Contract.ScriptLookups as Lookups +import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) +import Contract.TxConstraints as Constraints +import Contract.Value (singleton) as Value +import Contract.Wallet (getWalletUtxos) +import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) +import Data.Array (head, range) as Array +import Data.Map (toUnfoldable) as Map + +main :: Effect Unit +main = example testnetNamiConfig + +example :: ContractParams -> Effect Unit +example cfg = launchAff_ do + runContract cfg contract + +contract :: Contract Unit +contract = + mkContractWithAssertions "Examples.ManyAssets" + +mkContractWithAssertions + :: String + -> Contract Unit +mkContractWithAssertions exampleName = do + logInfo' ("Running " <> exampleName) + utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos + oref <- + liftContractM "Utxo set is empty" + (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) + + mp /\ cs <- Helpers.mkCurrencySymbol (alwaysMintsPolicyV2) + tns <- for (Array.range 0 600) \i -> Helpers.mkTokenName $ "CTLNFT" <> show i + + let + constraints :: Constraints.TxConstraints Void Void + constraints = + fold + (tns <#> \tn -> Constraints.mustMintValue (Value.singleton cs tn one)) + <> Constraints.mustSpendPubKeyOutput oref + + lookups :: Lookups.ScriptLookups Void + lookups = Lookups.mintingPolicy mp + <> Lookups.unspentOutputs utxos + + txHash <- submitTxFromConstraints lookups constraints + logInfo' $ "Tx ID: " <> show txHash + awaitTxConfirmed txHash + logInfo' "Tx submitted successfully!" diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 88ff0bc82..e43b2e524 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -102,6 +102,7 @@ import Ctl.Examples.Helpers ) import Ctl.Examples.IncludeDatum as IncludeDatum import Ctl.Examples.Lose7Ada as AlwaysFails +import Ctl.Examples.ManyAssets as ManyAssets import Ctl.Examples.MintsMultipleTokens ( mintingPolicyRdmrInt1 , mintingPolicyRdmrInt2 @@ -156,7 +157,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) -import Mote (group, test) +import Mote (group, only, test) import Safe.Coerce (coerce) import Test.Ctl.Fixtures ( cip25MetadataFixture1 @@ -178,6 +179,17 @@ import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit suite = do + only $ group "TooManyAssetsInOutput regression - #1441" do + test "Mint many assets at once" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice ManyAssets.contract + group "Contract interface" do test "Collateral selection: UTxO with lower amount is selected" do let From a148f38d3a3d3d570f9d02aa4173b4313245908a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 15 Mar 2023 14:55:48 +0400 Subject: [PATCH 097/478] Skip failing test --- test/Plutip/Contract.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index e43b2e524..997dfb0d6 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -157,7 +157,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) -import Mote (group, only, test) +import Mote (group, skip, test) import Safe.Coerce (coerce) import Test.Ctl.Fixtures ( cip25MetadataFixture1 @@ -179,7 +179,7 @@ import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit suite = do - only $ group "TooManyAssetsInOutput regression - #1441" do + skip $ group "TooManyAssetsInOutput regression - #1441" do test "Mint many assets at once" do let distribution :: InitialUTxOs From 7ab4b72ec8569842e40e6215c2ec1acbd56e56f7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 16 Mar 2023 16:34:37 +0400 Subject: [PATCH 098/478] WIP: use `redeemers` --- src/Contract/Transaction.purs | 25 +- src/Internal/BalanceTx/BalanceTx.purs | 234 ++++++++++++------- src/Internal/BalanceTx/Error.purs | 15 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 153 +++++++----- src/Internal/BalanceTx/Helpers.purs | 7 - src/Internal/BalanceTx/RedeemerIndex.purs | 43 +++- src/Internal/Types/ScriptLookups.purs | 174 +++++++------- test/Ogmios/Aeson.purs | 1 - 8 files changed, 411 insertions(+), 241 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 092a6b5a4..984db4e62 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -54,7 +54,7 @@ import Contract.TxConstraints (TxConstraints) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) -import Ctl.Internal.BalanceTx (FinalizedTransaction) +import Ctl.Internal.BalanceTx (FinalizedTransaction, UtxoIx) import Ctl.Internal.BalanceTx (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction import Ctl.Internal.BalanceTx (balanceTxWithConstraints) as BalanceTx import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) @@ -244,7 +244,10 @@ import Ctl.Internal.Types.ScriptLookups ) , ScriptLookups ) as ScriptLookups -import Ctl.Internal.Types.ScriptLookups (UnattachedUnbalancedTx) +import Ctl.Internal.Types.ScriptLookups + ( UnattachedUnbalancedTx(..) + , UnindexedTx + ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , plutusV1Script @@ -259,6 +262,7 @@ import Ctl.Internal.Types.Transaction ( TransactionHash , TransactionInput(TransactionInput) ) +import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(..)) import Ctl.Internal.Types.UnbalancedTransaction ( UnbalancedTx(UnbalancedTx) , _transaction @@ -432,14 +436,27 @@ withBalancedTx -> Contract a withBalancedTx = withSingleTransaction balanceAndLock unwrap +unUnattachedUnbalancedTx :: UnattachedUnbalancedTx -> UnindexedTx /\ UtxoIx +unUnattachedUnbalancedTx + ( UnattachedUnbalancedTx + { unbalancedTx: UnbalancedTx { transaction, utxoIndex } + , datums + , redeemers + } + ) = + { transaction, datums, redeemers } /\ utxoIndex + -- | Attempts to balance an `UnattachedUnbalancedTx` using the specified -- | balancer constraints. balanceTxWithConstraints :: UnattachedUnbalancedTx -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) -balanceTxWithConstraints = - BalanceTx.balanceTxWithConstraints +balanceTxWithConstraints tx = + let + tx' /\ ix = unUnattachedUnbalancedTx tx + in + BalanceTx.balanceTxWithConstraints tx' ix -- | Same as `balanceTxWithConstraints`, but uses the default balancer -- | constraints. diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 3de2a3c16..db65c3068 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -2,6 +2,7 @@ module Ctl.Internal.BalanceTx ( module BalanceTxErrorExport , module FinalizedTransaction , balanceTxWithConstraints + , UtxoIx ) where import Prelude @@ -46,26 +47,15 @@ import Ctl.Internal.BalanceTx.Error , printTxEvaluationFailure ) as BalanceTxErrorExport import Ctl.Internal.BalanceTx.Error - ( BalanceTxError - ( UtxoLookupFailedFor - , UtxoMinAdaValueCalculationFailed - , BalanceInsufficientError - , CouldNotGetCollateral - , CouldNotGetChangeAddress - , CouldNotGetUtxos - ) + ( BalanceTxError(..) , InvalidInContext(InvalidInContext) ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction ) -import Ctl.Internal.BalanceTx.Helpers - ( _body' - , _redeemersTxIns - , _transaction' - , _unbalancedTx - ) +import Ctl.Internal.BalanceTx.Helpers (_transaction', _unbalancedTx) +import Ctl.Internal.BalanceTx.RedeemerIndex (redeemerToIndexedRedeemer) import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM @@ -121,17 +111,25 @@ import Ctl.Internal.Contract.Wallet , getWalletCollateral , getWalletUtxos ) as Wallet +import Ctl.Internal.Deserialization.Transaction (_txBody) import Ctl.Internal.Helpers ((??)) import Ctl.Internal.Partition (equipartition, partition) import Ctl.Internal.Plutus.Conversion (toPlutusValue) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) -import Ctl.Internal.Types.ScriptLookups (UnattachedUnbalancedTx) +import Ctl.Internal.Types.ScriptLookups + ( EvaluatedTx + , IndexedTx + , PrebalancedTx(PrebalancedTx) + , UnindexedTx + , indexTx + ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1) , PlutusScript(PlutusScript) ) -import Ctl.Internal.Types.UnbalancedTransaction (_utxoIndex) +import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) +import Ctl.Internal.Types.UnbalancedTransaction (_transaction, _utxoIndex) import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -151,9 +149,12 @@ import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) import Data.Lens.Getter ((^.)) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet) import Data.Log.Tag (fromArray, tag) as TagSet +import Data.Map (Map) import Data.Map (empty, insert, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, maybe) import Data.Newtype (class Newtype, unwrap, wrap) @@ -163,20 +164,24 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) +import Type.Proxy (Proxy(Proxy)) + +type UtxoIx = Map TransactionInput TransactionOutput -- | Balances an unbalanced transaction using the specified balancer -- | constraints. balanceTxWithConstraints - :: UnattachedUnbalancedTx + :: UnindexedTx + -> UtxoIx -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError FinalizedTransaction) -balanceTxWithConstraints unbalancedTx constraintsBuilder = do +balanceTxWithConstraints transaction index constraintsBuilder = do pparams <- getProtocolParameters withBalanceTxConstraints constraintsBuilder $ runExceptT do let depositValuePerCert = (unwrap pparams).stakeAddressDeposit - certsFee = getStakingBalance (unbalancedTx ^. _transaction') + certsFee = getStakingBalance (transaction.transaction) depositValuePerCert changeAddr <- getChangeAddress @@ -209,18 +214,19 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do >>> map (foldr Map.union Map.empty) -- merge all utxos into one map unbalancedCollTx <- - case Array.null (unbalancedTx ^. _redeemersTxIns) of + -- TODO: check plutus scripts presence? + case Array.null (transaction # _.redeemers) of true -> -- Don't set collateral if tx doesn't contain phase-2 scripts: - unbalancedTxWithNetworkId + transactionWithNetworkId false -> - setTransactionCollateral changeAddr =<< unbalancedTxWithNetworkId + setTransactionCollateral changeAddr =<< transactionWithNetworkId let allUtxos :: UtxoMap allUtxos = -- Combine utxos at the user address and those from any scripts -- involved with the contract in the unbalanced transaction: - utxos `Map.union` (unbalancedTx ^. _unbalancedTx <<< _utxoIndex) + utxos `Map.union` index availableUtxos <- liftContract $ filterLockedUtxos allUtxos logTrace' $ "balanceTxWithConstraints: all UTxOs: " <> show allUtxos @@ -232,7 +238,7 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do -- Balance and finalize the transaction: runBalancer { strategy: selectionStrategy - , unbalancedTx: unbalancedTx # _transaction' .~ unbalancedCollTx + , transaction: transaction { transaction = unbalancedCollTx } , changeAddress: changeAddr , allUtxos , utxos: availableUtxos @@ -245,11 +251,13 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do =<< maybe (liftContract Wallet.getChangeAddress) (pure <<< Just) =<< asksConstraints Constraints._changeAddress - unbalancedTxWithNetworkId :: BalanceTxM Transaction - unbalancedTxWithNetworkId = do - let transaction = unbalancedTx ^. _transaction' - networkId <- maybe askNetworkId pure (transaction ^. _body <<< _networkId) - pure (transaction # _body <<< _networkId ?~ networkId) + transactionWithNetworkId :: BalanceTxM Transaction + transactionWithNetworkId = do + networkId <- maybe askNetworkId pure + ( transaction ^. prop (Proxy :: Proxy "transaction") <<< _body <<< + _networkId + ) + pure (transaction.transaction # _body <<< _networkId ?~ networkId) setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction setTransactionCollateral changeAddr transaction = do @@ -265,38 +273,39 @@ balanceTxWithConstraints unbalancedTx constraintsBuilder = do type BalancerParams = { strategy :: SelectionStrategy - , unbalancedTx :: UnattachedUnbalancedTx + , transaction :: UnindexedTx , changeAddress :: Address , allUtxos :: UtxoMap , utxos :: UtxoMap , certsFee :: Coin } -type BalancerState = - { transaction :: UnattachedUnbalancedTx +type BalancerState tx = + { transaction :: tx , leftoverUtxos :: UtxoIndex , changeOutputs :: Array TransactionOutput , minFee :: BigInt } initBalancerState - :: UnattachedUnbalancedTx + :: IndexedTx -> UtxoMap - -> BalancerState + -> BalancerState IndexedTx initBalancerState transaction = buildUtxoIndex >>> { transaction, leftoverUtxos: _, changeOutputs: mempty, minFee: zero } data BalancerStep - = PrebalanceTx BalancerState - | BalanceChangeAndMinFee BalancerState + = PrebalanceTx (BalancerState IndexedTx) + | BalanceChangeAndMinFee (BalancerState IndexedTx) runBalancer :: BalancerParams -> BalanceTxM FinalizedTransaction runBalancer p = do utxos <- partitionAndFilterUtxos - unbalancedTx <- addLovelacesToTransactionOutputs p.unbalancedTx + transaction <- addLovelacesToTransactionOutputs p.transaction + indexedTx <- liftMaybe TODO $ indexTx transaction addInvalidInContext (foldMap (_.amount <<< unwrap) utxos.invalidInContext) do - mainLoop (initBalancerState unbalancedTx utxos.spendable) + mainLoop (initBalancerState indexedTx utxos.spendable) where addInvalidInContext :: forall (a :: Type). Value -> BalanceTxM a -> BalanceTxM a @@ -311,7 +320,10 @@ runBalancer p = do -- out utxos which use plutusv2 features if so. txHasPlutusV1 :: Boolean txHasPlutusV1 = - case p.unbalancedTx ^. _transaction' ^. _witnessSet ^. _plutusScripts of + case + p.transaction ^. prop (Proxy :: Proxy "transaction") <<< _witnessSet <<< + _plutusScripts + of Just scripts -> flip Array.any scripts case _ of PlutusScript (_ /\ PlutusV1) -> true _ -> false @@ -345,7 +357,10 @@ runBalancer p = do spendable :: Boolean spendable = not $ Set.member oref nonSpendableInputs || Set.member oref - (p.unbalancedTx ^. _body' <<< _referenceInputs) + ( p.transaction ^. prop (Proxy :: Proxy "transaction") + <<< _body + <<< _referenceInputs + ) validInContext :: Boolean validInContext = not $ txHasPlutusV1 && @@ -365,36 +380,52 @@ runBalancer p = do } (Map.toUnfoldable p.utxos :: Array _) - mainLoop :: BalancerState -> BalanceTxM FinalizedTransaction + mainLoop :: BalancerState IndexedTx -> BalanceTxM FinalizedTransaction mainLoop = worker <<< PrebalanceTx where worker :: BalancerStep -> BalanceTxM FinalizedTransaction worker (PrebalanceTx state) = do logBalancerState "Pre-balancing (Stage 1)" p.allUtxos state prebalanceTx state >>= runNextBalancerStep - worker (BalanceChangeAndMinFee s@{ transaction, minFee, leftoverUtxos }) = + worker (BalanceChangeAndMinFee state@{ transaction, minFee, leftoverUtxos }) = do - logBalancerState "Balancing change and fees (Stage 2)" p.allUtxos s - { transaction: balancedTx, minFee: newMinFee } <- evaluateTx s + logBalancerState "Balancing change and fees (Stage 2)" p.allUtxos state + { transaction, minFee: newMinFee } <- evaluateTx state case newMinFee <= minFee of true -> - if (Set.isEmpty $ balancedTx ^. _body' <<< _inputs) then do - selectionState <- - performMultiAssetSelection p.strategy leftoverUtxos - (lovelaceValueOf one) - runNextBalancerStep $ s - { transaction = - balancedTx # _body' <<< _inputs %~ - Set.union (selectedInputs selectionState) - , leftoverUtxos = - selectionState ^. _leftoverUtxos - } + if (Set.isEmpty $ transaction.transaction ^. _body <<< _inputs) then + do + selectionState <- + performMultiAssetSelection p.strategy leftoverUtxos + (lovelaceValueOf one) + runNextBalancerStep $ state + { transaction = + transaction + # + ( prop (Proxy :: Proxy "transaction") <<< _body <<< + _inputs %~ + Set.union (selectedInputs selectionState) + ) + # + ( prop (Proxy :: Proxy "redeemers") %~ map + redeemerToIndexedRedeemer + ) + , leftoverUtxos = + selectionState ^. _leftoverUtxos + } else - logTransaction "Balanced transaction (Done)" p.allUtxos balancedTx - *> finalizeTransaction balancedTx p.allUtxos + logTransaction "Balanced transaction (Done)" p.allUtxos + transaction.transaction + *> finalizeTransaction transaction p.allUtxos false -> - runNextBalancerStep $ s - { transaction = transaction # _body' <<< _fee .~ Coin newMinFee + runNextBalancerStep $ state + { transaction = transaction + # prop (Proxy :: Proxy "transaction") <<< _body <<< _fee .~ + Coin newMinFee + # + ( prop (Proxy :: Proxy "redeemers") %~ map + redeemerToIndexedRedeemer + ) , minFee = newMinFee } @@ -403,28 +434,43 @@ runBalancer p = do -- | If the transaction remains unbalanced (i.e. `requiredValue != mempty`) -- | after generation of change, the first balancing step `PrebalanceTx` -- | is performed, otherwise we proceed to `BalanceChangeAndMinFee`. - runNextBalancerStep :: BalancerState -> BalanceTxM FinalizedTransaction + runNextBalancerStep + :: BalancerState IndexedTx -> BalanceTxM FinalizedTransaction runNextBalancerStep state@{ transaction } = do - let txBody = transaction ^. _body' + let txBody = transaction # _.transaction >>> unwrap >>> _.body inputValue <- except $ getInputValue p.allUtxos txBody changeOutputs <- makeChange p.changeAddress inputValue p.certsFee txBody requiredValue <- except $ getRequiredValue p.certsFee p.allUtxos - (setTxChangeOutputs changeOutputs transaction ^. _body') + ( setTxChangeOutputs changeOutputs transaction # unwrap + >>> _.transaction + >>> unwrap + >>> _.body + ) - worker $ state { changeOutputs = changeOutputs } # - if requiredValue == mempty then BalanceChangeAndMinFee else PrebalanceTx + worker $ + -- state { changeOutputs = changeOutputs } # + -- if requiredValue == mempty then BalanceChangeAndMinFee else PrebalanceTx + if requiredValue == mempty then + BalanceChangeAndMinFee $ state { changeOutputs = changeOutputs } + else + PrebalanceTx $ state { changeOutputs = changeOutputs } -- | Selects a combination of unspent transaction outputs from the wallet's -- | utxo set so that the total input value is sufficient to cover all -- | transaction outputs, including generated change and min fee. - prebalanceTx :: BalancerState -> BalanceTxM BalancerState + prebalanceTx + :: BalancerState IndexedTx -> BalanceTxM (BalancerState IndexedTx) prebalanceTx state@{ transaction, changeOutputs, leftoverUtxos } = performCoinSelection <#> \selectionState -> state { transaction = - transaction # _body' <<< _inputs %~ - Set.union (selectedInputs selectionState) + ( transaction # + prop (Proxy :: Proxy "transaction") <<< _Newtype + <<< prop (Proxy :: Proxy "body") + <<< _inputs %~ + Set.union (selectedInputs selectionState) + ) , leftoverUtxos = selectionState ^. _leftoverUtxos } @@ -433,7 +479,10 @@ runBalancer p = do performCoinSelection = let txBody :: TxBody - txBody = setTxChangeOutputs changeOutputs transaction ^. _body' + txBody = setTxChangeOutputs changeOutputs transaction # unwrap + >>> _.transaction + >>> unwrap + >>> _.body in except (getRequiredValue p.certsFee p.allUtxos txBody) >>= performMultiAssetSelection p.strategy leftoverUtxos @@ -444,23 +493,29 @@ runBalancer p = do -- | The transaction must be pre-balanced before evaluating execution units, -- | since this pre-condition is sometimes required for successfull script -- | execution during transaction evaluation. - evaluateTx :: BalancerState -> BalanceTxM BalancerState + evaluateTx + :: BalancerState IndexedTx -> BalanceTxM (BalancerState EvaluatedTx) evaluateTx state@{ transaction, changeOutputs } = do let - prebalancedTx :: PrebalancedTransaction - prebalancedTx = wrap $ setTxChangeOutputs changeOutputs transaction + prebalancedTx :: PrebalancedTx + prebalancedTx = setTxChangeOutputs changeOutputs transaction - transaction' /\ minFee <- evalExUnitsAndMinFee prebalancedTx p.allUtxos - pure $ state { transaction = transaction', minFee = minFee } + evaluatedTx /\ minFee <- evalExUnitsAndMinFee prebalancedTx p.allUtxos + pure $ state { transaction = evaluatedTx, minFee = minFee } -- | For each transaction output, if necessary, adds some number of lovelaces -- | to cover the utxo min-ada-value requirement. addLovelacesToTransactionOutputs - :: UnattachedUnbalancedTx -> BalanceTxM UnattachedUnbalancedTx -addLovelacesToTransactionOutputs unbalancedTx = - map (\txOutputs -> unbalancedTx # _body' <<< _outputs .~ txOutputs) $ + :: UnindexedTx -> BalanceTxM UnindexedTx +addLovelacesToTransactionOutputs transaction = + map + ( \txOutputs -> transaction # + prop (Proxy :: Proxy "transaction") <<< _body <<< _outputs .~ txOutputs + ) $ traverse addLovelacesToTransactionOutput - (unbalancedTx ^. _body' <<< _outputs) + ( transaction ^. prop (Proxy :: Proxy "transaction") <<< _body <<< + _outputs + ) addLovelacesToTransactionOutput :: TransactionOutput -> BalanceTxM TransactionOutput @@ -482,8 +537,12 @@ addLovelacesToTransactionOutput txOutput = do { amount = mkValue newCoin (getNonAdaAsset txOutputValue) } setTxChangeOutputs - :: Array TransactionOutput -> UnattachedUnbalancedTx -> UnattachedUnbalancedTx -setTxChangeOutputs outputs = _body' <<< _outputs %~ flip append outputs + :: Array TransactionOutput -> IndexedTx -> PrebalancedTx +setTxChangeOutputs outputs tx = + PrebalancedTx tx # + _Newtype <<< prop (Proxy :: Proxy "transaction") <<< _Newtype + <<< prop (Proxy :: Proxy "body") + <<< _outputs %~ flip append outputs -------------------------------------------------------------------------------- -- Making change @@ -765,12 +824,17 @@ getStakingBalance tx depositLovelacesPerCert = -- Helpers -------------------------------------------------------------------------------- -logBalancerState :: String -> UtxoMap -> BalancerState -> BalanceTxM Unit -logBalancerState message utxos { transaction, changeOutputs } = +logBalancerState + :: forall rest + . String + -> UtxoMap + -> BalancerState { transaction :: Transaction | rest } + -> BalanceTxM Unit +logBalancerState message utxos { transaction: { transaction }, changeOutputs } = logTransactionWithChange message utxos (Just changeOutputs) transaction logTransaction - :: String -> UtxoMap -> UnattachedUnbalancedTx -> BalanceTxM Unit + :: String -> UtxoMap -> Transaction -> BalanceTxM Unit logTransaction message utxos = logTransactionWithChange message utxos Nothing @@ -778,12 +842,12 @@ logTransactionWithChange :: String -> UtxoMap -> Maybe (Array TransactionOutput) - -> UnattachedUnbalancedTx + -> Transaction -> BalanceTxM Unit -logTransactionWithChange message utxos mChangeOutputs unbalancedTx = +logTransactionWithChange message utxos mChangeOutputs tx = let txBody :: TxBody - txBody = unbalancedTx ^. _body' + txBody = tx ^. _body tag :: forall (a :: Type). Show a => String -> a -> TagSet tag title = TagSet.tag title <<< show diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index c1cad37ec..d5b7d4900 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -12,6 +12,7 @@ module Ctl.Internal.BalanceTx.Error , CouldNotGetUtxos , CollateralReturnError , CollateralReturnMinAdaValueCalcError + , TODO , ExUnitsEvaluationFailed , InsufficientUtxoBalanceToCoverAsset , ReindexRedeemersError @@ -25,6 +26,10 @@ module Ctl.Internal.BalanceTx.Error import Prelude +import Ctl.Internal.BalanceTx.RedeemerIndex + ( UnindexedRedeemer(..) + , redeemerPurposeToRedeemerTag + ) import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer)) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios @@ -76,6 +81,7 @@ data BalanceTxError | CollateralReturnError String | CollateralReturnMinAdaValueCalcError | ExUnitsEvaluationFailed UnattachedUnbalancedTx Ogmios.TxEvaluationFailure + | TODO | InsufficientUtxoBalanceToCoverAsset ImpossibleError String | ReindexRedeemersError ReindexErrors | UtxoLookupFailedFor TransactionInput @@ -169,7 +175,7 @@ number ary = freeze (foldl go [] ary) -- | to visually verify the printing of errors without a context on fixtures. printTxEvaluationFailure :: UnattachedUnbalancedTx -> Ogmios.TxEvaluationFailure -> String -printTxEvaluationFailure (UnattachedUnbalancedTx { redeemersTxIns }) e = +printTxEvaluationFailure (UnattachedUnbalancedTx { redeemers }) e = runPrettyString $ case e of Ogmios.UnparsedError error -> line $ "Unknown error: " <> error Ogmios.ScriptFailures sf -> line "Script failures:" <> bullet @@ -177,9 +183,10 @@ printTxEvaluationFailure (UnattachedUnbalancedTx { redeemersTxIns }) e = where lookupRedeemerPointer :: Ogmios.RedeemerPointer -> Maybe (Redeemer /\ Maybe TransactionInput) - lookupRedeemerPointer ptr = flip find redeemersTxIns - $ \(Redeemer rdmr /\ _) -> rdmr.tag == ptr.redeemerTag && rdmr.index == - Natural.toBigInt ptr.redeemerIndex + lookupRedeemerPointer ptr = -- flip find redeemers + -- $ \(UnindexedRedeemer { redeemers, purpose }) -> (redeemerPurposeToRedeemerTag purpose).tag == ptr.redeemerTag && rdmr.index == + -- Natural.toBigInt ptr.redeemerIndex + Nothing -- TODO printRedeemerPointer :: Ogmios.RedeemerPointer -> PrettyString printRedeemerPointer ptr = diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 1be11135b..f17a4a0b6 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -5,17 +5,18 @@ module Ctl.Internal.BalanceTx.ExUnitsAndMinFee import Prelude -import Control.Monad.Error.Class (liftEither, throwError) +import Control.Monad.Error.Class (liftEither, liftMaybe, throwError) import Control.Monad.Except.Trans (except) import Ctl.Internal.BalanceTx.Constraints (_additionalUtxos) as Constraints -import Ctl.Internal.BalanceTx.Error - ( BalanceTxError - ( ExUnitsEvaluationFailed - , ReindexRedeemersError - , UtxoLookupFailedFor - ) +import Ctl.Internal.BalanceTx.Error (BalanceTxError(..)) +import Ctl.Internal.BalanceTx.Helpers (_body') +import Ctl.Internal.BalanceTx.RedeemerIndex + ( IndexedRedeemer(..) + , attachRedeemers + , indexRedeemers + , indexedRedeemerToRedeemer + , mkRedeemersContext ) -import Ctl.Internal.BalanceTx.Helpers (_body', _redeemersTxIns) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction(FinalizedTransaction) @@ -52,6 +53,7 @@ import Ctl.Internal.ReindexRedeemers ( ReindexErrors , reindexSpentScriptRedeemers' ) +import Ctl.Internal.Serialization.Types (Redeemers) import Ctl.Internal.Transaction (setScriptDataHash) import Ctl.Internal.TxOutput ( transactionInputToTxOutRef @@ -60,21 +62,28 @@ import Ctl.Internal.TxOutput import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Natural import Ctl.Internal.Types.ScriptLookups - ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) + ( EvaluatedTx + , IndexedTx + , PrebalancedTx(..) + , UnattachedUnbalancedIndexedEvaluatedTx(..) + , UnattachedUnbalancedIndexedTx(UnattachedUnbalancedIndexedTx) + , UnattachedUnbalancedTx(UnattachedUnbalancedTx) + , UnindexedTx ) import Ctl.Internal.Types.Scripts (Language, PlutusScript) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.UnbalancedTransaction (_transaction) +import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(..), _transaction) import Data.Array (catMaybes) import Data.Array (fromFoldable) as Array import Data.Bifunctor (bimap, lmap) import Data.BigInt (BigInt) +import Data.BigInt as BigInt import Data.Either (Either(Left, Right), note) -import Data.Foldable (foldMap) +import Data.Foldable (fold, foldMap) import Data.Lens.Getter ((^.)) import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Map (empty, fromFoldable, lookup, toUnfoldable) as Map -import Data.Maybe (Maybe, fromMaybe, maybe) +import Data.Maybe (Maybe(..), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set as Set @@ -83,12 +92,12 @@ import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) +import Undefined (undefined) evalTxExecutionUnits :: Transaction - -> UnattachedUnbalancedTx -> BalanceTxM Ogmios.TxEvaluationResult -evalTxExecutionUnits tx unattachedTx = do +evalTxExecutionUnits tx = do queryHandle <- liftContract getQueryHandle additionalUtxos <- getOgmiosAdditionalUtxoSet evalResult <- @@ -98,7 +107,7 @@ evalTxExecutionUnits tx unattachedTx = do case evalResult of Right a -> pure a Left evalFailure | tx ^. _isValid -> - throwError $ ExUnitsEvaluationFailed unattachedTx evalFailure + throwError $ TODO Left _ -> pure $ wrap Map.empty where getOgmiosAdditionalUtxoSet :: BalanceTxM Ogmios.AdditionalUtxoSet @@ -117,21 +126,17 @@ evalTxExecutionUnits tx unattachedTx = do -- Returns a tuple consisting of updated `UnattachedUnbalancedTx` and -- the minimum fee. evalExUnitsAndMinFee - :: PrebalancedTransaction + :: PrebalancedTx -> UtxoMap - -> BalanceTxM (UnattachedUnbalancedTx /\ BigInt) -evalExUnitsAndMinFee (PrebalancedTransaction unattachedTx) allUtxos = do - -- Reindex `Spent` script redeemers: - reindexedUnattachedTx <- liftEither $ - reindexRedeemers unattachedTx # lmap ReindexRedeemersError + -> BalanceTxM (EvaluatedTx /\ BigInt) +evalExUnitsAndMinFee (PrebalancedTx unattachedTx) allUtxos = do -- Reattach datums and redeemers before evaluating ex units: - let attachedTx = reattachDatumsAndRedeemers reindexedUnattachedTx + let attachedTx = reattachDatumsAndFakeRedeemers unattachedTx -- Evaluate transaction ex units: - rdmrPtrExUnitsList <- evalTxExecutionUnits attachedTx reindexedUnattachedTx - let - -- Set execution units received from the server: - reindexedUnattachedTxWithExUnits = - updateTxExecutionUnits reindexedUnattachedTx rdmrPtrExUnitsList + exUnits <- evalTxExecutionUnits attachedTx + -- Set execution units received from the server: + reindexedUnattachedTxWithExUnits <- liftMaybe TODO $ + updateTxExecutionUnits' unattachedTx exUnits -- Attach datums and redeemers, set the script integrity hash: FinalizedTransaction finalizedTx <- finalizeTransaction reindexedUnattachedTxWithExUnits allUtxos @@ -147,12 +152,12 @@ evalExUnitsAndMinFee (PrebalancedTransaction unattachedTx) allUtxos = do -- | Attaches datums and redeemers, sets the script integrity hash, -- | for use after reindexing. finalizeTransaction - :: UnattachedUnbalancedTx -> UtxoMap -> BalanceTxM FinalizedTransaction -finalizeTransaction reindexedUnattachedTxWithExUnits utxos = do + :: EvaluatedTx -> UtxoMap -> BalanceTxM FinalizedTransaction +finalizeTransaction tx utxos = do let attachedTxWithExUnits :: Transaction attachedTxWithExUnits = - reattachDatumsAndRedeemers reindexedUnattachedTxWithExUnits + reattachDatumsAndRedeemers tx txBody :: TxBody txBody = attachedTxWithExUnits ^. _body @@ -195,34 +200,78 @@ finalizeTransaction reindexedUnattachedTxWithExUnits utxos = do getPlutusScript (TransactionOutput { scriptRef }) = ScriptRef.getPlutusScript =<< scriptRef -reindexRedeemers - :: UnattachedUnbalancedTx - -> Either ReindexErrors UnattachedUnbalancedTx -reindexRedeemers - unattachedTx@(UnattachedUnbalancedTx { redeemersTxIns }) = - let - inputs = Array.fromFoldable $ unattachedTx ^. _body' <<< _inputs - in - reindexSpentScriptRedeemers' inputs redeemersTxIns <#> - \redeemersTxInsReindexed -> - unattachedTx # _redeemersTxIns .~ redeemersTxInsReindexed +-- reindexRedeemers' +-- :: UnindexedTx +-- -> Maybe IndexedTx +-- reindexRedeemers' { transaction, redeemers, datums } = do +-- indexedRedeemers <- indexRedeemers ctx redeemers +-- pure { datums, redeemers: indexedRedeemers, transaction } +-- where +-- ctx = mkRedeemersContext transaction + +-- reindexRedeemers +-- :: UnattachedUnbalancedTx +-- -> Either ReindexErrors UnattachedUnbalancedTx +-- reindexRedeemers +-- unattachedTx@(UnattachedUnbalancedTx { redeemers }) = +-- let +-- inputs = Array.fromFoldable $ unattachedTx ^. _body' <<< _inputs +-- in +-- reindexSpentScriptRedeemers' inputs redeemersTxIns <#> +-- \redeemersTxInsReindexed -> +-- unattachedTx # _redeemers .~ redeemersTxInsReindexed -reattachDatumsAndRedeemers :: UnattachedUnbalancedTx -> Transaction +reattachDatumsAndFakeRedeemers :: IndexedTx -> Transaction +reattachDatumsAndFakeRedeemers + { transaction, datums, redeemers } = + reattachDatumsAndRedeemers + { transaction, datums, redeemers: indexedRedeemerToRedeemer <$> redeemers } + +reattachDatumsAndRedeemers :: EvaluatedTx -> Transaction reattachDatumsAndRedeemers - (UnattachedUnbalancedTx { unbalancedTx, datums, redeemersTxIns }) = + ({ transaction, datums, redeemers }) = let - transaction = unbalancedTx ^. _transaction + transaction' = attachRedeemers redeemers transaction in - transaction # _witnessSet <<< _plutusData ?~ map unwrap datums - # _witnessSet <<< _redeemers ?~ map fst redeemersTxIns + transaction' + # _witnessSet <<< _plutusData ?~ map unwrap datums + +-- updateTxExecutionUnits +-- :: UnattachedUnbalancedTx +-- -> Ogmios.TxEvaluationResult +-- -> UnattachedUnbalancedTx +-- updateTxExecutionUnits unattachedTx rdmrPtrExUnitsList = +-- unattachedTx +-- # _redeemersTxIns %~ flip setRdmrsExecutionUnits rdmrPtrExUnitsList -updateTxExecutionUnits - :: UnattachedUnbalancedTx +updateTxExecutionUnits' + :: IndexedTx -> Ogmios.TxEvaluationResult - -> UnattachedUnbalancedTx -updateTxExecutionUnits unattachedTx rdmrPtrExUnitsList = - unattachedTx # - _redeemersTxIns %~ flip setRdmrsExecutionUnits rdmrPtrExUnitsList + -> Maybe EvaluatedTx +updateTxExecutionUnits' tx@{ redeemers } result = + getRedeemersExUnits result redeemers >>= \redeemers' -> pure $ tx + { redeemers = redeemers' } + +getRedeemersExUnits + :: Ogmios.TxEvaluationResult + -> Array IndexedRedeemer + -> Maybe (Array Redeemer) +getRedeemersExUnits (Ogmios.TxEvaluationResult result) redeemers = do + for redeemers \indexedRedeemer -> do + let + Redeemer redeemer = indexedRedeemerToRedeemer indexedRedeemer + index = BigInt.fromInt (unwrap indexedRedeemer).index + { memory, steps } <- Map.lookup + { redeemerTag: redeemer.tag + , redeemerIndex: Natural.fromBigInt' index + } + result + pure $ Redeemer redeemer + { exUnits = + { mem: Natural.toBigInt memory + , steps: Natural.toBigInt steps + } + } setRdmrsExecutionUnits :: Array (Redeemer /\ Maybe TransactionInput) diff --git a/src/Internal/BalanceTx/Helpers.purs b/src/Internal/BalanceTx/Helpers.purs index 1aa5f7439..f9704cb9e 100644 --- a/src/Internal/BalanceTx/Helpers.purs +++ b/src/Internal/BalanceTx/Helpers.purs @@ -1,6 +1,5 @@ module Ctl.Internal.BalanceTx.Helpers ( _body' - , _redeemersTxIns , _transaction' , _unbalancedTx ) where @@ -38,9 +37,3 @@ _body' :: Lens' UnattachedUnbalancedTx TxBody _body' = lens' \unattachedTx -> unattachedTx ^. _transaction' <<< _body /\ \txBody -> unattachedTx # _transaction' %~ (_body .~ txBody) - -_redeemersTxIns - :: Lens' UnattachedUnbalancedTx (Array (Redeemer /\ Maybe TransactionInput)) -_redeemersTxIns = lens' \(UnattachedUnbalancedTx rec@{ redeemersTxIns }) -> - redeemersTxIns /\ - \rdmrs -> UnattachedUnbalancedTx rec { redeemersTxIns = rdmrs } diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index d37ea4aef..3bf2329ba 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -8,6 +8,8 @@ import Ctl.Internal.Cardano.Types.Transaction , Redeemer(Redeemer) , Transaction(Transaction) , TxBody(TxBody) + , _redeemers + , _witnessSet ) import Ctl.Internal.Cardano.Types.Value (currencyMPSHash) import Ctl.Internal.Types.PlutusData (PlutusData) @@ -19,12 +21,26 @@ import Data.Array (findIndex) import Data.BigInt as BigInt import Data.Foldable (fold) import Data.Generic.Rep (class Generic) +import Data.Lens ((.~)) import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe) +import Data.Maybe (Maybe(..), fromJust, fromMaybe) import Data.Newtype (class Newtype, unwrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (traverse) +import Partial.Unsafe (unsafePartial) + +class AttachableRedeemer r where + attachRedeemers :: Array r -> Transaction -> Transaction + +instance AttachableRedeemer Redeemer where + attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers + +-- instance AttachableRedeemer UnindexedRedeemer where +-- attachRedeemers = attachRedeemers <<< map unindexedRedeemerToRedeemer + +instance AttachableRedeemer IndexedRedeemer where + attachRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer -- | Redeemer that hasn't yet been indexed, that tracks its purpose info -- | that is enough to find its index given a `RedeemersContext`. @@ -41,6 +57,21 @@ derive newtype instance EncodeAeson UnindexedRedeemer instance Show UnindexedRedeemer where show = genericShow +redeemerPurposeToRedeemerTag = case _ of + ForSpend _ -> Spend + ForMint _ -> Mint + ForReward _ -> Reward + ForCert _ -> Cert + +unindexedRedeemerToRedeemer :: UnindexedRedeemer -> Redeemer +unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = + Redeemer + { tag: redeemerPurposeToRedeemerTag purpose + , "data": datum + , index: zero + , exUnits: zero + } + -- | A redeemer with an index, but without `ExUnits` newtype IndexedRedeemer = IndexedRedeemer { tag :: RedeemerTag @@ -66,6 +97,16 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = , exUnits: { mem: zero, steps: zero } } +redeemerToIndexedRedeemer :: Redeemer -> IndexedRedeemer +redeemerToIndexedRedeemer + ( Redeemer + { tag + , index + , data: datum + } + ) = IndexedRedeemer + { tag, datum, index: unsafePartial $ fromJust $ BigInt.toInt index } + -- | Contains a value redeemer corresponds to, different for each possible -- | `RedeemerTag`. data RedeemerPurpose diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index f1a38a544..702b91dd7 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,5 +1,10 @@ module Ctl.Internal.Types.ScriptLookups - ( MkUnbalancedTxError + ( EvaluatedTx + , IndexedTx + , PrebalancedTx(PrebalancedTx) + , UnindexedTx + , UnattachedTx_ + , MkUnbalancedTxError ( CannotConvertPOSIXTimeRange , CannotSolveTimeConstraints , CannotConvertPaymentPubKeyHash @@ -33,6 +38,10 @@ module Ctl.Internal.Types.ScriptLookups ) , ScriptLookups(ScriptLookups) , UnattachedUnbalancedTx(UnattachedUnbalancedTx) + , UnattachedUnbalancedIndexedTx(UnattachedUnbalancedIndexedTx) + , UnattachedUnbalancedIndexedEvaluatedTx + ( UnattachedUnbalancedIndexedEvaluatedTx + ) , generalise , mintingPolicy , mintingPolicyM @@ -49,6 +58,7 @@ module Ctl.Internal.Types.ScriptLookups , typedValidatorLookupsM , unspentOutputs , unspentOutputsM + , indexTx ) where import Prelude hiding (join) @@ -62,8 +72,13 @@ import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.Address (addressPaymentValidatorHash) import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForMint, ForCert, ForSpend, ForReward) + ( IndexedRedeemer(..) + , RedeemerPurpose(ForMint, ForCert, ForSpend, ForReward) , UnindexedRedeemer(UnindexedRedeemer) + , attachRedeemers + , indexRedeemers + , mkRedeemersContext + , unindexedRedeemerToRedeemer ) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) import Ctl.Internal.Cardano.Types.Transaction @@ -75,6 +90,7 @@ import Ctl.Internal.Cardano.Types.Transaction , StakeDelegation ) , Costmdls + , Redeemer(..) , Transaction , TransactionOutput(TransactionOutput) , TransactionWitnessSet(TransactionWitnessSet) @@ -524,23 +540,12 @@ _costModels :: forall (a :: Type). Lens' (ConstraintProcessingState a) Costmdls _costModels = prop (SProxy :: SProxy "costModels") -_redeemersTxIns - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) - (Array (T.Redeemer /\ Maybe TransactionInput)) -_redeemersTxIns = prop (SProxy :: SProxy "redeemersTxIns") - _redeemers :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Array UnindexedRedeemer) _redeemers = prop (SProxy :: SProxy "redeemers") -_mintRedeemers - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) (Map MintingPolicyHash T.Redeemer) -_mintRedeemers = prop (SProxy :: SProxy "mintRedeemers") - _lookups :: forall (a :: Type). Lens' (ConstraintProcessingState a) (ScriptLookups a) _lookups = prop (SProxy :: SProxy "lookups") @@ -615,13 +620,9 @@ processLookupsAndConstraints ExceptT $ foldConstraints (processConstraint mpsMap osMap) timeConstraintsSolved - - -- Attach mint redeemers to witness set. - mintRedeemers :: Array _ <- use _mintRedeemers <#> Map.toUnfoldable - lift $ traverse_ (attachToCps attachRedeemer <<< snd) mintRedeemers ExceptT $ foldConstraints (addOwnInput (Proxy :: Proxy datum)) ownInputs ExceptT $ foldConstraints addOwnOutput ownOutputs - ExceptT addScriptDataHash + ExceptT addFakeScriptDataHash ExceptT addMissingValueSpent ExceptT updateUtxoIndex @@ -692,13 +693,6 @@ mkUnbalancedTx' scriptLookups txConstraints = newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx { unbalancedTx :: UnbalancedTx -- the unbalanced tx created , datums :: Array Datum -- the array of ordered datums that require attaching - , redeemersTxIns :: - Array (T.Redeemer /\ Maybe TransactionInput) -- the array of - -- ordered redeemers that require attaching alongside a potential transaction - -- input. The input is required to determine the index of `Spend` redeemers - -- after balancing (when inputs are finalised). The potential input is - -- `Just` for spending script utxos, i.e. `MustSpendScriptOutput` and - -- `Nothing` otherwise. , redeemers :: Array UnindexedRedeemer } @@ -710,6 +704,66 @@ derive newtype instance EncodeAeson UnattachedUnbalancedTx instance Show UnattachedUnbalancedTx where show = genericShow +type UnattachedTx_ row = + (Record (transaction :: Transaction, datums :: Array Datum | row)) + +type UnindexedTx = UnattachedTx_ (redeemers :: Array UnindexedRedeemer) +type IndexedTx = UnattachedTx_ (redeemers :: Array IndexedRedeemer) +type EvaluatedTx = UnattachedTx_ (redeemers :: Array Redeemer) + +newtype PrebalancedTx = PrebalancedTx IndexedTx + +derive instance Generic PrebalancedTx _ +derive instance Newtype PrebalancedTx _ +derive newtype instance Eq PrebalancedTx +derive newtype instance EncodeAeson PrebalancedTx + +indexTx :: UnindexedTx -> Maybe IndexedTx +indexTx { transaction, datums, redeemers } = do + redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers + pure + { transaction: attachRedeemers redeemers' transaction + , datums + , redeemers: redeemers' + } + +instance Show PrebalancedTx where + show = genericShow + +-- | A newtype for the unbalanced transaction after creating one with datums +-- | and redeemers not attached, but already indexed +newtype UnattachedUnbalancedIndexedTx = UnattachedUnbalancedIndexedTx + { unbalancedTx :: UnbalancedTx -- the unbalanced tx created + , datums :: Array Datum -- the array of ordered datums that require attaching + , redeemers :: Array IndexedRedeemer + } + +derive instance Generic UnattachedUnbalancedIndexedTx _ +derive instance Newtype UnattachedUnbalancedIndexedTx _ +derive newtype instance Eq UnattachedUnbalancedIndexedTx +derive newtype instance EncodeAeson UnattachedUnbalancedIndexedTx + +instance Show UnattachedUnbalancedIndexedTx where + show = genericShow + +-- | A newtype for the unbalanced transaction after creating one with datums +-- | and redeemers not attached, but already indexed +newtype UnattachedUnbalancedIndexedEvaluatedTx = + UnattachedUnbalancedIndexedEvaluatedTx + { unbalancedTx :: UnbalancedTx -- the unbalanced tx created + , datums :: + Array Datum -- the array of ordered datums that require attaching + , redeemers :: Array Redeemer + } + +derive instance Generic UnattachedUnbalancedIndexedEvaluatedTx _ +derive instance Newtype UnattachedUnbalancedIndexedEvaluatedTx _ +derive newtype instance Eq UnattachedUnbalancedIndexedEvaluatedTx +derive newtype instance EncodeAeson UnattachedUnbalancedIndexedEvaluatedTx + +instance Show UnattachedUnbalancedIndexedEvaluatedTx where + show = genericShow + -- | An implementation that strips `witnessSet` and data hash from -- | returned `UnbalancedTx` in order to calculate them later on server. -- | It returns part of the `ConstraintProcessingState` for later consumption by @@ -725,7 +779,7 @@ mkUnbalancedTx -> Contract (Either MkUnbalancedTxError UnattachedUnbalancedTx) mkUnbalancedTx scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ unbalancedTx, datums, redeemersTxIns, redeemers } -> + \{ unbalancedTx, datums, redeemers } -> let stripScriptDataHash :: UnbalancedTx -> UnbalancedTx stripScriptDataHash uTx = @@ -737,16 +791,19 @@ mkUnbalancedTx scriptLookups txConstraints = _ { plutusData = Nothing, redeemers = Nothing } tx = stripDatumsRedeemers $ stripScriptDataHash unbalancedTx in - wrap { unbalancedTx: tx, datums, redeemersTxIns, redeemers } + wrap { unbalancedTx: tx, datums, redeemers } -addScriptDataHash +-- | Adds a placeholder for ScriptDataHash. It will be wrong at this stage, +-- | because ExUnits hasn't been estimated yet. It will serve as a +-- | placeholder that will have the same size as the correct value. +addFakeScriptDataHash :: forall (a :: Type) . ConstraintsM a (Either MkUnbalancedTxError Unit) -addScriptDataHash = runExceptT do +addFakeScriptDataHash = runExceptT do dats <- use _datums costModels <- use _costModels -- Use both script and minting redeemers in the order they were appended. - reds <- use (_redeemersTxIns <<< to (map fst)) + reds <- use (_redeemers <<< to (map unindexedRedeemerToRedeemer)) tx <- use (_unbalancedTx <<< _transaction) tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> Right @@ -978,18 +1035,6 @@ lookupValidator lookupValidator vh osMap = note (ValidatorHashNotFound vh) $ lookup vh osMap -reindexMintRedeemers - :: forall (a :: Type) - . MintingPolicyHash - -> T.Redeemer - -> ConstraintsM a (Array T.Redeemer) -reindexMintRedeemers mpsHash redeemer = do - _mintRedeemers %= Map.insert mpsHash redeemer - mintRedeemers :: Array _ <- use _mintRedeemers <#> Map.toUnfoldable - pure $ - mintRedeemers # mapWithIndex \ix (_ /\ T.Redeemer red) -> - T.Redeemer red { index = fromInt ix } - processScriptRefUnspentOut :: forall (scriptHash :: Type) (a :: Type) . Newtype scriptHash ScriptHash @@ -1134,22 +1179,7 @@ processConstraint mpsMap osMap c = do , datum: unwrap red } _redeemers <>= [ uiRedeemer ] - let - -- Create a redeemer with hardcoded execution units then call Ogmios - -- to add the units in at the very end. - -- Hardcode script spend index then reindex at the end *after - -- balancing* with `reindexSpentScriptRedeemers` - redeemer = T.Redeemer - { tag: Spend - , index: zero -- hardcoded and tweaked after balancing. - , "data": unwrap red - , exUnits: zero - } _valueSpentBalancesInputs <>= provideValue amount - -- Append redeemer for spending to array. - _redeemersTxIns <>= Array.singleton (redeemer /\ Just txo) - -- Attach redeemer to witness set. - ExceptT $ attachToCps attachRedeemer redeemer MustSpendNativeScriptOutput txo ns -> runExceptT do _cpsToTxBody <<< _inputs %= Set.insert txo ExceptT $ attachToCps attachNativeScript ns @@ -1196,24 +1226,7 @@ processConstraint mpsMap osMap c = do pure $ map getNonAdaAsset $ value i _redeemers <>= [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] - let - -- Create a redeemer with zero execution units then call Ogmios to - -- add the units in at the very end. - -- Hardcode minting policy index, then reindex with - -- `reindexMintRedeemers`. - redeemer = T.Redeemer - { tag: Mint - , index: zero - , "data": unwrap red - , exUnits: zero - } -- Remove mint redeemers from array before reindexing. - _redeemersTxIns %= filter \(T.Redeemer { tag } /\ _) -> tag /= Mint - -- Reindex mint redeemers. - mintRedeemers <- lift $ reindexMintRedeemers mpsHash redeemer - -- Append reindexed mint redeemers to array. - _redeemersTxIns <>= map (_ /\ Nothing) mintRedeemers - _cpsToTxBody <<< _mint <>= map wrap mintVal MustMintValueUsingNativeScript ns tn i -> runExceptT do @@ -1342,8 +1355,6 @@ processConstraint mpsMap osMap c = do , exUnits: zero } ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) - ExceptT $ attachToCps attachRedeemer redeemer - _redeemersTxIns <>= Array.singleton (redeemer /\ Nothing) -- TODO: is needed? MustDeregisterStakeNativeScript stakeValidator -> do void $ addCertificate $ StakeDeregistration $ scriptHashCredential @@ -1372,16 +1383,7 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] - let - redeemer = T.Redeemer - { tag: Cert - , index: fromInt ix - , "data": unwrap redeemerData - , exUnits: zero - } ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) - ExceptT $ attachToCps attachRedeemer redeemer - _redeemersTxIns <>= Array.singleton (redeemer /\ Nothing) -- TODO: is needed? MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do void $ addCertificate $ StakeDelegation ( scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash @@ -1425,8 +1427,6 @@ processConstraint mpsMap osMap c = do , exUnits: zero } ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) - ExceptT $ attachToCps attachRedeemer redeemer - _redeemersTxIns <>= Array.singleton (redeemer /\ Nothing) MustWithdrawStakeNativeScript stakeValidator -> runExceptT do let hash = nativeScriptStakeValidatorHash stakeValidator networkId <- lift getNetworkId diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 31ccb7789..66c0a97fc 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -137,7 +137,6 @@ printEvaluateTxFailures = launchAff_ do ( log <<< printTxEvaluationFailure ( wrap { datums: [] - , redeemersTxIns: [] , unbalancedTx: wrap { transaction: mempty, utxoIndex: Map.empty } , redeemers: [] } From 7a6ce6c0a500e14a2642179b6dd698720bd9bc67 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 16 Mar 2023 16:55:16 +0400 Subject: [PATCH 099/478] Fix the tests --- src/Internal/BalanceTx/BalanceTx.purs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index db65c3068..fdc54a2d2 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -390,17 +390,17 @@ runBalancer p = do worker (BalanceChangeAndMinFee state@{ transaction, minFee, leftoverUtxos }) = do logBalancerState "Balancing change and fees (Stage 2)" p.allUtxos state - { transaction, minFee: newMinFee } <- evaluateTx state + { transaction: evaluatedTx, minFee: newMinFee } <- evaluateTx state case newMinFee <= minFee of true -> - if (Set.isEmpty $ transaction.transaction ^. _body <<< _inputs) then + if (Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs) then do selectionState <- performMultiAssetSelection p.strategy leftoverUtxos (lovelaceValueOf one) runNextBalancerStep $ state { transaction = - transaction + evaluatedTx # ( prop (Proxy :: Proxy "transaction") <<< _body <<< _inputs %~ @@ -416,16 +416,12 @@ runBalancer p = do else logTransaction "Balanced transaction (Done)" p.allUtxos transaction.transaction - *> finalizeTransaction transaction p.allUtxos + *> finalizeTransaction evaluatedTx p.allUtxos false -> runNextBalancerStep $ state { transaction = transaction # prop (Proxy :: Proxy "transaction") <<< _body <<< _fee .~ Coin newMinFee - # - ( prop (Proxy :: Proxy "redeemers") %~ map - redeemerToIndexedRedeemer - ) , minFee = newMinFee } From 7d84c220bb62e3385dff93cae3a6a5c9ef6288a8 Mon Sep 17 00:00:00 2001 From: Alexey Date: Mon, 20 Mar 2023 03:05:47 +0300 Subject: [PATCH 100/478] Include more info into waitUntilSlot error --- src/Internal/Contract/WaitUntilSlot.purs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index 959ce9601..3ec3acb4c 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -8,6 +8,7 @@ module Ctl.Internal.Contract.WaitUntilSlot import Prelude import Contract.Log (logTrace') +import Contract.Monad (liftContractE) import Control.Monad.Error.Class (liftEither) import Control.Monad.Reader (asks) import Ctl.Internal.Contract (getChainTip) @@ -59,7 +60,8 @@ waitUntilSlot futureSlot = do futureTime <- liftEffect (slotToPosixTime eraSummaries systemStart futureSlot) - >>= hush >>> liftM (error "Unable to convert Slot to POSIXTime") + >>= lmap (show >>> append "Unable to convert Slot to POSIXTime: ") + >>> liftContractE delayTime <- estimateDelayUntil futureTime liftAff $ delay delayTime let From 402ab2f4107039cfe8f1306ea4900ab77485e599 Mon Sep 17 00:00:00 2001 From: Alexey Date: Mon, 20 Mar 2023 03:11:57 +0300 Subject: [PATCH 101/478] Add CHANGELOG entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad43783ba..189ca6182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- `Unable to convert Slot to POSIXTime` error of `waitUntilSlot` doesn't omit important error details anymore ([#1458](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1458)) - Performance issues when using Eternl in multi-address mode ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) - Fix a bug in UTxO selection in `Cip30Mock` (that affected `Cip30Mock` users) ([1437](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1437)) From b565f4b1ec877c671ec4ffc13b1b89dbe498bceb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 21 Mar 2023 19:37:43 +0300 Subject: [PATCH 102/478] Update link to contract env docs --- doc/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/faq.md b/doc/faq.md index c917c8e5a..211ec63e8 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -145,7 +145,7 @@ If you are under wayland you need to add `--ozone-platform=wayland` to the argum Use only one `ContractEnv` value. They are implicitly created every time `runContract` is called, so avoid using this function if you need to run multiple `Contract`s. -See [here](./ctl-as-dependency.md#initializing-the-environment) for more info. +See [here](./contract-environment.md) for more info. ### Package 'chromium-105.0.5195.125' is not supported on 'x86_64-darwin' From afa8154ceeef088d81ba9c2de18b82ea4015456a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 21 Mar 2023 22:56:06 +0400 Subject: [PATCH 103/478] WIP: trying to debug ECDSA example flaky test --- src/Contract/Transaction.purs | 6 +- src/Internal/BalanceTx/BalanceTx.purs | 85 ++++++------ src/Internal/BalanceTx/Error.purs | 36 +++--- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 129 ++++++------------- src/Internal/BalanceTx/Helpers.purs | 39 ------ src/Internal/BalanceTx/RedeemerIndex.purs | 2 +- src/Internal/BalanceTx/UnattachedTx.purs | 50 +++++++ src/Internal/Types/ScriptLookups.purs | 89 +++---------- test/Ogmios/Aeson.purs | 10 +- 9 files changed, 172 insertions(+), 274 deletions(-) delete mode 100644 src/Internal/BalanceTx/Helpers.purs create mode 100644 src/Internal/BalanceTx/UnattachedTx.purs diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 984db4e62..f521f563a 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -78,6 +78,7 @@ import Ctl.Internal.BalanceTx.Error , ImpossibleError(Impossible) , InvalidInContext(InvalidInContext) ) as BalanceTxError +import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) import Ctl.Internal.Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey @@ -245,8 +246,7 @@ import Ctl.Internal.Types.ScriptLookups , ScriptLookups ) as ScriptLookups import Ctl.Internal.Types.ScriptLookups - ( UnattachedUnbalancedTx(..) - , UnindexedTx + ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) @@ -262,7 +262,7 @@ import Ctl.Internal.Types.Transaction ( TransactionHash , TransactionInput(TransactionInput) ) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(..)) +import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Types.UnbalancedTransaction ( UnbalancedTx(UnbalancedTx) , _transaction diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index fdc54a2d2..6d56c28dd 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -47,20 +47,26 @@ import Ctl.Internal.BalanceTx.Error , printTxEvaluationFailure ) as BalanceTxErrorExport import Ctl.Internal.BalanceTx.Error - ( BalanceTxError(..) + ( BalanceTxError + ( UtxoLookupFailedFor + , UtxoMinAdaValueCalculationFailed + , TODO + , BalanceInsufficientError + , CouldNotGetUtxos + , CouldNotGetCollateral + , CouldNotGetChangeAddress + ) , InvalidInContext(InvalidInContext) ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction ) -import Ctl.Internal.BalanceTx.Helpers (_transaction', _unbalancedTx) import Ctl.Internal.BalanceTx.RedeemerIndex (redeemerToIndexedRedeemer) import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction - , PrebalancedTransaction , askCip30Wallet , askCoinsPerUtxoUnit , askNetworkId @@ -70,6 +76,13 @@ import Ctl.Internal.BalanceTx.Types , withBalanceTxConstraints ) import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction +import Ctl.Internal.BalanceTx.UnattachedTx + ( EvaluatedTx + , IndexedTx + , PrebalancedTx(PrebalancedTx) + , UnindexedTx + , indexTx + ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.Cardano.Types.Transaction ( Certificate(StakeRegistration, StakeDeregistration) @@ -111,25 +124,16 @@ import Ctl.Internal.Contract.Wallet , getWalletCollateral , getWalletUtxos ) as Wallet -import Ctl.Internal.Deserialization.Transaction (_txBody) import Ctl.Internal.Helpers ((??)) import Ctl.Internal.Partition (equipartition, partition) import Ctl.Internal.Plutus.Conversion (toPlutusValue) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) -import Ctl.Internal.Types.ScriptLookups - ( EvaluatedTx - , IndexedTx - , PrebalancedTx(PrebalancedTx) - , UnindexedTx - , indexTx - ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1) , PlutusScript(PlutusScript) ) -import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) -import Ctl.Internal.Types.UnbalancedTransaction (_transaction, _utxoIndex) +import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -260,11 +264,11 @@ balanceTxWithConstraints transaction index constraintsBuilder = do pure (transaction.transaction # _body <<< _networkId ?~ networkId) setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction - setTransactionCollateral changeAddr transaction = do + setTransactionCollateral changeAddr tx = do collateral <- liftEitherContract $ note CouldNotGetCollateral <$> Wallet.getWalletCollateral - let collaterisedTx = addTxCollateral collateral transaction + let collaterisedTx = addTxCollateral collateral tx addTxCollateralReturn collateral collaterisedTx changeAddr -------------------------------------------------------------------------------- @@ -393,30 +397,33 @@ runBalancer p = do { transaction: evaluatedTx, minFee: newMinFee } <- evaluateTx state case newMinFee <= minFee of true -> - if (Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs) then - do - selectionState <- - performMultiAssetSelection p.strategy leftoverUtxos - (lovelaceValueOf one) - runNextBalancerStep $ state - { transaction = - evaluatedTx - # - ( prop (Proxy :: Proxy "transaction") <<< _body <<< - _inputs %~ - Set.union (selectedInputs selectionState) - ) - # - ( prop (Proxy :: Proxy "redeemers") %~ map - redeemerToIndexedRedeemer - ) - , leftoverUtxos = - selectionState ^. _leftoverUtxos - } - else - logTransaction "Balanced transaction (Done)" p.allUtxos - transaction.transaction - *> finalizeTransaction evaluatedTx p.allUtxos + logTransaction "Balanced transaction (Done)" p.allUtxos + evaluatedTx.transaction *> + if Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs then + do + selectionState <- + performMultiAssetSelection p.strategy leftoverUtxos + (lovelaceValueOf one) + runNextBalancerStep $ state + { transaction = + evaluatedTx + # + ( prop (Proxy :: Proxy "transaction") <<< _body <<< + _inputs %~ + Set.union (selectedInputs selectionState) + ) + # -- delete ExUnits from redeemers - they will be changed anyway + -- TODO: can we NOT remove them? + ( prop (Proxy :: Proxy "redeemers") %~ map + redeemerToIndexedRedeemer + ) + , leftoverUtxos = + selectionState ^. _leftoverUtxos + } + else + logTransaction "Balanced transaction (Done)" p.allUtxos + transaction.transaction + *> finalizeTransaction evaluatedTx p.allUtxos false -> runNextBalancerStep $ state { transaction = transaction diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d5b7d4900..589cf7cdd 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -26,11 +26,12 @@ module Ctl.Internal.BalanceTx.Error import Prelude -import Ctl.Internal.BalanceTx.RedeemerIndex - ( UnindexedRedeemer(..) - , redeemerPurposeToRedeemerTag +import Ctl.Internal.Cardano.Types.Transaction + ( Redeemer(Redeemer) + , Transaction + , _redeemers + , _witnessSet ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer)) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios ( RedeemerPointer @@ -48,9 +49,6 @@ import Ctl.Internal.QueryM.Ogmios ) as Ogmios import Ctl.Internal.ReindexRedeemers (ReindexErrors) import Ctl.Internal.Types.Natural (toBigInt) as Natural -import Ctl.Internal.Types.ScriptLookups - ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) - ) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) @@ -61,6 +59,7 @@ import Data.FoldableWithIndex (foldMapWithIndex) import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) +import Data.Lens (non, (^.)) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) @@ -68,8 +67,6 @@ import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String import Data.String.Common (joinWith, split) as String import Data.String.Utils (padEnd) -import Data.Tuple (snd) -import Data.Tuple.Nested (type (/\), (/\)) -- | Errors conditions that may possibly arise during transaction balancing data BalanceTxError @@ -80,7 +77,7 @@ data BalanceTxError | CouldNotGetUtxos | CollateralReturnError String | CollateralReturnMinAdaValueCalcError - | ExUnitsEvaluationFailed UnattachedUnbalancedTx Ogmios.TxEvaluationFailure + | ExUnitsEvaluationFailed Transaction Ogmios.TxEvaluationFailure | TODO | InsufficientUtxoBalanceToCoverAsset ImpossibleError String | ReindexRedeemersError ReindexErrors @@ -174,19 +171,19 @@ number ary = freeze (foldl go [] ary) -- | Exported to allow testing, use `Test.Ogmios.Aeson.printEvaluateTxFailures` -- | to visually verify the printing of errors without a context on fixtures. printTxEvaluationFailure - :: UnattachedUnbalancedTx -> Ogmios.TxEvaluationFailure -> String -printTxEvaluationFailure (UnattachedUnbalancedTx { redeemers }) e = + :: Transaction -> Ogmios.TxEvaluationFailure -> String +printTxEvaluationFailure transaction e = runPrettyString $ case e of Ogmios.UnparsedError error -> line $ "Unknown error: " <> error Ogmios.ScriptFailures sf -> line "Script failures:" <> bullet (foldMapWithIndex printScriptFailures sf) where lookupRedeemerPointer - :: Ogmios.RedeemerPointer -> Maybe (Redeemer /\ Maybe TransactionInput) - lookupRedeemerPointer ptr = -- flip find redeemers - -- $ \(UnindexedRedeemer { redeemers, purpose }) -> (redeemerPurposeToRedeemerTag purpose).tag == ptr.redeemerTag && rdmr.index == - -- Natural.toBigInt ptr.redeemerIndex - Nothing -- TODO + :: Ogmios.RedeemerPointer -> Maybe Redeemer + lookupRedeemerPointer ptr = + flip find (transaction ^. _witnessSet <<< _redeemers <<< non []) + $ \(Redeemer { index, tag }) -> tag == ptr.redeemerTag && index == + Natural.toBigInt ptr.redeemerIndex printRedeemerPointer :: Ogmios.RedeemerPointer -> PrettyString printRedeemerPointer ptr = @@ -202,9 +199,8 @@ printTxEvaluationFailure (UnattachedUnbalancedTx { redeemers }) e = printRedeemerDetails ptr = let mbRedeemerTxIn = lookupRedeemerPointer ptr - mbData = mbRedeemerTxIn <#> \(Redeemer r /\ _) -> "Redeemer: " <> show - r.data - mbTxIn = (mbRedeemerTxIn >>= snd) <#> \txIn -> "Input: " <> show txIn + mbData = mbRedeemerTxIn <#> \(Redeemer r) -> "Redeemer: " <> show r.data + mbTxIn = mbRedeemerTxIn <#> \txIn -> "Input: " <> show txIn in foldMap line $ Array.catMaybes [ mbData, mbTxIn ] diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index f17a4a0b6..b44ac52c6 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -5,27 +5,32 @@ module Ctl.Internal.BalanceTx.ExUnitsAndMinFee import Prelude -import Control.Monad.Error.Class (liftEither, liftMaybe, throwError) +import Contract.Log (logInfo') +import Contract.Numeric.Natural (fromInt') as Natural +import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) import Ctl.Internal.BalanceTx.Constraints (_additionalUtxos) as Constraints -import Ctl.Internal.BalanceTx.Error (BalanceTxError(..)) -import Ctl.Internal.BalanceTx.Helpers (_body') +import Ctl.Internal.BalanceTx.Error + ( BalanceTxError(UtxoLookupFailedFor, ExUnitsEvaluationFailed) + ) import Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer(..) + ( IndexedRedeemer , attachRedeemers - , indexRedeemers , indexedRedeemerToRedeemer - , mkRedeemersContext ) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction(FinalizedTransaction) - , PrebalancedTransaction(PrebalancedTransaction) , askCostModelsForLanguages , askNetworkId , asksConstraints , liftContract ) +import Ctl.Internal.BalanceTx.UnattachedTx + ( EvaluatedTx + , IndexedTx + , PrebalancedTx(PrebalancedTx) + ) import Ctl.Internal.Cardano.Types.ScriptRef as ScriptRef import Ctl.Internal.Cardano.Types.Transaction ( Costmdls @@ -36,10 +41,8 @@ import Ctl.Internal.Cardano.Types.Transaction , TxBody(TxBody) , UtxoMap , _body - , _inputs , _isValid , _plutusData - , _redeemers , _witnessSet ) import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract.MinFee @@ -49,55 +52,41 @@ import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , TxEvaluationResult(TxEvaluationResult) ) as Ogmios -import Ctl.Internal.ReindexRedeemers - ( ReindexErrors - , reindexSpentScriptRedeemers' - ) -import Ctl.Internal.Serialization.Types (Redeemers) +import Ctl.Internal.QueryM.Ogmios (TxEvaluationFailure(UnparsedError)) import Ctl.Internal.Transaction (setScriptDataHash) import Ctl.Internal.TxOutput ( transactionInputToTxOutRef , transactionOutputToOgmiosTxOut ) import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Natural -import Ctl.Internal.Types.ScriptLookups - ( EvaluatedTx - , IndexedTx - , PrebalancedTx(..) - , UnattachedUnbalancedIndexedEvaluatedTx(..) - , UnattachedUnbalancedIndexedTx(UnattachedUnbalancedIndexedTx) - , UnattachedUnbalancedTx(UnattachedUnbalancedTx) - , UnindexedTx - ) +import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Scripts (Language, PlutusScript) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(..), _transaction) import Data.Array (catMaybes) import Data.Array (fromFoldable) as Array -import Data.Bifunctor (bimap, lmap) +import Data.Bifunctor (bimap) import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), note) -import Data.Foldable (fold, foldMap) +import Data.Foldable (foldMap) import Data.Lens.Getter ((^.)) -import Data.Lens.Setter ((%~), (.~), (?~)) +import Data.Lens.Setter ((?~)) import Data.Map (empty, fromFoldable, lookup, toUnfoldable) as Map -import Data.Maybe (Maybe(..), fromMaybe, maybe) +import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set as Set import Data.Traversable (for) -import Data.Tuple (fst, snd) +import Data.Tuple (snd) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -import Undefined (undefined) evalTxExecutionUnits :: Transaction -> BalanceTxM Ogmios.TxEvaluationResult evalTxExecutionUnits tx = do + logInfo' "TXB" + logInfo' $ show tx queryHandle <- liftContract getQueryHandle additionalUtxos <- getOgmiosAdditionalUtxoSet evalResult <- @@ -107,7 +96,7 @@ evalTxExecutionUnits tx = do case evalResult of Right a -> pure a Left evalFailure | tx ^. _isValid -> - throwError $ TODO + throwError $ ExUnitsEvaluationFailed tx evalFailure Left _ -> pure $ wrap Map.empty where getOgmiosAdditionalUtxoSet :: BalanceTxM Ogmios.AdditionalUtxoSet @@ -135,11 +124,18 @@ evalExUnitsAndMinFee (PrebalancedTx unattachedTx) allUtxos = do -- Evaluate transaction ex units: exUnits <- evalTxExecutionUnits attachedTx -- Set execution units received from the server: - reindexedUnattachedTxWithExUnits <- liftMaybe TODO $ - updateTxExecutionUnits' unattachedTx exUnits + txWithExUnits <- + case updateTxExecutionUnits unattachedTx exUnits of + Just res -> pure res + Nothing + | not (attachedTx ^. _isValid) -> pure $ + unattachedTx + { redeemers = indexedRedeemerToRedeemer <$> unattachedTx.redeemers + } + _ -> throwError $ ExUnitsEvaluationFailed attachedTx + (UnparsedError "Unable to extract ExUnits from Ogmios response") -- Attach datums and redeemers, set the script integrity hash: - FinalizedTransaction finalizedTx <- - finalizeTransaction reindexedUnattachedTxWithExUnits allUtxos + FinalizedTransaction finalizedTx <- finalizeTransaction txWithExUnits allUtxos -- Calculate the minimum fee for a transaction: networkId <- askNetworkId additionalUtxos <- @@ -147,7 +143,7 @@ evalExUnitsAndMinFee (PrebalancedTx unattachedTx) allUtxos = do <$> asksConstraints Constraints._additionalUtxos minFee <- liftContract $ Contract.MinFee.calculateMinFee finalizedTx additionalUtxos - pure $ reindexedUnattachedTxWithExUnits /\ unwrap minFee + pure $ txWithExUnits /\ unwrap minFee -- | Attaches datums and redeemers, sets the script integrity hash, -- | for use after reindexing. @@ -200,27 +196,6 @@ finalizeTransaction tx utxos = do getPlutusScript (TransactionOutput { scriptRef }) = ScriptRef.getPlutusScript =<< scriptRef --- reindexRedeemers' --- :: UnindexedTx --- -> Maybe IndexedTx --- reindexRedeemers' { transaction, redeemers, datums } = do --- indexedRedeemers <- indexRedeemers ctx redeemers --- pure { datums, redeemers: indexedRedeemers, transaction } --- where --- ctx = mkRedeemersContext transaction - --- reindexRedeemers --- :: UnattachedUnbalancedTx --- -> Either ReindexErrors UnattachedUnbalancedTx --- reindexRedeemers --- unattachedTx@(UnattachedUnbalancedTx { redeemers }) = --- let --- inputs = Array.fromFoldable $ unattachedTx ^. _body' <<< _inputs --- in --- reindexSpentScriptRedeemers' inputs redeemersTxIns <#> --- \redeemersTxInsReindexed -> --- unattachedTx # _redeemers .~ redeemersTxInsReindexed - reattachDatumsAndFakeRedeemers :: IndexedTx -> Transaction reattachDatumsAndFakeRedeemers { transaction, datums, redeemers } = @@ -236,20 +211,12 @@ reattachDatumsAndRedeemers transaction' # _witnessSet <<< _plutusData ?~ map unwrap datums --- updateTxExecutionUnits --- :: UnattachedUnbalancedTx --- -> Ogmios.TxEvaluationResult --- -> UnattachedUnbalancedTx --- updateTxExecutionUnits unattachedTx rdmrPtrExUnitsList = --- unattachedTx --- # _redeemersTxIns %~ flip setRdmrsExecutionUnits rdmrPtrExUnitsList - -updateTxExecutionUnits' +updateTxExecutionUnits :: IndexedTx -> Ogmios.TxEvaluationResult -> Maybe EvaluatedTx -updateTxExecutionUnits' tx@{ redeemers } result = - getRedeemersExUnits result redeemers >>= \redeemers' -> pure $ tx +updateTxExecutionUnits tx@{ redeemers } result = + getRedeemersExUnits result redeemers <#> \redeemers' -> tx { redeemers = redeemers' } getRedeemersExUnits @@ -258,30 +225,14 @@ getRedeemersExUnits -> Maybe (Array Redeemer) getRedeemersExUnits (Ogmios.TxEvaluationResult result) redeemers = do for redeemers \indexedRedeemer -> do - let - Redeemer redeemer = indexedRedeemerToRedeemer indexedRedeemer - index = BigInt.fromInt (unwrap indexedRedeemer).index { memory, steps } <- Map.lookup - { redeemerTag: redeemer.tag - , redeemerIndex: Natural.fromBigInt' index + { redeemerTag: (unwrap indexedRedeemer).tag + , redeemerIndex: Natural.fromInt' (unwrap indexedRedeemer).index } result - pure $ Redeemer redeemer + pure $ Redeemer $ (unwrap $ indexedRedeemerToRedeemer indexedRedeemer) { exUnits = { mem: Natural.toBigInt memory , steps: Natural.toBigInt steps } } - -setRdmrsExecutionUnits - :: Array (Redeemer /\ Maybe TransactionInput) - -> Ogmios.TxEvaluationResult - -> Array (Redeemer /\ Maybe TransactionInput) -setRdmrsExecutionUnits rs (Ogmios.TxEvaluationResult evalR) = - rs <#> \r@(Redeemer rec@{ tag: redeemerTag, index } /\ oref) -> - Map.lookup { redeemerTag, redeemerIndex: Natural.fromBigInt' index } evalR - # maybe r \{ memory, steps } -> - Redeemer rec - { exUnits = - { mem: Natural.toBigInt memory, steps: Natural.toBigInt steps } - } /\ oref diff --git a/src/Internal/BalanceTx/Helpers.purs b/src/Internal/BalanceTx/Helpers.purs deleted file mode 100644 index f9704cb9e..000000000 --- a/src/Internal/BalanceTx/Helpers.purs +++ /dev/null @@ -1,39 +0,0 @@ -module Ctl.Internal.BalanceTx.Helpers - ( _body' - , _transaction' - , _unbalancedTx - ) where - -import Prelude - -import Ctl.Internal.Cardano.Types.Transaction - ( Redeemer - , Transaction - , TxBody - , _body - ) -import Ctl.Internal.Types.ScriptLookups - ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) - ) -import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx, _transaction) -import Data.Lens (Lens', lens') -import Data.Lens.Getter ((^.)) -import Data.Lens.Setter ((%~), (.~)) -import Data.Maybe (Maybe) -import Data.Tuple.Nested (type (/\), (/\)) - -_unbalancedTx :: Lens' UnattachedUnbalancedTx UnbalancedTx -_unbalancedTx = lens' \(UnattachedUnbalancedTx rec@{ unbalancedTx }) -> - unbalancedTx /\ - \ubTx -> UnattachedUnbalancedTx rec { unbalancedTx = ubTx } - -_transaction' :: Lens' UnattachedUnbalancedTx Transaction -_transaction' = lens' \unattachedTx -> - unattachedTx ^. _unbalancedTx <<< _transaction /\ - \tx -> unattachedTx # _unbalancedTx %~ (_transaction .~ tx) - -_body' :: Lens' UnattachedUnbalancedTx TxBody -_body' = lens' \unattachedTx -> - unattachedTx ^. _transaction' <<< _body /\ - \txBody -> unattachedTx # _transaction' %~ (_body .~ txBody) diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 3bf2329ba..0963bc0f9 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -23,7 +23,7 @@ import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) import Data.Map as Map -import Data.Maybe (Maybe(..), fromJust, fromMaybe) +import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe) import Data.Newtype (class Newtype, unwrap) import Data.Set as Set import Data.Show.Generic (genericShow) diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs new file mode 100644 index 000000000..611ab4879 --- /dev/null +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -0,0 +1,50 @@ +module Ctl.Internal.BalanceTx.UnattachedTx + ( UnattachedTx + , UnindexedTx + , IndexedTx + , EvaluatedTx + , PrebalancedTx(PrebalancedTx) + , indexTx + ) where + +import Prelude + +import Aeson (class EncodeAeson) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( IndexedRedeemer + , UnindexedRedeemer + , indexRedeemers + , mkRedeemersContext + ) +import Ctl.Internal.Cardano.Types.Transaction (Redeemer, Transaction) +import Ctl.Internal.Types.Datum (Datum) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +type UnattachedTx row = + (Record (transaction :: Transaction, datums :: Array Datum | row)) + +type UnindexedTx = UnattachedTx (redeemers :: Array UnindexedRedeemer) +type IndexedTx = UnattachedTx (redeemers :: Array IndexedRedeemer) +type EvaluatedTx = UnattachedTx (redeemers :: Array Redeemer) + +newtype PrebalancedTx = PrebalancedTx IndexedTx + +derive instance Generic PrebalancedTx _ +derive instance Newtype PrebalancedTx _ +derive newtype instance Eq PrebalancedTx +derive newtype instance EncodeAeson PrebalancedTx + +indexTx :: UnindexedTx -> Maybe IndexedTx +indexTx { transaction, datums, redeemers } = do + redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers + pure + { transaction + , datums + , redeemers: redeemers' + } + +instance Show PrebalancedTx where + show = genericShow diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 702b91dd7..d913b7bc0 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,10 +1,5 @@ module Ctl.Internal.Types.ScriptLookups - ( EvaluatedTx - , IndexedTx - , PrebalancedTx(PrebalancedTx) - , UnindexedTx - , UnattachedTx_ - , MkUnbalancedTxError + ( MkUnbalancedTxError ( CannotConvertPOSIXTimeRange , CannotSolveTimeConstraints , CannotConvertPaymentPubKeyHash @@ -58,7 +53,6 @@ module Ctl.Internal.Types.ScriptLookups , typedValidatorLookupsM , unspentOutputs , unspentOutputsM - , indexTx ) where import Prelude hiding (join) @@ -72,25 +66,22 @@ import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.Address (addressPaymentValidatorHash) import Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer(..) - , RedeemerPurpose(ForMint, ForCert, ForSpend, ForReward) + ( IndexedRedeemer + , RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) , UnindexedRedeemer(UnindexedRedeemer) - , attachRedeemers - , indexRedeemers - , mkRedeemersContext , unindexedRedeemerToRedeemer ) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) import Ctl.Internal.Cardano.Types.Transaction ( Certificate - ( StakeRegistration - , StakeDeregistration - , PoolRegistration + ( StakeDelegation , PoolRetirement - , StakeDelegation + , PoolRegistration + , StakeDeregistration + , StakeRegistration ) , Costmdls - , Redeemer(..) + , Redeemer , Transaction , TransactionOutput(TransactionOutput) , TransactionWitnessSet(TransactionWitnessSet) @@ -108,7 +99,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _withdrawals , _witnessSet ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer)) as T +import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T import Ctl.Internal.Cardano.Types.Value ( Coin(Coin) , CurrencySymbol @@ -163,7 +154,6 @@ import Ctl.Internal.Transaction , attachDatum , attachNativeScript , attachPlutusScript - , attachRedeemer , setScriptDataHash ) import Ctl.Internal.Types.Any (Any) @@ -186,7 +176,6 @@ import Ctl.Internal.Types.PubKeyHash , payPubKeyHashEnterpriseAddress , stakePubKeyHashRewardAddress ) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Cert, Reward, Mint, Spend)) import Ctl.Internal.Types.RewardAddress ( stakePubKeyHashRewardAddress , stakeValidatorHashRewardAddress @@ -262,15 +251,15 @@ import Ctl.Internal.Types.UnbalancedTransaction , _utxoIndex , emptyUnbalancedTx ) -import Data.Array (cons, filter, mapWithIndex, partition, toUnfoldable, zip) -import Data.Array (length, singleton, union, (:)) as Array +import Data.Array (cons, partition, toUnfoldable, zip) +import Data.Array (singleton, union, (:)) as Array import Data.Bifunctor (lmap) -import Data.BigInt (BigInt, fromInt) +import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) import Data.Generic.Rep (class Generic) import Data.Lattice (join) -import Data.Lens (non, view, (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) import Data.Lens.Getter (to, use) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) @@ -284,7 +273,6 @@ import Data.Set (insert) as Set import Data.Show.Generic (genericShow) import Data.Symbol (SProxy(SProxy)) import Data.Traversable (for, traverse_) -import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff.Class (liftAff) @@ -503,9 +491,6 @@ type ConstraintProcessingState (a :: Type) = , datums :: Array Datum -- Ordered accumulation of datums we can use to `setScriptDataHash` , redeemers :: Array UnindexedRedeemer - , redeemersTxIns :: Array (T.Redeemer /\ Maybe TransactionInput) - -- Ordered accumulation of redeemers so we can use to `setScriptDataHash` and - -- add execution units via Ogmios , mintRedeemers :: Map MintingPolicyHash T.Redeemer -- Mint redeemers with the corresponding minting policy hashes. -- We need to reindex mint redeemers every time we add a new one, since @@ -659,7 +644,6 @@ runConstraintsM lookups txConstraints = do ValueSpentBalances { required: mempty, provided: mempty } , datums: mempty , redeemers: [] - , redeemersTxIns: mempty , mintRedeemers: empty , lookups , refScriptsUtxoMap: empty @@ -704,32 +688,6 @@ derive newtype instance EncodeAeson UnattachedUnbalancedTx instance Show UnattachedUnbalancedTx where show = genericShow -type UnattachedTx_ row = - (Record (transaction :: Transaction, datums :: Array Datum | row)) - -type UnindexedTx = UnattachedTx_ (redeemers :: Array UnindexedRedeemer) -type IndexedTx = UnattachedTx_ (redeemers :: Array IndexedRedeemer) -type EvaluatedTx = UnattachedTx_ (redeemers :: Array Redeemer) - -newtype PrebalancedTx = PrebalancedTx IndexedTx - -derive instance Generic PrebalancedTx _ -derive instance Newtype PrebalancedTx _ -derive newtype instance Eq PrebalancedTx -derive newtype instance EncodeAeson PrebalancedTx - -indexTx :: UnindexedTx -> Maybe IndexedTx -indexTx { transaction, datums, redeemers } = do - redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers - pure - { transaction: attachRedeemers redeemers' transaction - , datums - , redeemers: redeemers' - } - -instance Show PrebalancedTx where - show = genericShow - -- | A newtype for the unbalanced transaction after creating one with datums -- | and redeemers not attached, but already indexed newtype UnattachedUnbalancedIndexedTx = UnattachedUnbalancedIndexedTx @@ -1342,18 +1300,10 @@ processConstraint mpsMap osMap c = do ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash plutusScript ) - index <- lift $ addCertificate cert _redeemers <>= [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] - let - redeemer = T.Redeemer - { tag: Cert - , index: fromInt index - , "data": unwrap redeemerData - , exUnits: zero - } ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) MustDeregisterStakeNativeScript stakeValidator -> do void $ addCertificate $ StakeDeregistration @@ -1378,7 +1328,7 @@ processConstraint mpsMap osMap c = do stakeValidator ) poolKeyHash - ix <- lift $ addCertificate cert + lift $ addCertificate cert _redeemers <>= [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } @@ -1419,13 +1369,6 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForReward rewardAddress, datum: unwrap redeemerData } ] - let - redeemer = T.Redeemer - { tag: Reward - , index: zero -- hardcoded and tweaked after balancing. - , "data": unwrap redeemerData - , exUnits: zero - } ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) MustWithdrawStakeNativeScript stakeValidator -> runExceptT do let hash = nativeScriptStakeValidatorHash stakeValidator @@ -1513,11 +1456,9 @@ addDatum dat = runExceptT do addCertificate :: forall (a :: Type) . Certificate - -> ConstraintsM a Int + -> ConstraintsM a Unit addCertificate cert = do - ix <- gets (view (_cpsToTxBody <<< _certs <<< non [] <<< to Array.length)) _cpsToTxBody <<< _certs <<< non [] %= Array.(:) cert - pure ix -- Helper to focus from `ConstraintProcessingState` down to `Transaction`. _cpsToTransaction diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 66c0a97fc..d1a169384 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -133,15 +133,7 @@ printEvaluateTxFailures = launchAff_ do let response = hush $ Aeson.decodeAeson aeson :: _ O.TxEvaluationR mbFailure = response >>= unwrap >>> either pure (const Nothing) - for_ mbFailure - ( log <<< printTxEvaluationFailure - ( wrap - { datums: [] - , unbalancedTx: wrap { transaction: mempty, utxoIndex: Map.empty } - , redeemers: [] - } - ) - ) + for_ mbFailure (log <<< printTxEvaluationFailure mempty) suite :: TestPlanM (Aff Unit) Unit suite = group "Ogmios Aeson tests" do From d07097e7b8afaad9979ee08df68fc9d434d7b50c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 15:54:15 +0400 Subject: [PATCH 104/478] Fix problems with outdated redeemer indexes by switching to UnindexedTx instead of IndexedTx --- src/Internal/BalanceTx/BalanceTx.purs | 82 ++++++++++---------- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 4 +- src/Internal/BalanceTx/RedeemerIndex.purs | 4 +- src/Internal/BalanceTx/UnattachedTx.purs | 5 +- test/Plutip/Contract.purs | 4 +- 5 files changed, 47 insertions(+), 52 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 6d56c28dd..00dc98cd5 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -62,7 +62,11 @@ import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction ) -import Ctl.Internal.BalanceTx.RedeemerIndex (redeemerToIndexedRedeemer) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( attachRedeemers + , indexRedeemers + , mkRedeemersContext + ) import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM @@ -76,13 +80,7 @@ import Ctl.Internal.BalanceTx.Types , withBalanceTxConstraints ) import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction -import Ctl.Internal.BalanceTx.UnattachedTx - ( EvaluatedTx - , IndexedTx - , PrebalancedTx(PrebalancedTx) - , UnindexedTx - , indexTx - ) +import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, UnindexedTx, indexTx) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.Cardano.Types.Transaction ( Certificate(StakeRegistration, StakeDeregistration) @@ -188,7 +186,7 @@ balanceTxWithConstraints transaction index constraintsBuilder = do certsFee = getStakingBalance (transaction.transaction) depositValuePerCert - changeAddr <- getChangeAddress + changeAddress <- getChangeAddress mbSrcAddrs <- asksConstraints Constraints._srcAddresses @@ -224,7 +222,7 @@ balanceTxWithConstraints transaction index constraintsBuilder = do -- Don't set collateral if tx doesn't contain phase-2 scripts: transactionWithNetworkId false -> - setTransactionCollateral changeAddr =<< transactionWithNetworkId + setTransactionCollateral changeAddress =<< transactionWithNetworkId let allUtxos :: UtxoMap allUtxos = @@ -240,10 +238,13 @@ balanceTxWithConstraints transaction index constraintsBuilder = do selectionStrategy <- asksConstraints Constraints._selectionStrategy -- Balance and finalize the transaction: + reindexedRedeemers <- liftMaybe TODO $ + indexRedeemers (mkRedeemersContext unbalancedCollTx) transaction.redeemers runBalancer { strategy: selectionStrategy - , transaction: transaction { transaction = unbalancedCollTx } - , changeAddress: changeAddr + , transaction: transaction + { transaction = attachRedeemers reindexedRedeemers unbalancedCollTx } + , changeAddress , allUtxos , utxos: availableUtxos , certsFee @@ -292,24 +293,23 @@ type BalancerState tx = } initBalancerState - :: IndexedTx + :: UnindexedTx -> UtxoMap - -> BalancerState IndexedTx + -> BalancerState UnindexedTx initBalancerState transaction = buildUtxoIndex >>> { transaction, leftoverUtxos: _, changeOutputs: mempty, minFee: zero } data BalancerStep - = PrebalanceTx (BalancerState IndexedTx) - | BalanceChangeAndMinFee (BalancerState IndexedTx) + = PrebalanceTx (BalancerState UnindexedTx) + | BalanceChangeAndMinFee (BalancerState UnindexedTx) runBalancer :: BalancerParams -> BalanceTxM FinalizedTransaction runBalancer p = do utxos <- partitionAndFilterUtxos transaction <- addLovelacesToTransactionOutputs p.transaction - indexedTx <- liftMaybe TODO $ indexTx transaction addInvalidInContext (foldMap (_.amount <<< unwrap) utxos.invalidInContext) do - mainLoop (initBalancerState indexedTx utxos.spendable) + mainLoop (initBalancerState transaction utxos.spendable) where addInvalidInContext :: forall (a :: Type). Value -> BalanceTxM a -> BalanceTxM a @@ -384,7 +384,7 @@ runBalancer p = do } (Map.toUnfoldable p.utxos :: Array _) - mainLoop :: BalancerState IndexedTx -> BalanceTxM FinalizedTransaction + mainLoop :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction mainLoop = worker <<< PrebalanceTx where worker :: BalancerStep -> BalanceTxM FinalizedTransaction @@ -406,17 +406,12 @@ runBalancer p = do (lovelaceValueOf one) runNextBalancerStep $ state { transaction = - evaluatedTx + transaction # ( prop (Proxy :: Proxy "transaction") <<< _body <<< _inputs %~ Set.union (selectedInputs selectionState) ) - # -- delete ExUnits from redeemers - they will be changed anyway - -- TODO: can we NOT remove them? - ( prop (Proxy :: Proxy "redeemers") %~ map - redeemerToIndexedRedeemer - ) , leftoverUtxos = selectionState ^. _leftoverUtxos } @@ -438,7 +433,7 @@ runBalancer p = do -- | after generation of change, the first balancing step `PrebalanceTx` -- | is performed, otherwise we proceed to `BalanceChangeAndMinFee`. runNextBalancerStep - :: BalancerState IndexedTx -> BalanceTxM FinalizedTransaction + :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction runNextBalancerStep state@{ transaction } = do let txBody = transaction # _.transaction >>> unwrap >>> _.body inputValue <- except $ getInputValue p.allUtxos txBody @@ -446,17 +441,18 @@ runBalancer p = do requiredValue <- except $ getRequiredValue p.certsFee p.allUtxos - ( setTxChangeOutputs changeOutputs transaction # unwrap - >>> _.transaction - >>> unwrap - >>> _.body + ( setTxChangeOutputs changeOutputs transaction # + _.transaction + >>> unwrap + >>> _.body ) worker $ -- state { changeOutputs = changeOutputs } # -- if requiredValue == mempty then BalanceChangeAndMinFee else PrebalanceTx if requiredValue == mempty then - BalanceChangeAndMinFee $ state { changeOutputs = changeOutputs } + BalanceChangeAndMinFee $ state + { changeOutputs = changeOutputs, transaction = transaction } else PrebalanceTx $ state { changeOutputs = changeOutputs } @@ -464,7 +460,7 @@ runBalancer p = do -- | utxo set so that the total input value is sufficient to cover all -- | transaction outputs, including generated change and min fee. prebalanceTx - :: BalancerState IndexedTx -> BalanceTxM (BalancerState IndexedTx) + :: BalancerState UnindexedTx -> BalanceTxM (BalancerState UnindexedTx) prebalanceTx state@{ transaction, changeOutputs, leftoverUtxos } = performCoinSelection <#> \selectionState -> state { transaction = @@ -482,10 +478,10 @@ runBalancer p = do performCoinSelection = let txBody :: TxBody - txBody = setTxChangeOutputs changeOutputs transaction # unwrap - >>> _.transaction - >>> unwrap - >>> _.body + txBody = setTxChangeOutputs changeOutputs transaction # + _.transaction + >>> unwrap + >>> _.body in except (getRequiredValue p.certsFee p.allUtxos txBody) >>= performMultiAssetSelection p.strategy leftoverUtxos @@ -497,13 +493,13 @@ runBalancer p = do -- | since this pre-condition is sometimes required for successfull script -- | execution during transaction evaluation. evaluateTx - :: BalancerState IndexedTx -> BalanceTxM (BalancerState EvaluatedTx) + :: BalancerState UnindexedTx -> BalanceTxM (BalancerState EvaluatedTx) evaluateTx state@{ transaction, changeOutputs } = do let - prebalancedTx :: PrebalancedTx + prebalancedTx :: UnindexedTx prebalancedTx = setTxChangeOutputs changeOutputs transaction - - evaluatedTx /\ minFee <- evalExUnitsAndMinFee prebalancedTx p.allUtxos + indexedTx <- liftMaybe TODO $ indexTx prebalancedTx + evaluatedTx /\ minFee <- evalExUnitsAndMinFee indexedTx p.allUtxos pure $ state { transaction = evaluatedTx, minFee = minFee } -- | For each transaction output, if necessary, adds some number of lovelaces @@ -540,10 +536,10 @@ addLovelacesToTransactionOutput txOutput = do { amount = mkValue newCoin (getNonAdaAsset txOutputValue) } setTxChangeOutputs - :: Array TransactionOutput -> IndexedTx -> PrebalancedTx + :: Array TransactionOutput -> UnindexedTx -> UnindexedTx setTxChangeOutputs outputs tx = - PrebalancedTx tx # - _Newtype <<< prop (Proxy :: Proxy "transaction") <<< _Newtype + tx # + prop (Proxy :: Proxy "transaction") <<< _Newtype <<< prop (Proxy :: Proxy "body") <<< _outputs %~ flip append outputs diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index b44ac52c6..e62eba330 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -115,10 +115,10 @@ evalTxExecutionUnits tx = do -- Returns a tuple consisting of updated `UnattachedUnbalancedTx` and -- the minimum fee. evalExUnitsAndMinFee - :: PrebalancedTx + :: IndexedTx -> UtxoMap -> BalanceTxM (EvaluatedTx /\ BigInt) -evalExUnitsAndMinFee (PrebalancedTx unattachedTx) allUtxos = do +evalExUnitsAndMinFee unattachedTx allUtxos = do -- Reattach datums and redeemers before evaluating ex units: let attachedTx = reattachDatumsAndFakeRedeemers unattachedTx -- Evaluate transaction ex units: diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 0963bc0f9..2d0272b5e 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -36,9 +36,6 @@ class AttachableRedeemer r where instance AttachableRedeemer Redeemer where attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers --- instance AttachableRedeemer UnindexedRedeemer where --- attachRedeemers = attachRedeemers <<< map unindexedRedeemerToRedeemer - instance AttachableRedeemer IndexedRedeemer where attachRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer @@ -57,6 +54,7 @@ derive newtype instance EncodeAeson UnindexedRedeemer instance Show UnindexedRedeemer where show = genericShow +redeemerPurposeToRedeemerTag :: RedeemerPurpose -> RedeemerTag redeemerPurposeToRedeemerTag = case _ of ForSpend _ -> Spend ForMint _ -> Mint diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index 611ab4879..ba102dd0a 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -13,6 +13,7 @@ import Aeson (class EncodeAeson) import Ctl.Internal.BalanceTx.RedeemerIndex ( IndexedRedeemer , UnindexedRedeemer + , attachRedeemers , indexRedeemers , mkRedeemersContext ) @@ -30,7 +31,7 @@ type UnindexedTx = UnattachedTx (redeemers :: Array UnindexedRedeemer) type IndexedTx = UnattachedTx (redeemers :: Array IndexedRedeemer) type EvaluatedTx = UnattachedTx (redeemers :: Array Redeemer) -newtype PrebalancedTx = PrebalancedTx IndexedTx +newtype PrebalancedTx = PrebalancedTx UnindexedTx derive instance Generic PrebalancedTx _ derive instance Newtype PrebalancedTx _ @@ -41,7 +42,7 @@ indexTx :: UnindexedTx -> Maybe IndexedTx indexTx { transaction, datums, redeemers } = do redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers pure - { transaction + { transaction: attachRedeemers redeemers' transaction , datums , redeemers: redeemers' } diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 88ff0bc82..2c416c4c4 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -1849,7 +1849,7 @@ suite = do withCip30Mock alice MockNami $ ECDSA.contract group "CIP-49 Plutus Crypto Primitives" do - test "ECDSA: a script that checks a signature works" do + test "ECDSA: a script that checks if a signature is correct" do let distribution :: InitialUTxOs distribution = @@ -1859,7 +1859,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do ECDSA.contract - test "Schnorr: a script that checks a signature works" do + test "Schnorr: a script that checks if a signature is correct" do let distribution :: InitialUTxOs distribution = From 4ec121b25e1ed1c819f0603db3648a8340fb92d1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 15:58:15 +0400 Subject: [PATCH 105/478] Simplify UnattachedTx definition --- src/Internal/BalanceTx/UnattachedTx.purs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index ba102dd0a..2a5c8cb32 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -24,12 +24,15 @@ import Data.Maybe (Maybe) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -type UnattachedTx row = - (Record (transaction :: Transaction, datums :: Array Datum | row)) - -type UnindexedTx = UnattachedTx (redeemers :: Array UnindexedRedeemer) -type IndexedTx = UnattachedTx (redeemers :: Array IndexedRedeemer) -type EvaluatedTx = UnattachedTx (redeemers :: Array Redeemer) +type UnattachedTx redeemer = + { transaction :: Transaction + , datums :: Array Datum + , redeemers :: Array redeemer + } + +type UnindexedTx = UnattachedTx UnindexedRedeemer +type IndexedTx = UnattachedTx IndexedRedeemer +type EvaluatedTx = UnattachedTx Redeemer newtype PrebalancedTx = PrebalancedTx UnindexedTx From ce96eed1eeacbd29ae3566a32a43cafe441f0f07 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 18:13:46 +0400 Subject: [PATCH 106/478] - Remove unneded types - simplify UnbalancedTx --- src/Contract/AuxiliaryData.purs | 16 +- src/Contract/Transaction.purs | 10 +- src/Internal/BalanceTx/BalanceTx.purs | 38 ++-- src/Internal/BalanceTx/Error.purs | 6 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 9 +- src/Internal/BalanceTx/RedeemerIndex.purs | 31 +-- src/Internal/BalanceTx/UnattachedTx.purs | 28 +-- src/Internal/Types/ScriptLookups.purs | 182 ++++++------------ src/Internal/Types/UnbalancedTransaction.purs | 38 +--- test/BalanceTx/Time.purs | 6 +- 10 files changed, 136 insertions(+), 228 deletions(-) diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 2da38355f..1515faa4a 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -7,9 +7,7 @@ module Contract.AuxiliaryData import Prelude import Contract.Monad (Contract) -import Contract.ScriptLookups - ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) - ) +import Contract.ScriptLookups (UnattachedUnbalancedTx) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash @@ -25,13 +23,16 @@ import Ctl.Internal.Metadata.MetadataType ) import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx, _transaction) +import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx) import Data.Lens (lens', (?~)) import Data.Lens.Getter (view) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) import Data.Lens.Types (Lens') import Data.Maybe (Maybe, fromMaybe) import Data.Tuple (Tuple(Tuple)) import Effect.Class (liftEffect) +import Type.Proxy (Proxy(Proxy)) -- These functions involve `UnattachedUnbalancedTx`, -- which in turn involve `UnbalancedTx`. These functions involve ScriptOutput, @@ -73,16 +74,15 @@ setTxMetadata tx = -------------------------------------------------------------------------------- _unbalancedTx :: Lens' UnattachedUnbalancedTx UnbalancedTx -_unbalancedTx = lens' \(UnattachedUnbalancedTx rec@{ unbalancedTx }) -> - Tuple unbalancedTx \ubTx -> UnattachedUnbalancedTx rec { unbalancedTx = ubTx } +_unbalancedTx = _Newtype <<< prop (Proxy :: Proxy "transaction") _auxiliaryData :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryData) _auxiliaryData = - _unbalancedTx <<< _transaction <<< Tx._auxiliaryData + _unbalancedTx <<< _Newtype <<< Tx._auxiliaryData _auxiliaryDataHash :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryDataHash) _auxiliaryDataHash = - _unbalancedTx <<< _transaction <<< Tx._body <<< Tx._auxiliaryDataHash + _unbalancedTx <<< _Newtype <<< Tx._body <<< Tx._auxiliaryDataHash _metadata :: Lens' AuxiliaryData (Maybe GeneralTransactionMetadata) _metadata = lens' \(AuxiliaryData rec@{ metadata }) -> diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index f521f563a..82a358deb 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -262,11 +262,8 @@ import Ctl.Internal.Types.Transaction ( TransactionHash , TransactionInput(TransactionInput) ) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Types.UnbalancedTransaction ( UnbalancedTx(UnbalancedTx) - , _transaction - , _utxoIndex , emptyUnbalancedTx ) as UnbalancedTx import Ctl.Internal.Types.UsedTxOuts @@ -439,12 +436,13 @@ withBalancedTx = withSingleTransaction balanceAndLock unwrap unUnattachedUnbalancedTx :: UnattachedUnbalancedTx -> UnindexedTx /\ UtxoIx unUnattachedUnbalancedTx ( UnattachedUnbalancedTx - { unbalancedTx: UnbalancedTx { transaction, utxoIndex } + { transaction , datums , redeemers + , utxoIndex } ) = - { transaction, datums, redeemers } /\ utxoIndex + { transaction: unwrap transaction, datums, redeemers } /\ utxoIndex -- | Attempts to balance an `UnattachedUnbalancedTx` using the specified -- | balancer constraints. @@ -483,7 +481,7 @@ balanceTxsWithConstraints unbalancedTxs = throwError e uutxToTx :: UnattachedUnbalancedTx -> Transaction - uutxToTx = _.transaction <<< unwrap <<< _.unbalancedTx <<< unwrap + uutxToTx = unwrap <<< _.transaction <<< unwrap -- | Same as `balanceTxsWithConstraints`, but uses the default balancer -- | constraints. diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 00dc98cd5..81cda5072 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -50,7 +50,7 @@ import Ctl.Internal.BalanceTx.Error ( BalanceTxError ( UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed - , TODO + , ReindexRedeemersError , BalanceInsufficientError , CouldNotGetUtxos , CouldNotGetCollateral @@ -63,7 +63,8 @@ import Ctl.Internal.BalanceTx.ExUnitsAndMinFee , finalizeTransaction ) import Ctl.Internal.BalanceTx.RedeemerIndex - ( attachRedeemers + ( attachIndexedRedeemers + , attachRedeemers , indexRedeemers , mkRedeemersContext ) @@ -122,7 +123,7 @@ import Ctl.Internal.Contract.Wallet , getWalletCollateral , getWalletUtxos ) as Wallet -import Ctl.Internal.Helpers ((??)) +import Ctl.Internal.Helpers (liftEither, (??)) import Ctl.Internal.Partition (equipartition, partition) import Ctl.Internal.Plutus.Conversion (toPlutusValue) import Ctl.Internal.Serialization.Address (Address) @@ -146,6 +147,7 @@ import Data.Array.NonEmpty , zipWith ) as NEArray import Data.Array.NonEmpty as NEA +import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) @@ -215,14 +217,11 @@ balanceTxWithConstraints transaction index constraintsBuilder = do <#> traverse (note CouldNotGetUtxos) >>> map (foldr Map.union Map.empty) -- merge all utxos into one map - unbalancedCollTx <- - -- TODO: check plutus scripts presence? - case Array.null (transaction # _.redeemers) of - true -> - -- Don't set collateral if tx doesn't contain phase-2 scripts: - transactionWithNetworkId - false -> - setTransactionCollateral changeAddress =<< transactionWithNetworkId + unbalancedCollTx <- transactionWithNetworkId >>= + if Array.null (transaction # _.redeemers) + -- Don't set collateral if tx doesn't contain phase-2 scripts: + then pure + else setTransactionCollateral changeAddress let allUtxos :: UtxoMap allUtxos = @@ -237,13 +236,19 @@ balanceTxWithConstraints transaction index constraintsBuilder = do selectionStrategy <- asksConstraints Constraints._selectionStrategy - -- Balance and finalize the transaction: - reindexedRedeemers <- liftMaybe TODO $ + -- Reindex redeemers and update transaction + reindexedRedeemers <- liftEither $ lmap ReindexRedeemersError $ indexRedeemers (mkRedeemersContext unbalancedCollTx) transaction.redeemers + let + transaction' = transaction + { transaction = attachIndexedRedeemers reindexedRedeemers + unbalancedCollTx + } + + -- Balance and finalize the transaction: runBalancer { strategy: selectionStrategy - , transaction: transaction - { transaction = attachRedeemers reindexedRedeemers unbalancedCollTx } + , transaction: transaction' , changeAddress , allUtxos , utxos: availableUtxos @@ -498,7 +503,8 @@ runBalancer p = do let prebalancedTx :: UnindexedTx prebalancedTx = setTxChangeOutputs changeOutputs transaction - indexedTx <- liftMaybe TODO $ indexTx prebalancedTx + indexedTx <- liftEither $ lmap ReindexRedeemersError $ indexTx + prebalancedTx evaluatedTx /\ minFee <- evalExUnitsAndMinFee indexedTx p.allUtxos pure $ state { transaction = evaluatedTx, minFee = minFee } diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 589cf7cdd..d4678387f 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -12,7 +12,6 @@ module Ctl.Internal.BalanceTx.Error , CouldNotGetUtxos , CollateralReturnError , CollateralReturnMinAdaValueCalcError - , TODO , ExUnitsEvaluationFailed , InsufficientUtxoBalanceToCoverAsset , ReindexRedeemersError @@ -26,6 +25,7 @@ module Ctl.Internal.BalanceTx.Error import Prelude +import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) , Transaction @@ -47,7 +47,6 @@ import Ctl.Internal.QueryM.Ogmios ) , TxEvaluationFailure(UnparsedError, ScriptFailures) ) as Ogmios -import Ctl.Internal.ReindexRedeemers (ReindexErrors) import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array @@ -78,9 +77,8 @@ data BalanceTxError | CollateralReturnError String | CollateralReturnMinAdaValueCalcError | ExUnitsEvaluationFailed Transaction Ogmios.TxEvaluationFailure - | TODO | InsufficientUtxoBalanceToCoverAsset ImpossibleError String - | ReindexRedeemersError ReindexErrors + | ReindexRedeemersError UnindexedRedeemer | UtxoLookupFailedFor TransactionInput | UtxoMinAdaValueCalculationFailed diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index e62eba330..587b1ddf8 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -5,7 +5,6 @@ module Ctl.Internal.BalanceTx.ExUnitsAndMinFee import Prelude -import Contract.Log (logInfo') import Contract.Numeric.Natural (fromInt') as Natural import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) @@ -26,11 +25,7 @@ import Ctl.Internal.BalanceTx.Types , asksConstraints , liftContract ) -import Ctl.Internal.BalanceTx.UnattachedTx - ( EvaluatedTx - , IndexedTx - , PrebalancedTx(PrebalancedTx) - ) +import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, IndexedTx) import Ctl.Internal.Cardano.Types.ScriptRef as ScriptRef import Ctl.Internal.Cardano.Types.Transaction ( Costmdls @@ -85,8 +80,6 @@ evalTxExecutionUnits :: Transaction -> BalanceTxM Ogmios.TxEvaluationResult evalTxExecutionUnits tx = do - logInfo' "TXB" - logInfo' $ show tx queryHandle <- liftContract getQueryHandle additionalUtxos <- getOgmiosAdditionalUtxoSet evalResult <- diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 2d0272b5e..4a8b98f04 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -1,3 +1,11 @@ +-- | Redeemer indexing refers to the process of updating redeemer's `index` +-- | value based on its `RedeemerPurpose` and context from the transaction. +-- | Redeemer indexing is needed, because at the Tx construction stage we +-- | don't know the exact indices redeemers will have after balancing. +-- | For the algorithm, see `indexof` description in +-- | "Combining Scripts with Their Inputs" chapter of "A Formal Specification +-- | of the Cardano Ledger integrating Plutus Core" +-- | https://github.com/input-output-hk/cardano-ledger/releases/latest/download/alonzo-ledger.pdf module Ctl.Internal.BalanceTx.RedeemerIndex where import Prelude @@ -19,25 +27,23 @@ import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (findIndex) import Data.BigInt as BigInt +import Data.Either (Either, note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe) +import Data.Maybe (Maybe(Just), fromJust, fromMaybe) import Data.Newtype (class Newtype, unwrap) import Data.Set as Set import Data.Show.Generic (genericShow) -import Data.Traversable (traverse) +import Data.Traversable (for) import Partial.Unsafe (unsafePartial) -class AttachableRedeemer r where - attachRedeemers :: Array r -> Transaction -> Transaction +attachRedeemers :: Array Redeemer -> Transaction -> Transaction +attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers -instance AttachableRedeemer Redeemer where - attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers - -instance AttachableRedeemer IndexedRedeemer where - attachRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer +attachIndexedRedeemers :: Array IndexedRedeemer -> Transaction -> Transaction +attachIndexedRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer -- | Redeemer that hasn't yet been indexed, that tracks its purpose info -- | that is enough to find its index given a `RedeemersContext`. @@ -54,6 +60,7 @@ derive newtype instance EncodeAeson UnindexedRedeemer instance Show UnindexedRedeemer where show = genericShow +-- | Ignore the value that the redeemer points to redeemerPurposeToRedeemerTag :: RedeemerPurpose -> RedeemerTag redeemerPurposeToRedeemerTag = case _ of ForSpend _ -> Spend @@ -107,6 +114,8 @@ redeemerToIndexedRedeemer -- | Contains a value redeemer corresponds to, different for each possible -- | `RedeemerTag`. +-- | Allows to uniquely compute redeemer index, given a `RedeemersContext` that +-- | is valid for the transaction. data RedeemerPurpose = ForSpend TransactionInput | ForMint MintingPolicyHash @@ -150,9 +159,9 @@ mkRedeemersContext indexRedeemers :: RedeemersContext -> Array UnindexedRedeemer - -> Maybe (Array IndexedRedeemer) + -> Either UnindexedRedeemer (Array IndexedRedeemer) indexRedeemers ctx redeemers = do - traverse (indexRedeemer ctx) redeemers + for redeemers \redeemer -> note redeemer $ indexRedeemer ctx redeemer indexRedeemer :: RedeemersContext -> UnindexedRedeemer -> Maybe IndexedRedeemer indexRedeemer ctx (UnindexedRedeemer { purpose, datum }) = case purpose of diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index 2a5c8cb32..1c0c43ee5 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -3,26 +3,21 @@ module Ctl.Internal.BalanceTx.UnattachedTx , UnindexedTx , IndexedTx , EvaluatedTx - , PrebalancedTx(PrebalancedTx) , indexTx ) where import Prelude -import Aeson (class EncodeAeson) import Ctl.Internal.BalanceTx.RedeemerIndex ( IndexedRedeemer , UnindexedRedeemer - , attachRedeemers + , attachIndexedRedeemers , indexRedeemers , mkRedeemersContext ) import Ctl.Internal.Cardano.Types.Transaction (Redeemer, Transaction) import Ctl.Internal.Types.Datum (Datum) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) +import Data.Either (Either) type UnattachedTx redeemer = { transaction :: Transaction @@ -30,25 +25,20 @@ type UnattachedTx redeemer = , redeemers :: Array redeemer } +-- | A Tx with unindexed redeemers type UnindexedTx = UnattachedTx UnindexedRedeemer -type IndexedTx = UnattachedTx IndexedRedeemer -type EvaluatedTx = UnattachedTx Redeemer -newtype PrebalancedTx = PrebalancedTx UnindexedTx +-- | A Tx with indexed, but not yet evaluated redeemers +type IndexedTx = UnattachedTx IndexedRedeemer -derive instance Generic PrebalancedTx _ -derive instance Newtype PrebalancedTx _ -derive newtype instance Eq PrebalancedTx -derive newtype instance EncodeAeson PrebalancedTx +-- | A Tx with fully indexed and evaluated redeemers +type EvaluatedTx = UnattachedTx Redeemer -indexTx :: UnindexedTx -> Maybe IndexedTx +indexTx :: UnindexedTx -> Either UnindexedRedeemer IndexedTx indexTx { transaction, datums, redeemers } = do redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers pure - { transaction: attachRedeemers redeemers' transaction + { transaction: attachIndexedRedeemers redeemers' transaction , datums , redeemers: redeemers' } - -instance Show PrebalancedTx where - show = genericShow diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index d913b7bc0..8cde5af4c 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -33,10 +33,6 @@ module Ctl.Internal.Types.ScriptLookups ) , ScriptLookups(ScriptLookups) , UnattachedUnbalancedTx(UnattachedUnbalancedTx) - , UnattachedUnbalancedIndexedTx(UnattachedUnbalancedIndexedTx) - , UnattachedUnbalancedIndexedEvaluatedTx - ( UnattachedUnbalancedIndexedEvaluatedTx - ) , generalise , mintingPolicy , mintingPolicyM @@ -57,7 +53,6 @@ module Ctl.Internal.Types.ScriptLookups import Prelude hiding (join) -import Aeson (class EncodeAeson) import Contract.Hashing (plutusScriptStakeValidatorHash) import Control.Monad.Error.Class (catchError, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) @@ -66,8 +61,7 @@ import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.Address (addressPaymentValidatorHash) import Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer - , RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) , UnindexedRedeemer(UnindexedRedeemer) , unindexedRedeemerToRedeemer ) @@ -81,11 +75,9 @@ import Ctl.Internal.Cardano.Types.Transaction , StakeRegistration ) , Costmdls - , Redeemer , Transaction , TransactionOutput(TransactionOutput) , TransactionWitnessSet(TransactionWitnessSet) - , TxBody , _body , _certs , _inputs @@ -244,13 +236,7 @@ import Ctl.Internal.Types.TypedValidator , TypedValidator(TypedValidator) ) import Ctl.Internal.Types.TypedValidator (generalise) as TV -import Ctl.Internal.Types.UnbalancedTransaction - ( PaymentPubKey - , UnbalancedTx - , _transaction - , _utxoIndex - , emptyUnbalancedTx - ) +import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey, UnbalancedTx) import Data.Array (cons, partition, toUnfoldable, zip) import Data.Array (singleton, union, (:)) as Array import Data.Bifunctor (lmap) @@ -482,7 +468,8 @@ instance Semigroup ValueSpentBalances where -- This is the state for essentially creating an unbalanced transaction. type ConstraintProcessingState (a :: Type) = - { unbalancedTx :: UnbalancedTx + { transaction :: UnbalancedTx + , utxoIndex :: Map TransactionInput TransactionOutput -- The unbalanced transaction that we're building , valueSpentBalancesInputs :: ValueSpentBalances -- Balance of the values given and required for the transaction's inputs @@ -503,11 +490,15 @@ type ConstraintProcessingState (a :: Type) = , costModels :: Costmdls } --- We could make these signatures polymorphic but they're not exported so don't --- bother. -_unbalancedTx - :: forall (a :: Type). Lens' (ConstraintProcessingState a) UnbalancedTx -_unbalancedTx = prop (SProxy :: SProxy "unbalancedTx") +_cpsTransaction + :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction +_cpsTransaction = prop (SProxy :: SProxy "transaction") <<< _Newtype + +_cpsUtxoIndex + :: forall (a :: Type) + . Lens' (ConstraintProcessingState a) + (Map TransactionInput TransactionOutput) +_cpsUtxoIndex = prop (SProxy :: SProxy "utxoIndex") _valueSpentBalancesInputs :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances @@ -637,7 +628,8 @@ runConstraintsM lookups txConstraints = do let initCps :: ConstraintProcessingState validator initCps = - { unbalancedTx: emptyUnbalancedTx + { transaction: wrap mempty + , utxoIndex: Map.empty , valueSpentBalancesInputs: ValueSpentBalances { required: mempty, provided: mempty } , valueSpentBalancesOutputs: @@ -670,12 +662,13 @@ mkUnbalancedTx' -> TxConstraints redeemer datum -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx' scriptLookups txConstraints = - runConstraintsM scriptLookups txConstraints <#> map _.unbalancedTx + runConstraintsM scriptLookups txConstraints <#> map _.transaction -- | A newtype for the unbalanced transaction after creating one with datums -- | and redeemers not attached newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx - { unbalancedTx :: UnbalancedTx -- the unbalanced tx created + { transaction :: UnbalancedTx -- the unbalanced tx created + , utxoIndex :: Map TransactionInput TransactionOutput , datums :: Array Datum -- the array of ordered datums that require attaching , redeemers :: Array UnindexedRedeemer } @@ -683,45 +676,11 @@ newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx derive instance Generic UnattachedUnbalancedTx _ derive instance Newtype UnattachedUnbalancedTx _ derive newtype instance Eq UnattachedUnbalancedTx -derive newtype instance EncodeAeson UnattachedUnbalancedTx +-- derive newtype instance EncodeAeson UnattachedUnbalancedTx instance Show UnattachedUnbalancedTx where show = genericShow --- | A newtype for the unbalanced transaction after creating one with datums --- | and redeemers not attached, but already indexed -newtype UnattachedUnbalancedIndexedTx = UnattachedUnbalancedIndexedTx - { unbalancedTx :: UnbalancedTx -- the unbalanced tx created - , datums :: Array Datum -- the array of ordered datums that require attaching - , redeemers :: Array IndexedRedeemer - } - -derive instance Generic UnattachedUnbalancedIndexedTx _ -derive instance Newtype UnattachedUnbalancedIndexedTx _ -derive newtype instance Eq UnattachedUnbalancedIndexedTx -derive newtype instance EncodeAeson UnattachedUnbalancedIndexedTx - -instance Show UnattachedUnbalancedIndexedTx where - show = genericShow - --- | A newtype for the unbalanced transaction after creating one with datums --- | and redeemers not attached, but already indexed -newtype UnattachedUnbalancedIndexedEvaluatedTx = - UnattachedUnbalancedIndexedEvaluatedTx - { unbalancedTx :: UnbalancedTx -- the unbalanced tx created - , datums :: - Array Datum -- the array of ordered datums that require attaching - , redeemers :: Array Redeemer - } - -derive instance Generic UnattachedUnbalancedIndexedEvaluatedTx _ -derive instance Newtype UnattachedUnbalancedIndexedEvaluatedTx _ -derive newtype instance Eq UnattachedUnbalancedIndexedEvaluatedTx -derive newtype instance EncodeAeson UnattachedUnbalancedIndexedEvaluatedTx - -instance Show UnattachedUnbalancedIndexedEvaluatedTx where - show = genericShow - -- | An implementation that strips `witnessSet` and data hash from -- | returned `UnbalancedTx` in order to calculate them later on server. -- | It returns part of the `ConstraintProcessingState` for later consumption by @@ -737,19 +696,19 @@ mkUnbalancedTx -> Contract (Either MkUnbalancedTxError UnattachedUnbalancedTx) mkUnbalancedTx scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ unbalancedTx, datums, redeemers } -> + \{ transaction, datums, redeemers, utxoIndex } -> let - stripScriptDataHash :: UnbalancedTx -> UnbalancedTx - stripScriptDataHash uTx = - uTx # _transaction <<< _body <<< _scriptDataHash .~ Nothing + stripScriptDataHash :: Transaction -> Transaction + stripScriptDataHash = + _body <<< _scriptDataHash .~ Nothing - stripDatumsRedeemers :: UnbalancedTx -> UnbalancedTx - stripDatumsRedeemers uTx = uTx # _transaction <<< _witnessSet %~ + stripDatumsRedeemers :: Transaction -> Transaction + stripDatumsRedeemers = _witnessSet %~ over TransactionWitnessSet _ { plutusData = Nothing, redeemers = Nothing } - tx = stripDatumsRedeemers $ stripScriptDataHash unbalancedTx + tx = stripDatumsRedeemers $ stripScriptDataHash $ unwrap transaction in - wrap { unbalancedTx: tx, datums, redeemers } + wrap { transaction: wrap tx, datums, redeemers, utxoIndex } -- | Adds a placeholder for ScriptDataHash. It will be wrong at this stage, -- | because ExUnits hasn't been estimated yet. It will serve as a @@ -762,10 +721,10 @@ addFakeScriptDataHash = runExceptT do costModels <- use _costModels -- Use both script and minting redeemers in the order they were appended. reds <- use (_redeemers <<< to (map unindexedRedeemerToRedeemer)) - tx <- use (_unbalancedTx <<< _transaction) + tx <- use _cpsTransaction tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> Right - _cpsToTransaction .= tx' + _cpsTransaction .= tx' -- | Add the remaining balance of the total value that the tx must spend. -- | See note [Balance of value spent] @@ -786,27 +745,19 @@ addMissingValueSpent = do pkh' = lookups.ownPaymentPubKeyHash skh' = lookups.ownStakePubKeyHash -- Potential fix me: This logic may be suspect: - txOut <- case pkh', skh' of + txOutAddress <- case pkh', skh' of Nothing, Nothing -> throwError OwnPubKeyAndStakeKeyMissing - Just pkh, Just skh -> pure $ TransactionOutput - { address: payPubKeyHashBaseAddress networkId pkh skh - , amount: missing - , datum: NoOutputDatum - , scriptRef: Nothing - } - Just pkh, Nothing -> pure $ TransactionOutput - { address: payPubKeyHashEnterpriseAddress networkId pkh - , amount: missing - , datum: NoOutputDatum - , scriptRef: Nothing - } - Nothing, Just skh -> pure $ TransactionOutput - { address: stakePubKeyHashRewardAddress networkId skh + Just pkh, Just skh -> pure $ payPubKeyHashBaseAddress networkId pkh skh + Just pkh, Nothing -> pure $ payPubKeyHashEnterpriseAddress networkId pkh + Nothing, Just skh -> pure $ stakePubKeyHashRewardAddress networkId skh + let + txOut = TransactionOutput + { address: txOutAddress , amount: missing , datum: NoOutputDatum , scriptRef: Nothing } - _cpsToTxBody <<< _outputs %= Array.(:) txOut + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut updateUtxoIndex :: forall (a :: Type) @@ -821,7 +772,7 @@ updateUtxoIndex = runExceptT do (txOutputs `union` refScriptsUtxoMap) <#> fromPlutusTxOutputWithRefScript networkId -- Left bias towards original map, hence `flip`: - _unbalancedTx <<< _utxoIndex %= flip union cTxOutputs + _cpsUtxoIndex %= flip union cTxOutputs -- Note, we don't use the redeemer here, unlike Plutus because of our lack of -- `TxIn` datatype. @@ -850,7 +801,7 @@ addOwnInput _pd (InputConstraint { txOutRef }) = do <#> lmap TypeCheckFailed let value = typedTxOutRefValue typedTxOutRef -- Must be inserted in order. Hopefully this matches the order under CSL - _cpsToTxBody <<< _inputs %= Set.insert txOutRef + _cpsTransaction <<< _body <<< _inputs %= Set.insert txOutRef _valueSpentBalancesInputs <>= provideValue value -- | Add a typed output and return its value. @@ -876,7 +827,7 @@ addOwnOutput (OutputConstraint { datum: d, value }) = do dat <- ExceptT $ liftAff $ queryHandle.getDatumByHash dHash <#> hush >>> Bind.join >>> note (CannotQueryDatum dHash) - _cpsToTxBody <<< _outputs %= Array.(:) txOut + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut ExceptT $ addDatum dat _valueSpentBalancesOutputs <>= provideValue value' @@ -1002,11 +953,12 @@ processScriptRefUnspentOut processScriptRefUnspentOut scriptHash inputWithRefScript = do unspentOut <- case inputWithRefScript of SpendInput unspentOut -> do - _cpsToTxBody <<< _inputs %= Set.insert (_.input <<< unwrap $ unspentOut) + _cpsTransaction <<< _body <<< _inputs %= Set.insert + (_.input <<< unwrap $ unspentOut) pure unspentOut RefInput unspentOut -> do let refInput = (unwrap unspentOut).input - _cpsToTxBody <<< _referenceInputs %= Set.insert refInput + _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput pure unspentOut updateRefScriptsUtxoMap unspentOut @@ -1073,7 +1025,7 @@ processConstraint mpsMap osMap c = do systemStart posixTimeRange <#> lmap (CannotConvertPOSIXTimeRange posixTimeRange) - _cpsToTxBody <<< _Newtype %= + _cpsTransaction <<< _body <<< _Newtype %= _ { ttl = timeToLive , validityStartInterval = validityStartInterval @@ -1083,7 +1035,8 @@ processConstraint mpsMap osMap c = do -- the corresponding `paymentPubKey` lookup. In the next major version, -- we might wish to revise this -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 - _cpsToTxBody <<< _requiredSigners <>= Just [ wrap $ unwrap $ unwrap pkh ] + _cpsTransaction <<< _body <<< _requiredSigners <>= Just + [ wrap $ unwrap $ unwrap pkh ] MustSpendAtLeast plutusValue -> do let value = fromPlutusValue plutusValue runExceptT $ _valueSpentBalancesInputs <>= requireValue value @@ -1095,7 +1048,7 @@ processConstraint mpsMap osMap c = do -- POTENTIAL FIX ME: Plutus has Tx.TxIn and Tx.PubKeyTxIn -- TxIn -- keeps track TransactionInput and TxInType (the input type, whether -- consuming script, public key or simple script) - _cpsToTxBody <<< _inputs %= Set.insert txo + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo _valueSpentBalancesInputs <>= provideValue amount MustSpendScriptOutput txo red scriptRefUnspentOut -> runExceptT do txOut <- ExceptT $ lookupTxOutRef txo scriptRefUnspentOut @@ -1130,7 +1083,7 @@ processConstraint mpsMap osMap c = do ExceptT $ addDatum dat OutputDatum _ -> pure unit NoOutputDatum -> throwError CannotFindDatum - _cpsToTxBody <<< _inputs %= Set.insert txo + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo let uiRedeemer = UnindexedRedeemer { purpose: ForSpend txo @@ -1139,10 +1092,10 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ uiRedeemer ] _valueSpentBalancesInputs <>= provideValue amount MustSpendNativeScriptOutput txo ns -> runExceptT do - _cpsToTxBody <<< _inputs %= Set.insert txo + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo ExceptT $ attachToCps attachNativeScript ns MustReferenceOutput refInput -> runExceptT do - _cpsToTxBody <<< _referenceInputs %= Set.insert refInput + _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput MustMintValue mpsHash red tn i scriptRefUnspentOut -> runExceptT do case scriptRefUnspentOut of Nothing -> do @@ -1185,7 +1138,7 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] -- Remove mint redeemers from array before reindexing. - _cpsToTxBody <<< _mint <>= map wrap mintVal + _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal MustMintValueUsingNativeScript ns tn i -> runExceptT do let mpHash = wrap <<< unwrap <<< nativeScriptHash $ ns @@ -1208,7 +1161,7 @@ processConstraint mpsMap osMap c = do _valueSpentBalancesOutputs <>= provideValue v pure $ map getNonAdaAsset $ value i - _cpsToTxBody <<< _mint <>= map wrap mintVal + _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal MustPayToPubKeyAddress pkh skh mDatum scriptRef plutusValue -> do networkId <- getNetworkId @@ -1229,7 +1182,7 @@ processConstraint mpsMap osMap c = do , datum: fromMaybe NoOutputDatum datum' , scriptRef: scriptRef } - _cpsToTxBody <<< _outputs %= Array.(:) txOut + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount MustPayToScript vlh mbCredential dat datp scriptRef plutusValue -> do networkId <- getNetworkId @@ -1251,7 +1204,7 @@ processConstraint mpsMap osMap c = do } -- Note we don't `addDatum` as this included as part of `mustPayToScript` -- constraint already. - _cpsToTxBody <<< _outputs %= Array.(:) txOut + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount MustPayToNativeScript nsh mbCredential plutusValue -> do networkId <- getNetworkId @@ -1271,7 +1224,7 @@ processConstraint mpsMap osMap c = do , datum: NoOutputDatum , scriptRef: Nothing } - _cpsToTxBody <<< _outputs %= Array.(:) txOut + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount MustHashDatum dh dt -> do let dh' = Hashing.datumHash dt @@ -1350,7 +1303,7 @@ processConstraint mpsMap osMap c = do let rewardAddress = RewardAddress.stakePubKeyHashRewardAddress networkId spkh - _cpsToTxBody <<< _withdrawals <<< non Map.empty %= + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= Map.insert rewardAddress (fromMaybe (Coin zero) rewards) MustWithdrawStakePlutusScript stakeValidator redeemerData -> runExceptT do let hash = plutusScriptStakeValidatorHash stakeValidator @@ -1363,7 +1316,7 @@ processConstraint mpsMap osMap c = do ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsPlutusScript stakeValidator) mbRewards - _cpsToTxBody <<< _withdrawals <<< non Map.empty %= + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= Map.insert rewardAddress (fromMaybe (Coin zero) rewards) _redeemers <>= [ UnindexedRedeemer @@ -1381,7 +1334,7 @@ processConstraint mpsMap osMap c = do ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsNativeScript stakeValidator) mbRewards - _cpsToTxBody <<< _withdrawals <<< non Map.empty %= + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= Map.insert rewardAddress (fromMaybe (Coin zero) rewards) ExceptT $ attachToCps attachNativeScript (unwrap stakeValidator) MustSatisfyAnyOf xs -> do @@ -1412,7 +1365,7 @@ processConstraint mpsMap osMap c = do ys tryNext (toUnfoldable $ map toUnfoldable xs) MustNotBeValid -> runExceptT do - _cpsToTransaction <<< _isValid .= false + _cpsTransaction <<< _isValid .= false where outputDatum :: Datum @@ -1435,11 +1388,11 @@ attachToCps -> a -- Redeemer, Datum, or PlutusScript. -> ConstraintsM b (Either MkUnbalancedTxError Unit) attachToCps handler object = do - tx <- use (_unbalancedTx <<< _transaction) + tx <- use _cpsTransaction newTx <- liftEffect $ handler object tx <#> lmap ModifyTx either (pure <<< throwError) - (map Right <<< (.=) (_unbalancedTx <<< _transaction)) + (map Right <<< (.=) _cpsTransaction) newTx -- Attaches datum to the transaction and to Array of datums in the state. @@ -1458,19 +1411,10 @@ addCertificate . Certificate -> ConstraintsM a Unit addCertificate cert = do - _cpsToTxBody <<< _certs <<< non [] %= Array.(:) cert - --- Helper to focus from `ConstraintProcessingState` down to `Transaction`. -_cpsToTransaction - :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction -_cpsToTransaction = _unbalancedTx <<< _transaction - --- Helper to focus from `ConstraintProcessingState` down to `TxBody`. -_cpsToTxBody :: forall (a :: Type). Lens' (ConstraintProcessingState a) TxBody -_cpsToTxBody = _cpsToTransaction <<< _body + _cpsTransaction <<< _body <<< _certs <<< non [] %= Array.(:) cert getNetworkId :: forall (a :: Type) . ConstraintsM a NetworkId -getNetworkId = use (_cpsToTxBody <<< _networkId) +getNetworkId = use (_cpsTransaction <<< _body <<< _networkId) >>= maybe (asks _.networkId) pure diff --git a/src/Internal/Types/UnbalancedTransaction.purs b/src/Internal/Types/UnbalancedTransaction.purs index a5bd81a2a..e58d4f742 100644 --- a/src/Internal/Types/UnbalancedTransaction.purs +++ b/src/Internal/Types/UnbalancedTransaction.purs @@ -2,8 +2,6 @@ module Ctl.Internal.Types.UnbalancedTransaction ( PaymentPubKey(PaymentPubKey) , ScriptDatum(ScriptDatum, ScriptDatumHash) , UnbalancedTx(UnbalancedTx) - , _transaction - , _utxoIndex , emptyUnbalancedTx , payPubKeyRequiredSigner , payPubKeyVkey @@ -11,26 +9,22 @@ module Ctl.Internal.Types.UnbalancedTransaction import Prelude -import Aeson (class EncodeAeson, encodeAeson) +import Aeson (class EncodeAeson) import Ctl.Internal.Cardano.Types.Transaction ( PublicKey , RequiredSigner(RequiredSigner) , Transaction - , TransactionOutput , Vkey(Vkey) , convertPubKey ) -import Ctl.Internal.Helpers (encodeMap, encodeTagged') +import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Serialization (publicKeyHash) import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) -import Data.Lens (lens') +import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Types (Lens') -import Data.Map (Map, empty) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -import Data.Tuple (Tuple(Tuple)) -- Plutus has a type called `PubKey` which we replace with `PublicKey` newtype PaymentPubKey = PaymentPubKey PublicKey @@ -68,10 +62,7 @@ payPubKeyRequiredSigner (PaymentPubKey pk) = -- | An unbalanced transaction. It needs to be balanced and signed before it -- | can be submitted to the ledger. -- | Resembles `UnbalancedTx` from `plutus-apps`. -newtype UnbalancedTx = UnbalancedTx - { transaction :: Transaction - , utxoIndex :: Map TransactionInput TransactionOutput - } +newtype UnbalancedTx = UnbalancedTx Transaction derive instance Newtype UnbalancedTx _ derive instance Generic UnbalancedTx _ @@ -80,24 +71,5 @@ derive newtype instance Eq UnbalancedTx instance Show UnbalancedTx where show = genericShow -instance EncodeAeson UnbalancedTx where - encodeAeson (UnbalancedTx r) = encodeAeson $ r - { utxoIndex = encodeMap r.utxoIndex - } - -_transaction :: Lens' UnbalancedTx Transaction -_transaction = lens' - \(UnbalancedTx rec@{ transaction }) -> - Tuple - transaction - \tx -> UnbalancedTx rec { transaction = tx } - -_utxoIndex :: Lens' UnbalancedTx (Map TransactionInput TransactionOutput) -_utxoIndex = lens' - \(UnbalancedTx rec@{ utxoIndex }) -> - Tuple - utxoIndex - \utxoIx -> UnbalancedTx rec { utxoIndex = utxoIx } - emptyUnbalancedTx :: UnbalancedTx -emptyUnbalancedTx = UnbalancedTx { transaction: mempty, utxoIndex: empty } +emptyUnbalancedTx = UnbalancedTx mempty diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 7a1f9cce7..d04e76fb0 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -30,9 +30,8 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromInt, toInt) as BigNum import Ctl.Internal.Types.Interval (Interval) -import Ctl.Internal.Types.UnbalancedTransaction (_transaction) import Data.BigInt (fromString) as BigInt -import Data.Lens (view) +import Data.Lens ((^.)) import Effect.Aff (Aff) import Effect.Exception (error) import Mote (group, test) @@ -152,7 +151,7 @@ getTimeFromUnbalanced :: UnattachedUnbalancedTx -> Contract (Interval POSIXTime) getTimeFromUnbalanced utx = validityToPosixTime $ unwrap body where - body = (_transaction <<< _body) `view` (unwrap utx).unbalancedTx + body = (utx # unwrap >>> _.transaction >>> unwrap) ^. _body toPosixTime :: Slot -> Contract POSIXTime toPosixTime time = do @@ -206,4 +205,3 @@ validityToPosixTime { validityStartInterval, ttl: timeToLive } = mkPosixTime :: String -> POSIXTime mkPosixTime = wrap <<< unsafePartial fromJust <<< BigInt.fromString - From 511f174d69480e8f2746e4d4c4f13dc0a408dcd4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 18:55:57 +0400 Subject: [PATCH 107/478] remove emptyUnbalancedTx --- src/Contract/Transaction.purs | 1 - src/Internal/Types/UnbalancedTransaction.purs | 8 ++------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 82a358deb..073cfa838 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -264,7 +264,6 @@ import Ctl.Internal.Types.Transaction ) import Ctl.Internal.Types.UnbalancedTransaction ( UnbalancedTx(UnbalancedTx) - , emptyUnbalancedTx ) as UnbalancedTx import Ctl.Internal.Types.UsedTxOuts ( UsedTxOuts diff --git a/src/Internal/Types/UnbalancedTransaction.purs b/src/Internal/Types/UnbalancedTransaction.purs index e58d4f742..f4bc0c0cf 100644 --- a/src/Internal/Types/UnbalancedTransaction.purs +++ b/src/Internal/Types/UnbalancedTransaction.purs @@ -2,7 +2,6 @@ module Ctl.Internal.Types.UnbalancedTransaction ( PaymentPubKey(PaymentPubKey) , ScriptDatum(ScriptDatum, ScriptDatumHash) , UnbalancedTx(UnbalancedTx) - , emptyUnbalancedTx , payPubKeyRequiredSigner , payPubKeyVkey ) where @@ -21,8 +20,6 @@ import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Serialization (publicKeyHash) import Ctl.Internal.Types.Datum (DataHash, Datum) import Data.Generic.Rep (class Generic) -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Types (Lens') import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) @@ -67,9 +64,8 @@ newtype UnbalancedTx = UnbalancedTx Transaction derive instance Newtype UnbalancedTx _ derive instance Generic UnbalancedTx _ derive newtype instance Eq UnbalancedTx +derive newtype instance Semigroup UnbalancedTx +derive newtype instance Monoid UnbalancedTx instance Show UnbalancedTx where show = genericShow - -emptyUnbalancedTx :: UnbalancedTx -emptyUnbalancedTx = UnbalancedTx mempty From 6315e837808a50a72c175e7df5cd8ca557b433d7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 30 Jan 2023 13:32:22 +0400 Subject: [PATCH 108/478] Add a test for multiple certs --- src/Internal/Types/ScriptLookups.purs | 1 + test/Plutip/Staking.purs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 8cde5af4c..bf5fc5b8e 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1257,6 +1257,7 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] + void $ lift $ addCertificate cert ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) MustDeregisterStakeNativeScript stakeValidator -> do void $ addCertificate $ StakeDeregistration diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 3fc8d4b70..da9f88bdc 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -195,8 +195,8 @@ suite = do -- Register do let - constraints = mustRegisterStakeScript validatorHash1 <> - mustRegisterStakeScript validatorHash2 + constraints = mustRegisterStakeScript validatorHash1 + <> mustRegisterStakeScript validatorHash2 lookups :: Lookups.ScriptLookups Void lookups = From 6015ae8aa971ee64fdbc4858030ce71ab33e7ee4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 20:06:42 +0400 Subject: [PATCH 109/478] Simplify lenses use --- src/Internal/BalanceTx/BalanceTx.purs | 67 +++++++++--------------- src/Internal/BalanceTx/UnattachedTx.purs | 8 +++ 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 81cda5072..221d9d859 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -64,7 +64,6 @@ import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ) import Ctl.Internal.BalanceTx.RedeemerIndex ( attachIndexedRedeemers - , attachRedeemers , indexRedeemers , mkRedeemersContext ) @@ -81,7 +80,12 @@ import Ctl.Internal.BalanceTx.Types , withBalanceTxConstraints ) import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction -import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, UnindexedTx, indexTx) +import Ctl.Internal.BalanceTx.UnattachedTx + ( EvaluatedTx + , UnindexedTx + , _transaction + , indexTx + ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.Cardano.Types.Transaction ( Certificate(StakeRegistration, StakeDeregistration) @@ -153,8 +157,6 @@ import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) import Data.Lens.Getter ((^.)) -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet) import Data.Log.Tag (fromArray, tag) as TagSet @@ -168,7 +170,6 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -import Type.Proxy (Proxy(Proxy)) type UtxoIx = Map TransactionInput TransactionOutput @@ -264,18 +265,16 @@ balanceTxWithConstraints transaction index constraintsBuilder = do transactionWithNetworkId :: BalanceTxM Transaction transactionWithNetworkId = do networkId <- maybe askNetworkId pure - ( transaction ^. prop (Proxy :: Proxy "transaction") <<< _body <<< - _networkId - ) + (transaction ^. _transaction <<< _body <<< _networkId) pure (transaction.transaction # _body <<< _networkId ?~ networkId) - setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction - setTransactionCollateral changeAddr tx = do - collateral <- - liftEitherContract $ note CouldNotGetCollateral <$> - Wallet.getWalletCollateral - let collaterisedTx = addTxCollateral collateral tx - addTxCollateralReturn collateral collaterisedTx changeAddr +setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction +setTransactionCollateral changeAddr transaction = do + collateral <- + liftEitherContract $ note CouldNotGetCollateral <$> + Wallet.getWalletCollateral + addTxCollateralReturn collateral (addTxCollateral collateral transaction) + changeAddr -------------------------------------------------------------------------------- -- Balancing Algorithm @@ -329,10 +328,7 @@ runBalancer p = do -- out utxos which use plutusv2 features if so. txHasPlutusV1 :: Boolean txHasPlutusV1 = - case - p.transaction ^. prop (Proxy :: Proxy "transaction") <<< _witnessSet <<< - _plutusScripts - of + case p.transaction ^. _transaction <<< _witnessSet <<< _plutusScripts of Just scripts -> flip Array.any scripts case _ of PlutusScript (_ /\ PlutusV1) -> true _ -> false @@ -366,9 +362,8 @@ runBalancer p = do spendable :: Boolean spendable = not $ Set.member oref nonSpendableInputs || Set.member oref - ( p.transaction ^. prop (Proxy :: Proxy "transaction") - <<< _body - <<< _referenceInputs + ( p.transaction ^. _transaction <<< _body <<< + _referenceInputs ) validInContext :: Boolean @@ -410,13 +405,9 @@ runBalancer p = do performMultiAssetSelection p.strategy leftoverUtxos (lovelaceValueOf one) runNextBalancerStep $ state - { transaction = - transaction - # - ( prop (Proxy :: Proxy "transaction") <<< _body <<< - _inputs %~ - Set.union (selectedInputs selectionState) - ) + { transaction = transaction # + _transaction <<< _body <<< _inputs %~ Set.union + (selectedInputs selectionState) , leftoverUtxos = selectionState ^. _leftoverUtxos } @@ -427,8 +418,7 @@ runBalancer p = do false -> runNextBalancerStep $ state { transaction = transaction - # prop (Proxy :: Proxy "transaction") <<< _body <<< _fee .~ - Coin newMinFee + # _transaction <<< _body <<< _fee .~ Coin newMinFee , minFee = newMinFee } @@ -470,9 +460,7 @@ runBalancer p = do performCoinSelection <#> \selectionState -> state { transaction = ( transaction # - prop (Proxy :: Proxy "transaction") <<< _Newtype - <<< prop (Proxy :: Proxy "body") - <<< _inputs %~ + _transaction <<< _body <<< _inputs %~ Set.union (selectedInputs selectionState) ) , leftoverUtxos = @@ -515,12 +503,10 @@ addLovelacesToTransactionOutputs addLovelacesToTransactionOutputs transaction = map ( \txOutputs -> transaction # - prop (Proxy :: Proxy "transaction") <<< _body <<< _outputs .~ txOutputs + _transaction <<< _body <<< _outputs .~ txOutputs ) $ traverse addLovelacesToTransactionOutput - ( transaction ^. prop (Proxy :: Proxy "transaction") <<< _body <<< - _outputs - ) + (transaction ^. _transaction <<< _body <<< _outputs) addLovelacesToTransactionOutput :: TransactionOutput -> BalanceTxM TransactionOutput @@ -544,10 +530,7 @@ addLovelacesToTransactionOutput txOutput = do setTxChangeOutputs :: Array TransactionOutput -> UnindexedTx -> UnindexedTx setTxChangeOutputs outputs tx = - tx # - prop (Proxy :: Proxy "transaction") <<< _Newtype - <<< prop (Proxy :: Proxy "body") - <<< _outputs %~ flip append outputs + tx # _transaction <<< _body <<< _outputs %~ flip append outputs -------------------------------------------------------------------------------- -- Making change diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index 1c0c43ee5..49f1345cd 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -4,6 +4,7 @@ module Ctl.Internal.BalanceTx.UnattachedTx , IndexedTx , EvaluatedTx , indexTx + , _transaction ) where import Prelude @@ -18,6 +19,9 @@ import Ctl.Internal.BalanceTx.RedeemerIndex import Ctl.Internal.Cardano.Types.Transaction (Redeemer, Transaction) import Ctl.Internal.Types.Datum (Datum) import Data.Either (Either) +import Data.Lens (Lens') +import Data.Lens.Record (prop) +import Type.Proxy (Proxy(Proxy)) type UnattachedTx redeemer = { transaction :: Transaction @@ -42,3 +46,7 @@ indexTx { transaction, datums, redeemers } = do , datums , redeemers: redeemers' } + +_transaction + :: forall (redeemer :: Type). Lens' (UnattachedTx redeemer) Transaction +_transaction = prop (Proxy :: Proxy "transaction") From c85754817b7c6de4231ba90db57c5a35dd66ef23 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 20:14:28 +0400 Subject: [PATCH 110/478] Use lenses more --- src/Internal/BalanceTx/BalanceTx.purs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 221d9d859..ac21cd35a 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -430,17 +430,14 @@ runBalancer p = do runNextBalancerStep :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction runNextBalancerStep state@{ transaction } = do - let txBody = transaction # _.transaction >>> unwrap >>> _.body + let txBody = transaction ^. _transaction <<< _body inputValue <- except $ getInputValue p.allUtxos txBody changeOutputs <- makeChange p.changeAddress inputValue p.certsFee txBody requiredValue <- except $ getRequiredValue p.certsFee p.allUtxos - ( setTxChangeOutputs changeOutputs transaction # - _.transaction - >>> unwrap - >>> _.body - ) + $ setTxChangeOutputs changeOutputs transaction ^. _transaction <<< + _body worker $ -- state { changeOutputs = changeOutputs } # @@ -471,10 +468,8 @@ runBalancer p = do performCoinSelection = let txBody :: TxBody - txBody = setTxChangeOutputs changeOutputs transaction # - _.transaction - >>> unwrap - >>> _.body + txBody = setTxChangeOutputs changeOutputs transaction ^. _transaction + <<< _body in except (getRequiredValue p.certsFee p.allUtxos txBody) >>= performMultiAssetSelection p.strategy leftoverUtxos From d6f91b75a2cda53d7161e6924978274e5061ab94 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 20:37:27 +0400 Subject: [PATCH 111/478] - get rid of UnbalancedTx - Remove unwanted change (nonAdaAsset shouldn't be a newtype) --- src/Contract/AuxiliaryData.purs | 8 ++-- src/Contract/Transaction.purs | 8 +--- src/Internal/BalanceTx/RedeemerIndex.purs | 4 +- src/Internal/Cardano/Types/Value.purs | 9 +++-- src/Internal/Serialization.purs | 3 +- src/Internal/Types/ScriptLookups.purs | 39 ++++++++++--------- src/Internal/Types/UnbalancedTransaction.purs | 15 ------- test/BalanceTx/Time.purs | 4 +- test/Ogmios/Aeson.purs | 3 +- 9 files changed, 39 insertions(+), 54 deletions(-) diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 1515faa4a..0daa2c5af 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -11,6 +11,7 @@ import Contract.ScriptLookups (UnattachedUnbalancedTx) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash + , Transaction ) import Ctl.Internal.Cardano.Types.Transaction ( _auxiliaryData @@ -23,7 +24,6 @@ import Ctl.Internal.Metadata.MetadataType ) import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) -import Ctl.Internal.Types.UnbalancedTransaction (UnbalancedTx) import Data.Lens (lens', (?~)) import Data.Lens.Getter (view) import Data.Lens.Iso.Newtype (_Newtype) @@ -73,16 +73,16 @@ setTxMetadata tx = -- Lenses -------------------------------------------------------------------------------- -_unbalancedTx :: Lens' UnattachedUnbalancedTx UnbalancedTx +_unbalancedTx :: Lens' UnattachedUnbalancedTx Transaction _unbalancedTx = _Newtype <<< prop (Proxy :: Proxy "transaction") _auxiliaryData :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryData) _auxiliaryData = - _unbalancedTx <<< _Newtype <<< Tx._auxiliaryData + _unbalancedTx <<< Tx._auxiliaryData _auxiliaryDataHash :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryDataHash) _auxiliaryDataHash = - _unbalancedTx <<< _Newtype <<< Tx._body <<< Tx._auxiliaryDataHash + _unbalancedTx <<< Tx._body <<< Tx._auxiliaryDataHash _metadata :: Lens' AuxiliaryData (Maybe GeneralTransactionMetadata) _metadata = lens' \(AuxiliaryData rec@{ metadata }) -> diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 073cfa838..641a3de40 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -22,7 +22,6 @@ module Contract.Transaction , module ScriptRef , module Scripts , module Transaction - , module UnbalancedTx , module X , signTransaction , submit @@ -262,9 +261,6 @@ import Ctl.Internal.Types.Transaction ( TransactionHash , TransactionInput(TransactionInput) ) -import Ctl.Internal.Types.UnbalancedTransaction - ( UnbalancedTx(UnbalancedTx) - ) as UnbalancedTx import Ctl.Internal.Types.UsedTxOuts ( UsedTxOuts , lockTransactionInputs @@ -441,7 +437,7 @@ unUnattachedUnbalancedTx , utxoIndex } ) = - { transaction: unwrap transaction, datums, redeemers } /\ utxoIndex + { transaction, datums, redeemers } /\ utxoIndex -- | Attempts to balance an `UnattachedUnbalancedTx` using the specified -- | balancer constraints. @@ -480,7 +476,7 @@ balanceTxsWithConstraints unbalancedTxs = throwError e uutxToTx :: UnattachedUnbalancedTx -> Transaction - uutxToTx = unwrap <<< _.transaction <<< unwrap + uutxToTx = _.transaction <<< unwrap -- | Same as `balanceTxsWithConstraints`, but uses the default balancer -- | constraints. diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 4a8b98f04..637a2379c 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -19,7 +19,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _redeemers , _witnessSet ) -import Ctl.Internal.Cardano.Types.Value (currencyMPSHash) +import Ctl.Internal.Cardano.Types.Value (currencyMPSHash, unwrapNonAdaAsset) import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Ctl.Internal.Types.RewardAddress (RewardAddress) @@ -154,7 +154,7 @@ mkRedeemersContext , certs: fold certs } where - mintedAssets = fromMaybe Map.empty (map unwrap $ map unwrap mint) + mintedAssets = fromMaybe Map.empty (map unwrapNonAdaAsset $ map unwrap mint) indexRedeemers :: RedeemersContext diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 9fcff6cb3..5c56bdd4c 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -43,11 +43,12 @@ module Ctl.Internal.Cardano.Types.Value , numNonAdaCurrencySymbols , numTokenNames , posNonAdaAsset + , scriptHashAsCurrencySymbol , split , sumTokenNameLengths - , scriptHashAsCurrencySymbol , unionWith , unionWithNonAda + , unwrapNonAdaAsset , valueAssetClasses , valueAssets , valueOf @@ -273,7 +274,6 @@ mkUnsafeAdaSymbol byteArr = newtype NonAdaAsset = NonAdaAsset (Map CurrencySymbol (Map TokenName BigInt)) derive newtype instance Eq NonAdaAsset -derive instance Newtype NonAdaAsset _ instance Arbitrary NonAdaAsset where arbitrary = @@ -302,7 +302,7 @@ instance MeetSemilattice NonAdaAsset where meet = unionWithNonAda min instance Negate NonAdaAsset where - negation = NonAdaAsset <<< map (map negate) <<< unwrap + negation = NonAdaAsset <<< map (map negate) <<< unwrapNonAdaAsset instance Split NonAdaAsset where split (NonAdaAsset mp) = NonAdaAsset npos /\ NonAdaAsset pos @@ -363,6 +363,9 @@ equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = foldl (\quantity tn -> quantity `max` tokenQuantity tn) zero (flattenNonAdaValue nonAdaAssets) +unwrapNonAdaAsset :: NonAdaAsset -> Map CurrencySymbol (Map TokenName BigInt) +unwrapNonAdaAsset (NonAdaAsset mp) = mp + -- We shouldn't need this check if we don't export unsafeAdaSymbol etc. -- | Create a singleton `NonAdaAsset` which by definition should be safe since -- | `CurrencySymbol` and `TokenName` are safe diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 26d9408d3..9fce4b348 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -762,7 +762,8 @@ convertNetworkId = case _ of convertMint :: T.Mint -> Effect Mint convertMint (T.Mint nonAdaAssets) = do mint <- newMint - forWithIndex_ (unwrap nonAdaAssets) \scriptHashBytes' values -> do + let assetsMap = Value.unwrapNonAdaAsset nonAdaAssets + forWithIndex_ assetsMap \scriptHashBytes' values -> do let mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol scriptHashBytes' diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index bf5fc5b8e..4e04a1310 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -236,7 +236,7 @@ import Ctl.Internal.Types.TypedValidator , TypedValidator(TypedValidator) ) import Ctl.Internal.Types.TypedValidator (generalise) as TV -import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey, UnbalancedTx) +import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey) import Data.Array (cons, partition, toUnfoldable, zip) import Data.Array (singleton, union, (:)) as Array import Data.Bifunctor (lmap) @@ -468,7 +468,7 @@ instance Semigroup ValueSpentBalances where -- This is the state for essentially creating an unbalanced transaction. type ConstraintProcessingState (a :: Type) = - { transaction :: UnbalancedTx + { transaction :: Transaction , utxoIndex :: Map TransactionInput TransactionOutput -- The unbalanced transaction that we're building , valueSpentBalancesInputs :: ValueSpentBalances @@ -492,7 +492,7 @@ type ConstraintProcessingState (a :: Type) = _cpsTransaction :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction -_cpsTransaction = prop (SProxy :: SProxy "transaction") <<< _Newtype +_cpsTransaction = prop (SProxy :: SProxy "transaction") _cpsUtxoIndex :: forall (a :: Type) @@ -628,7 +628,7 @@ runConstraintsM lookups txConstraints = do let initCps :: ConstraintProcessingState validator initCps = - { transaction: wrap mempty + { transaction: mempty , utxoIndex: Map.empty , valueSpentBalancesInputs: ValueSpentBalances { required: mempty, provided: mempty } @@ -660,14 +660,14 @@ mkUnbalancedTx' => IsData redeemer => ScriptLookups validator -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError UnbalancedTx) + -> Contract (Either MkUnbalancedTxError Transaction) mkUnbalancedTx' scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map _.transaction -- | A newtype for the unbalanced transaction after creating one with datums -- | and redeemers not attached newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx - { transaction :: UnbalancedTx -- the unbalanced tx created + { transaction :: Transaction -- the unbalanced tx created , utxoIndex :: Map TransactionInput TransactionOutput , datums :: Array Datum -- the array of ordered datums that require attaching , redeemers :: Array UnindexedRedeemer @@ -697,18 +697,21 @@ mkUnbalancedTx mkUnbalancedTx scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map \{ transaction, datums, redeemers, utxoIndex } -> - let - stripScriptDataHash :: Transaction -> Transaction - stripScriptDataHash = - _body <<< _scriptDataHash .~ Nothing - - stripDatumsRedeemers :: Transaction -> Transaction - stripDatumsRedeemers = _witnessSet %~ - over TransactionWitnessSet - _ { plutusData = Nothing, redeemers = Nothing } - tx = stripDatumsRedeemers $ stripScriptDataHash $ unwrap transaction - in - wrap { transaction: wrap tx, datums, redeemers, utxoIndex } + wrap + { transaction: stripDatumsRedeemers $ stripScriptDataHash transaction + , datums + , redeemers + , utxoIndex + } + where + stripScriptDataHash :: Transaction -> Transaction + stripScriptDataHash = + _body <<< _scriptDataHash .~ Nothing + + stripDatumsRedeemers :: Transaction -> Transaction + stripDatumsRedeemers = _witnessSet %~ + over TransactionWitnessSet + _ { plutusData = Nothing, redeemers = Nothing } -- | Adds a placeholder for ScriptDataHash. It will be wrong at this stage, -- | because ExUnits hasn't been estimated yet. It will serve as a diff --git a/src/Internal/Types/UnbalancedTransaction.purs b/src/Internal/Types/UnbalancedTransaction.purs index f4bc0c0cf..b268839a5 100644 --- a/src/Internal/Types/UnbalancedTransaction.purs +++ b/src/Internal/Types/UnbalancedTransaction.purs @@ -1,7 +1,6 @@ module Ctl.Internal.Types.UnbalancedTransaction ( PaymentPubKey(PaymentPubKey) , ScriptDatum(ScriptDatum, ScriptDatumHash) - , UnbalancedTx(UnbalancedTx) , payPubKeyRequiredSigner , payPubKeyVkey ) where @@ -55,17 +54,3 @@ payPubKeyVkey (PaymentPubKey pk) = Vkey pk payPubKeyRequiredSigner :: PaymentPubKey -> RequiredSigner payPubKeyRequiredSigner (PaymentPubKey pk) = RequiredSigner <<< publicKeyHash $ convertPubKey pk - --- | An unbalanced transaction. It needs to be balanced and signed before it --- | can be submitted to the ledger. --- | Resembles `UnbalancedTx` from `plutus-apps`. -newtype UnbalancedTx = UnbalancedTx Transaction - -derive instance Newtype UnbalancedTx _ -derive instance Generic UnbalancedTx _ -derive newtype instance Eq UnbalancedTx -derive newtype instance Semigroup UnbalancedTx -derive newtype instance Monoid UnbalancedTx - -instance Show UnbalancedTx where - show = genericShow diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index d04e76fb0..7ce33b14d 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -25,13 +25,11 @@ import Contract.Time ) import Contract.TxConstraints (mustValidateIn) import Control.Monad.Except (throwError) -import Ctl.Internal.Cardano.Types.Transaction (_body) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromInt, toInt) as BigNum import Ctl.Internal.Types.Interval (Interval) import Data.BigInt (fromString) as BigInt -import Data.Lens ((^.)) import Effect.Aff (Aff) import Effect.Exception (error) import Mote (group, test) @@ -151,7 +149,7 @@ getTimeFromUnbalanced :: UnattachedUnbalancedTx -> Contract (Interval POSIXTime) getTimeFromUnbalanced utx = validityToPosixTime $ unwrap body where - body = (utx # unwrap >>> _.transaction >>> unwrap) ^. _body + body = (unwrap utx) # _.transaction >>> unwrap >>> _.body toPosixTime :: Slot -> Contract POSIXTime toPosixTime time = do diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index d1a169384..7d6ca074a 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -18,9 +18,8 @@ import Data.Array (catMaybes, elem, filter, groupAllBy, nubBy) import Data.Array.NonEmpty (NonEmptyArray, head, length, tail) import Data.Bifunctor (bimap, lmap) import Data.Either (either, hush) -import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) import Data.String.Regex (match, regex) import Data.String.Regex.Flags (noFlags) import Data.Traversable (for_, traverse) From f5bcf36e7a2ae888a9eab1065fd500152c9ce3eb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 22 Mar 2023 21:01:24 +0400 Subject: [PATCH 112/478] Rename UnattachedUnbalancedTx to UnbalancedTx --- src/Contract/AuxiliaryData.purs | 35 ++- src/Contract/ScriptLookups.purs | 10 +- src/Contract/Transaction.purs | 42 ++-- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 3 +- src/Internal/BalanceTx/Types.purs | 4 +- .../ProcessConstraints/UnbalancedTx.purs | 235 ++++++++++++++++++ src/Internal/Types/ScriptLookups.purs | 21 +- test/BalanceTx/Time.purs | 4 +- 8 files changed, 283 insertions(+), 71 deletions(-) create mode 100644 src/Internal/ProcessConstraints/UnbalancedTx.purs diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 0daa2c5af..92d321312 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -1,3 +1,4 @@ +-- | A module for setting Auxiliary Data or metadata to an `UnbalancedTx`. module Contract.AuxiliaryData ( setAuxiliaryData , setGeneralTxMetadata @@ -7,7 +8,7 @@ module Contract.AuxiliaryData import Prelude import Contract.Monad (Contract) -import Contract.ScriptLookups (UnattachedUnbalancedTx) +import Contract.ScriptLookups (UnbalancedTx) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash @@ -34,26 +35,18 @@ import Data.Tuple (Tuple(Tuple)) import Effect.Class (liftEffect) import Type.Proxy (Proxy(Proxy)) --- These functions involve `UnattachedUnbalancedTx`, --- which in turn involve `UnbalancedTx`. These functions involve ScriptOutput, --- which is the type currently being used in more recent Plutus code (as opposed to `TransactionOutput`). --- As a result, no conversion will be provided. --- It is worth noting that `UnattachedUnbalancedTx` also includes Cardano-style Redeemers, --- which must be reattached later on (see Types.ScriptLookups for more information). --- There does not appear to be a way around this. - setAuxiliaryData - :: UnattachedUnbalancedTx + :: UnbalancedTx -> AuxiliaryData - -> Contract UnattachedUnbalancedTx + -> Contract UnbalancedTx setAuxiliaryData tx auxData = liftEffect do auxDataHash <- hashAuxiliaryData auxData pure (tx # _auxiliaryData ?~ auxData # _auxiliaryDataHash ?~ auxDataHash) setGeneralTxMetadata - :: UnattachedUnbalancedTx + :: UnbalancedTx -> GeneralTransactionMetadata - -> Contract UnattachedUnbalancedTx + -> Contract UnbalancedTx setGeneralTxMetadata tx generalMetadata = let auxData = fromMaybe mempty (view _auxiliaryData tx) @@ -63,9 +56,9 @@ setGeneralTxMetadata tx generalMetadata = setTxMetadata :: forall (m :: Type) . MetadataType m - => UnattachedUnbalancedTx + => UnbalancedTx -> m - -> Contract UnattachedUnbalancedTx + -> Contract UnbalancedTx setTxMetadata tx = setGeneralTxMetadata tx <<< toGeneralTxMetadata @@ -73,16 +66,16 @@ setTxMetadata tx = -- Lenses -------------------------------------------------------------------------------- -_unbalancedTx :: Lens' UnattachedUnbalancedTx Transaction -_unbalancedTx = _Newtype <<< prop (Proxy :: Proxy "transaction") +_transaction :: Lens' UnbalancedTx Transaction +_transaction = _Newtype <<< prop (Proxy :: Proxy "transaction") -_auxiliaryData :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryData) +_auxiliaryData :: Lens' UnbalancedTx (Maybe AuxiliaryData) _auxiliaryData = - _unbalancedTx <<< Tx._auxiliaryData + _transaction <<< Tx._auxiliaryData -_auxiliaryDataHash :: Lens' UnattachedUnbalancedTx (Maybe AuxiliaryDataHash) +_auxiliaryDataHash :: Lens' UnbalancedTx (Maybe AuxiliaryDataHash) _auxiliaryDataHash = - _unbalancedTx <<< Tx._body <<< Tx._auxiliaryDataHash + _transaction <<< Tx._body <<< Tx._auxiliaryDataHash _metadata :: Lens' AuxiliaryData (Maybe GeneralTransactionMetadata) _metadata = lens' \(AuxiliaryData rec@{ metadata }) -> diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 89cb3c098..28de16a33 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -12,12 +12,15 @@ module Contract.ScriptLookups ( mkUnbalancedTx , mkUnbalancedTxM , module ScriptLookups + , module X ) where import Prelude import Contract.Monad (Contract) import Ctl.Internal.IsData (class IsData) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X import Ctl.Internal.Types.ScriptLookups ( MkUnbalancedTxError ( TypeCheckFailed @@ -44,7 +47,6 @@ import Ctl.Internal.Types.ScriptLookups , CannotSatisfyAny ) , ScriptLookups(ScriptLookups) - , UnattachedUnbalancedTx(UnattachedUnbalancedTx) , datum , generalise , mintingPolicy @@ -68,7 +70,7 @@ import Ctl.Internal.Types.TypedValidator (class ValidatorTypes) import Data.Either (Either, hush) import Data.Maybe (Maybe) --- | Create an `UnattachedUnbalancedTx` given `ScriptLookups` and +-- | Create an `UnbalancedTx` given `ScriptLookups` and -- | `TxConstraints`. You will probably want to use this version as it returns -- | datums and redeemers that require attaching (and maybe reindexing) in -- | a separate call. In particular, this should be called in conjuction with @@ -84,7 +86,7 @@ mkUnbalancedTx -> Contract ( Either ScriptLookups.MkUnbalancedTxError - ScriptLookups.UnattachedUnbalancedTx + UnbalancedTx ) mkUnbalancedTx = SL.mkUnbalancedTx @@ -97,5 +99,5 @@ mkUnbalancedTxM => IsData redeemer => ScriptLookups.ScriptLookups validator -> TxConstraints redeemer datum - -> Contract (Maybe ScriptLookups.UnattachedUnbalancedTx) + -> Contract (Maybe UnbalancedTx) mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 641a3de40..df9222b4a 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -200,6 +200,9 @@ import Ctl.Internal.Plutus.Types.TransactionUnspentOutput , mkTxUnspentOut ) as PTransactionUnspentOutput import Ctl.Internal.Plutus.Types.Value (Coin) +import Ctl.Internal.ProcessConstraints.UnbalancedTx + ( UnbalancedTx(UnbalancedTx) + ) import Ctl.Internal.ReindexRedeemers ( ReindexErrors(CannotGetTxOutRefIndexForRedeemer) ) as ReindexRedeemersExport @@ -244,9 +247,6 @@ import Ctl.Internal.Types.ScriptLookups ) , ScriptLookups ) as ScriptLookups -import Ctl.Internal.Types.ScriptLookups - ( UnattachedUnbalancedTx(UnattachedUnbalancedTx) - ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , plutusV1Script @@ -388,7 +388,7 @@ withSingleTransaction prepare extract utx action = -- | Errors will be thrown. withBalancedTxsWithConstraints :: forall (a :: Type) - . Array (UnattachedUnbalancedTx /\ BalanceTxConstraintsBuilder) + . Array (UnbalancedTx /\ BalanceTxConstraintsBuilder) -> (Array FinalizedTransaction -> Contract a) -> Contract a withBalancedTxsWithConstraints = @@ -398,7 +398,7 @@ withBalancedTxsWithConstraints = -- | constraints. withBalancedTxs :: forall (a :: Type) - . Array UnattachedUnbalancedTx + . Array UnbalancedTx -> (Array FinalizedTransaction -> Contract a) -> Contract a withBalancedTxs = withTransactions balanceTxs unwrap @@ -411,7 +411,7 @@ withBalancedTxs = withTransactions balanceTxs unwrap -- | Errors will be thrown. withBalancedTxWithConstraints :: forall (a :: Type) - . UnattachedUnbalancedTx + . UnbalancedTx -> BalanceTxConstraintsBuilder -> (FinalizedTransaction -> Contract a) -> Contract a @@ -423,14 +423,14 @@ withBalancedTxWithConstraints unbalancedTx = -- | constraints. withBalancedTx :: forall (a :: Type) - . UnattachedUnbalancedTx + . UnbalancedTx -> (FinalizedTransaction -> Contract a) -> Contract a withBalancedTx = withSingleTransaction balanceAndLock unwrap -unUnattachedUnbalancedTx :: UnattachedUnbalancedTx -> UnindexedTx /\ UtxoIx -unUnattachedUnbalancedTx - ( UnattachedUnbalancedTx +unUnbalancedTx :: UnbalancedTx -> UnindexedTx /\ UtxoIx +unUnbalancedTx + ( UnbalancedTx { transaction , datums , redeemers @@ -439,22 +439,22 @@ unUnattachedUnbalancedTx ) = { transaction, datums, redeemers } /\ utxoIndex --- | Attempts to balance an `UnattachedUnbalancedTx` using the specified +-- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. balanceTxWithConstraints - :: UnattachedUnbalancedTx + :: UnbalancedTx -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) balanceTxWithConstraints tx = let - tx' /\ ix = unUnattachedUnbalancedTx tx + tx' /\ ix = unUnbalancedTx tx in BalanceTx.balanceTxWithConstraints tx' ix -- | Same as `balanceTxWithConstraints`, but uses the default balancer -- | constraints. balanceTx - :: UnattachedUnbalancedTx + :: UnbalancedTx -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) balanceTx = flip balanceTxWithConstraints mempty @@ -464,7 +464,7 @@ balanceTx = flip balanceTxWithConstraints mempty balanceTxsWithConstraints :: forall (t :: Type -> Type) . Traversable t - => t (UnattachedUnbalancedTx /\ BalanceTxConstraintsBuilder) + => t (UnbalancedTx /\ BalanceTxConstraintsBuilder) -> Contract (t FinalizedTransaction) balanceTxsWithConstraints unbalancedTxs = unlockAllOnError $ traverse balanceAndLockWithConstraints unbalancedTxs @@ -475,7 +475,7 @@ balanceTxsWithConstraints unbalancedTxs = withUsedTxOuts <<< unlockTransactionInputs <<< uutxToTx <<< fst throwError e - uutxToTx :: UnattachedUnbalancedTx -> Transaction + uutxToTx :: UnbalancedTx -> Transaction uutxToTx = _.transaction <<< unwrap -- | Same as `balanceTxsWithConstraints`, but uses the default balancer @@ -483,18 +483,18 @@ balanceTxsWithConstraints unbalancedTxs = balanceTxs :: forall (t :: Type -> Type) . Traversable t - => t UnattachedUnbalancedTx + => t UnbalancedTx -> Contract (t FinalizedTransaction) balanceTxs = balanceTxsWithConstraints <<< map (flip Tuple mempty) --- | Attempts to balance an `UnattachedUnbalancedTx` hushing the error. +-- | Attempts to balance an `UnbalancedTx` hushing the error. balanceTxM - :: UnattachedUnbalancedTx + :: UnbalancedTx -> Contract (Maybe FinalizedTransaction) balanceTxM = map hush <<< balanceTx balanceAndLockWithConstraints - :: UnattachedUnbalancedTx /\ BalanceTxConstraintsBuilder + :: UnbalancedTx /\ BalanceTxConstraintsBuilder -> Contract FinalizedTransaction balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do balancedTx <- @@ -504,7 +504,7 @@ balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do pure balancedTx balanceAndLock - :: UnattachedUnbalancedTx + :: UnbalancedTx -> Contract FinalizedTransaction balanceAndLock = balanceAndLockWithConstraints <<< flip Tuple mempty diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 587b1ddf8..ade5c9ac3 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -105,8 +105,7 @@ evalTxExecutionUnits tx = do -- Calculates the execution units needed for each script in the transaction -- and the minimum fee, including the script fees. --- Returns a tuple consisting of updated `UnattachedUnbalancedTx` and --- the minimum fee. +-- Returns a tuple consisting of updated `UnbalancedTx` and the minimum fee. evalExUnitsAndMinFee :: IndexedTx -> UtxoMap diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index 2aa25fec0..b4f49d4c5 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -29,9 +29,9 @@ import Ctl.Internal.BalanceTx.Constraints import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), Transaction) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.Serialization.Address (NetworkId) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.ScriptLookups (UnattachedUnbalancedTx) import Ctl.Internal.Types.Scripts (Language) import Ctl.Internal.Wallet (Cip30Wallet, cip30Wallet) import Data.Either (Either) @@ -100,7 +100,7 @@ derive newtype instance Eq FinalizedTransaction instance Show FinalizedTransaction where show = genericShow -newtype PrebalancedTransaction = PrebalancedTransaction UnattachedUnbalancedTx +newtype PrebalancedTransaction = PrebalancedTransaction UnbalancedTx derive instance Generic PrebalancedTransaction _ derive instance Newtype PrebalancedTransaction _ diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs new file mode 100644 index 000000000..d5cfa6ab5 --- /dev/null +++ b/src/Internal/ProcessConstraints/UnbalancedTx.purs @@ -0,0 +1,235 @@ +module Ctl.Internal.ProcessConstraints.UnbalancedTx where + +import Prelude hiding (join) + +import Contract.Hashing (plutusScriptStakeValidatorHash) +import Control.Monad.Error.Class (catchError, throwError) +import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) +import Control.Monad.Reader.Class (asks) +import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) +import Control.Monad.Trans.Class (lift) +import Ctl.Internal.Address (addressPaymentValidatorHash) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , UnindexedRedeemer(UnindexedRedeemer) + , unindexedRedeemerToRedeemer + ) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) +import Ctl.Internal.Cardano.Types.Transaction + ( Certificate + ( StakeDelegation + , PoolRetirement + , PoolRegistration + , StakeDeregistration + , StakeRegistration + ) + , Costmdls + , Transaction + , TransactionOutput(TransactionOutput) + , TransactionWitnessSet(TransactionWitnessSet) + , _body + , _certs + , _inputs + , _isValid + , _mint + , _networkId + , _outputs + , _referenceInputs + , _requiredSigners + , _scriptDataHash + , _withdrawals + , _witnessSet + ) +import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T +import Ctl.Internal.Cardano.Types.Value + ( Coin(Coin) + , CurrencySymbol + , Value + , getNonAdaAsset + , isZero + , mkSingletonValue' + , mpsSymbol + , negation + , split + ) +import Ctl.Internal.Contract (getProtocolParameters) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) +import Ctl.Internal.Hashing (datumHash) as Hashing +import Ctl.Internal.Helpers (liftM, (<\>)) +import Ctl.Internal.IsData (class IsData) +import Ctl.Internal.NativeScripts (nativeScriptHash) +import Ctl.Internal.Plutus.Conversion + ( fromPlutusTxOutputWithRefScript + , fromPlutusValue + ) +import Ctl.Internal.Plutus.Types.Credential + ( Credential(ScriptCredential, PubKeyCredential) + ) +import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus +import Ctl.Internal.Plutus.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + ) +import Ctl.Internal.QueryM.Pools + ( getPubKeyHashDelegationsAndRewards + , getValidatorHashDelegationsAndRewards + ) +import Ctl.Internal.Scripts + ( mintingPolicyHash + , nativeScriptStakeValidatorHash + , validatorHash + , validatorHashEnterpriseAddress + ) +import Ctl.Internal.Serialization.Address + ( Address + , NetworkId + , StakeCredential + , baseAddress + , baseAddressToAddress + , keyHashCredential + , scriptHashCredential + ) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Ctl.Internal.ToData (class ToData) +import Ctl.Internal.Transaction + ( ModifyTxError + , attachDatum + , attachNativeScript + , attachPlutusScript + , setScriptDataHash + ) +import Ctl.Internal.Types.Any (Any) +import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , PosixTimeToSlotError + , always + , intersection + , isEmpty + , posixTimeRangeToTransactionValidity + ) +import Ctl.Internal.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + ) +import Ctl.Internal.Types.PubKeyHash + ( PaymentPubKeyHash + , StakePubKeyHash + , payPubKeyHashBaseAddress + , payPubKeyHashEnterpriseAddress + , stakePubKeyHashRewardAddress + ) +import Ctl.Internal.Types.RewardAddress + ( stakePubKeyHashRewardAddress + , stakeValidatorHashRewardAddress + ) as RewardAddress +import Ctl.Internal.Types.Scripts + ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) + , MintingPolicyHash + , NativeScriptStakeValidator + , PlutusScriptStakeValidator + , Validator + , ValidatorHash + ) +import Ctl.Internal.Types.TokenName (TokenName) +import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Types.TxConstraints + ( DatumPresence(DatumWitness, DatumInline) + , InputConstraint(InputConstraint) + , InputWithScriptRef(RefInput, SpendInput) + , OutputConstraint(OutputConstraint) + , TxConstraint + ( MustBeSignedBy + , MustDelegateStakePubKey + , MustDelegateStakePlutusScript + , MustDelegateStakeNativeScript + , MustDeregisterStakePubKey + , MustDeregisterStakePlutusScript + , MustDeregisterStakeNativeScript + , MustHashDatum + , MustIncludeDatum + , MustMintValue + , MustNotBeValid + , MustPayToNativeScript + , MustPayToPubKeyAddress + , MustPayToScript + , MustProduceAtLeast + , MustReferenceOutput + , MustRegisterPool + , MustRegisterStakePubKey + , MustRegisterStakeScript + , MustRetirePool + , MustSatisfyAnyOf + , MustSpendAtLeast + , MustSpendNativeScriptOutput + , MustSpendPubKeyOutput + , MustSpendScriptOutput + , MustValidateIn + , MustWithdrawStakePubKey + , MustWithdrawStakePlutusScript + , MustWithdrawStakeNativeScript + , MustMintValueUsingNativeScript + ) + , TxConstraints(TxConstraints) + , utxoWithScriptRef + ) +import Ctl.Internal.Types.TypedTxOut + ( TypeCheckError + , mkTypedTxOut + , typeTxOutRef + , typedTxOutDatumHash + , typedTxOutRefValue + , typedTxOutTxOut + ) +import Ctl.Internal.Types.TypedValidator + ( class DatumType + , class ValidatorTypes + , TypedValidator(TypedValidator) + ) +import Ctl.Internal.Types.TypedValidator (generalise) as TV +import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey) +import Data.Array (cons, partition, toUnfoldable, zip) +import Data.Array (singleton, union, (:)) as Array +import Data.Bifunctor (lmap) +import Data.BigInt (BigInt) +import Data.Either (Either(Left, Right), either, hush, isRight, note) +import Data.Foldable (foldM) +import Data.Generic.Rep (class Generic) +import Data.Lattice (join) +import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens.Getter (to, use) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) +import Data.Lens.Types (Lens') +import Data.List (List(Nil, Cons)) +import Data.Map (Map, empty, fromFoldable, lookup, singleton, union) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) +import Data.Newtype (class Newtype, over, unwrap, wrap) +import Data.Set (insert) as Set +import Data.Show.Generic (genericShow) +import Data.Symbol (SProxy(SProxy)) +import Data.Traversable (for, traverse_) +import Data.Tuple.Nested (type (/\), (/\)) +import Effect (Effect) +import Effect.Aff.Class (liftAff) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import MedeaPrelude (mapMaybe) +import Prelude (join) as Bind +import Type.Proxy (Proxy(Proxy)) + +-- | A newtype for the unbalanced transaction after creating one with datums +-- | and redeemers not attached +newtype UnbalancedTx = UnbalancedTx + { transaction :: Transaction -- the unbalanced tx created + , utxoIndex :: Map TransactionInput TransactionOutput + , datums :: Array Datum -- the array of ordered datums that require attaching + , redeemers :: Array UnindexedRedeemer + } + +derive instance Generic UnbalancedTx _ +derive instance Newtype UnbalancedTx _ +derive newtype instance Eq UnbalancedTx +-- derive newtype instance EncodeAeson UnbalancedTx + +instance Show UnbalancedTx where + show = genericShow diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 4e04a1310..7db7fe999 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -32,7 +32,6 @@ module Ctl.Internal.Types.ScriptLookups , CannotMintZero ) , ScriptLookups(ScriptLookups) - , UnattachedUnbalancedTx(UnattachedUnbalancedTx) , generalise , mintingPolicy , mintingPolicyM @@ -51,6 +50,7 @@ module Ctl.Internal.Types.ScriptLookups , unspentOutputsM ) where +import Ctl.Internal.ProcessConstraints.UnbalancedTx import Prelude hiding (join) import Contract.Hashing (plutusScriptStakeValidatorHash) @@ -664,23 +664,6 @@ mkUnbalancedTx' mkUnbalancedTx' scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map _.transaction --- | A newtype for the unbalanced transaction after creating one with datums --- | and redeemers not attached -newtype UnattachedUnbalancedTx = UnattachedUnbalancedTx - { transaction :: Transaction -- the unbalanced tx created - , utxoIndex :: Map TransactionInput TransactionOutput - , datums :: Array Datum -- the array of ordered datums that require attaching - , redeemers :: Array UnindexedRedeemer - } - -derive instance Generic UnattachedUnbalancedTx _ -derive instance Newtype UnattachedUnbalancedTx _ -derive newtype instance Eq UnattachedUnbalancedTx --- derive newtype instance EncodeAeson UnattachedUnbalancedTx - -instance Show UnattachedUnbalancedTx where - show = genericShow - -- | An implementation that strips `witnessSet` and data hash from -- | returned `UnbalancedTx` in order to calculate them later on server. -- | It returns part of the `ConstraintProcessingState` for later consumption by @@ -693,7 +676,7 @@ mkUnbalancedTx => IsData redeemer => ScriptLookups validator -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError UnattachedUnbalancedTx) + -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map \{ transaction, datums, redeemers, utxoIndex } -> diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 7ce33b14d..7a00a92a8 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -6,7 +6,7 @@ import Contract.Config (testnetConfig) import Contract.Monad (Contract, runContract) import Contract.ScriptLookups ( ScriptLookups - , UnattachedUnbalancedTx + , UnbalancedTx , mkUnbalancedTx ) import Contract.Time @@ -146,7 +146,7 @@ unsafeSubtractOne value = wrap <<< fromJust -------------------------------------------------------------------------------- getTimeFromUnbalanced - :: UnattachedUnbalancedTx -> Contract (Interval POSIXTime) + :: UnbalancedTx -> Contract (Interval POSIXTime) getTimeFromUnbalanced utx = validityToPosixTime $ unwrap body where body = (unwrap utx) # _.transaction >>> unwrap >>> _.body From 29ebf633d3374cbd4257167f4d4d83fc588f77eb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Mar 2023 16:20:51 +0400 Subject: [PATCH 113/478] Move unrelated stuff from Ctl.Internal.Types.ScriptLookups to Ctl.Internal.ProcessConstraints module --- CHANGELOG.md | 1 + src/Contract/AuxiliaryData.purs | 2 +- src/Contract/ScriptLookups.purs | 75 +- src/Contract/Transaction.purs | 37 +- src/Contract/UnbalancedTx.purs | 91 ++ src/Internal/BalanceTx/Types.purs | 10 - src/Internal/ProcessConstraints.purs | 1036 ++++++++++++++++++++ src/Internal/ProcessConstraints/Error.purs | 64 ++ src/Internal/ProcessConstraints/State.purs | 159 +++ src/Internal/Test/KeyDir.purs | 6 +- src/Internal/Types/ScriptLookups.purs | 1008 +------------------ 11 files changed, 1404 insertions(+), 1085 deletions(-) create mode 100644 src/Contract/UnbalancedTx.purs create mode 100644 src/Internal/ProcessConstraints.purs create mode 100644 src/Internal/ProcessConstraints/Error.purs create mode 100644 src/Internal/ProcessConstraints/State.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 015226988..870de4df8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `UnattachedUnbalancedTx` has been renamed and moved to `Contract.UnbalancedTx.UnbalancedTx`, the old `UnbalancedTx` type has been removed as not needed. `mkUnbalancedTx` function has been moved to `Contract.UnbalancedTx`. - All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): - `checkNewUtxosAtAddress` -> `assertNewUtxosAtAddress` diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 92d321312..718ca81ad 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -8,7 +8,6 @@ module Contract.AuxiliaryData import Prelude import Contract.Monad (Contract) -import Contract.ScriptLookups (UnbalancedTx) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash @@ -23,6 +22,7 @@ import Ctl.Internal.Metadata.MetadataType ( class MetadataType , toGeneralTxMetadata ) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Lens (lens', (?~)) diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 28de16a33..6103ce9c2 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -1,17 +1,8 @@ -- | A module for creating off-chain script lookups, and an unbalanced -- | transaction. --- | --- | The lookup functions come in pairs. If the function cannot fail, there --- | is another version contained in a `Maybe` context (that also does not fail). --- | This is to aid users who wish to utilise the underlying `ScriptLookups` --- | `Monoid` for `foldMap` etc. --- | --- | Otherwise, there are lookups that may fail with `Maybe` (because of --- | hashing) and an unsafe counterpart via `fromJust`. module Contract.ScriptLookups ( mkUnbalancedTx , mkUnbalancedTxM - , module ScriptLookups , module X ) where @@ -19,34 +10,51 @@ import Prelude import Contract.Monad (Contract) import Ctl.Internal.IsData (class IsData) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X -import Ctl.Internal.Types.ScriptLookups +import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC +import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( TypeCheckFailed - , ModifyTx - , TxOutRefNotFound - , TxOutRefWrongType - , DatumNotFound - , MintingPolicyNotFound - , MintingPolicyHashNotCurrencySymbol - , CannotMakeValue - , ValidatorHashNotFound - , OwnPubKeyAndStakeKeyMissing - , TypedValidatorMissing - , DatumWrongHash + ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotConvertPaymentPubKeyHash + , CannotFindDatum , CannotQueryDatum - , CannotHashDatum , CannotConvertPOSIXTimeRange + , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , TypedTxOutHasNoDatumHash + , CannotHashDatum , CannotHashMintingPolicy , CannotHashValidator - , CannotConvertPaymentPubKeyHash + , CannotMakeValue + , CannotWithdrawRewardsPubKey + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsNativeScript + , DatumNotFound + , DatumWrongHash + , MintingPolicyHashNotCurrencySymbol + , MintingPolicyNotFound + , ModifyTx + , OwnPubKeyAndStakeKeyMissing + , TxOutRefNotFound + , TxOutRefWrongType + , TypeCheckFailed + , TypedTxOutHasNoDatumHash + , TypedValidatorMissing + , ValidatorHashNotFound + , WrongRefScriptHash , CannotSatisfyAny + , ExpectedPlutusScriptGotNativeScript + , CannotMintZero ) - , ScriptLookups(ScriptLookups) + ) as X +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X +import Ctl.Internal.Types.ScriptLookups + ( ScriptLookups + ) +import Ctl.Internal.Types.ScriptLookups + ( ScriptLookups(ScriptLookups) , datum , generalise , mintingPolicy @@ -63,8 +71,7 @@ import Ctl.Internal.Types.ScriptLookups -- , unsafePaymentPubKey , validator , validatorM - ) as ScriptLookups -import Ctl.Internal.Types.ScriptLookups (mkUnbalancedTx) as SL + ) as X import Ctl.Internal.Types.TxConstraints (TxConstraints) import Ctl.Internal.Types.TypedValidator (class ValidatorTypes) import Data.Either (Either, hush) @@ -81,14 +88,14 @@ mkUnbalancedTx . ValidatorTypes validator datum redeemer => IsData datum => IsData redeemer - => ScriptLookups.ScriptLookups validator + => ScriptLookups validator -> TxConstraints redeemer datum -> Contract ( Either - ScriptLookups.MkUnbalancedTxError + MkUnbalancedTxError UnbalancedTx ) -mkUnbalancedTx = SL.mkUnbalancedTx +mkUnbalancedTx = PC.mkUnbalancedTxImpl -- | Same as `mkUnbalancedTx` but hushes the error. mkUnbalancedTxM @@ -97,7 +104,7 @@ mkUnbalancedTxM . ValidatorTypes validator datum redeemer => IsData datum => IsData redeemer - => ScriptLookups.ScriptLookups validator + => ScriptLookups validator -> TxConstraints redeemer datum -> Contract (Maybe UnbalancedTx) mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index df9222b4a..a039116b5 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -18,7 +18,6 @@ module Contract.Transaction , module PTransaction , module PTransactionUnspentOutput , module ReindexRedeemersExport - , module ScriptLookups , module ScriptRef , module Scripts , module Transaction @@ -200,9 +199,7 @@ import Ctl.Internal.Plutus.Types.TransactionUnspentOutput , mkTxUnspentOut ) as PTransactionUnspentOutput import Ctl.Internal.Plutus.Types.Value (Coin) -import Ctl.Internal.ProcessConstraints.UnbalancedTx - ( UnbalancedTx(UnbalancedTx) - ) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.ReindexRedeemers ( ReindexErrors(CannotGetTxOutRefIndexForRedeemer) ) as ReindexRedeemersExport @@ -220,33 +217,7 @@ import Ctl.Internal.Types.RewardAddress , rewardAddressToBech32 , rewardAddressToBytes ) as X -import Ctl.Internal.Types.ScriptLookups - ( MkUnbalancedTxError - ( TypeCheckFailed - , ModifyTx - , TxOutRefNotFound - , TxOutRefWrongType - , DatumNotFound - , MintingPolicyNotFound - , MintingPolicyHashNotCurrencySymbol - , CannotMakeValue - , ValidatorHashNotFound - , OwnPubKeyAndStakeKeyMissing - , TypedValidatorMissing - , DatumWrongHash - , CannotQueryDatum - , CannotHashDatum - , CannotConvertPOSIXTimeRange - , CannotGetMintingPolicyScriptIndex - , CannotGetValidatorHashFromAddress - , TypedTxOutHasNoDatumHash - , CannotHashMintingPolicy - , CannotHashValidator - , CannotConvertPaymentPubKeyHash - , CannotSatisfyAny - ) - , ScriptLookups - ) as ScriptLookups +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , plutusV1Script @@ -565,7 +536,7 @@ submitTxFromConstraintsReturningFee . ValidatorTypes validator datum redeemer => IsData datum => IsData redeemer - => ScriptLookups.ScriptLookups validator + => ScriptLookups validator -> TxConstraints redeemer datum -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } submitTxFromConstraintsReturningFee lookups constraints = do @@ -581,7 +552,7 @@ submitTxFromConstraints . ValidatorTypes validator datum redeemer => IsData datum => IsData redeemer - => ScriptLookups.ScriptLookups validator + => ScriptLookups validator -> TxConstraints redeemer datum -> Contract TransactionHash submitTxFromConstraints lookups constraints = diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs new file mode 100644 index 000000000..f246a4195 --- /dev/null +++ b/src/Contract/UnbalancedTx.purs @@ -0,0 +1,91 @@ +-- | A module for creating off-chain script lookups, and an unbalanced +-- | transaction. +module Contract.UnbalancedTx + ( mkUnbalancedTx + , mkUnbalancedTxM + , module X + ) where + +import Prelude + +import Contract.Monad (Contract) +import Ctl.Internal.IsData (class IsData) +import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotConvertPaymentPubKeyHash + , CannotFindDatum + , CannotQueryDatum + , CannotConvertPOSIXTimeRange + , CannotSolveTimeConstraints + , CannotGetMintingPolicyScriptIndex + , CannotGetValidatorHashFromAddress + , CannotHashDatum + , CannotHashMintingPolicy + , CannotHashValidator + , CannotMakeValue + , CannotWithdrawRewardsPubKey + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsNativeScript + , DatumNotFound + , DatumWrongHash + , MintingPolicyHashNotCurrencySymbol + , MintingPolicyNotFound + , ModifyTx + , OwnPubKeyAndStakeKeyMissing + , TxOutRefNotFound + , TxOutRefWrongType + , TypeCheckFailed + , TypedTxOutHasNoDatumHash + , TypedValidatorMissing + , ValidatorHashNotFound + , WrongRefScriptHash + , CannotSatisfyAny + , ExpectedPlutusScriptGotNativeScript + , CannotMintZero + ) + ) as X +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X +import Ctl.Internal.Types.ScriptLookups + ( ScriptLookups + ) +import Ctl.Internal.Types.TxConstraints (TxConstraints) +import Ctl.Internal.Types.TypedValidator (class ValidatorTypes) +import Data.Either (Either, hush) +import Data.Maybe (Maybe) + +-- | Create an `UnbalancedTx` given `ScriptLookups` and +-- | `TxConstraints`. This should be called in conjuction with +-- | `balanceTx` and `signTransaction`. +mkUnbalancedTx + :: forall (validator :: Type) (datum :: Type) + (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => ScriptLookups validator + -> TxConstraints redeemer datum + -> Contract + ( Either + MkUnbalancedTxError + UnbalancedTx + ) +mkUnbalancedTx = PC.mkUnbalancedTxImpl + +-- | Same as `mkUnbalancedTx` but hushes the error. +-- TODO: remove, reason: it's trivial +-- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1047 +mkUnbalancedTxM + :: forall (validator :: Type) (datum :: Type) + (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => ScriptLookups validator + -> TxConstraints redeemer datum + -> Contract (Maybe UnbalancedTx) +mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index b4f49d4c5..d7bf8bc76 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -2,7 +2,6 @@ module Ctl.Internal.BalanceTx.Types ( BalanceTxM , BalanceTxMContext , FinalizedTransaction(FinalizedTransaction) - , PrebalancedTransaction(PrebalancedTransaction) , askCip30Wallet , askCoinsPerUtxoUnit , askCostModelsForLanguages @@ -29,7 +28,6 @@ import Ctl.Internal.BalanceTx.Constraints import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), Transaction) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.Serialization.Address (NetworkId) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Scripts (Language) @@ -99,11 +97,3 @@ derive newtype instance Eq FinalizedTransaction instance Show FinalizedTransaction where show = genericShow - -newtype PrebalancedTransaction = PrebalancedTransaction UnbalancedTx - -derive instance Generic PrebalancedTransaction _ -derive instance Newtype PrebalancedTransaction _ - -instance Show PrebalancedTransaction where - show = genericShow diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs new file mode 100644 index 000000000..bbef988d8 --- /dev/null +++ b/src/Internal/ProcessConstraints.purs @@ -0,0 +1,1036 @@ +module Ctl.Internal.ProcessConstraints + ( mkUnbalancedTxImpl + ) where + +import Prelude + +import Contract.Hashing (plutusScriptStakeValidatorHash) +import Control.Monad.Error.Class (catchError, throwError) +import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) +import Control.Monad.Reader.Class (asks) +import Control.Monad.State.Trans (get, gets, put, runStateT) +import Control.Monad.Trans.Class (lift) +import Ctl.Internal.Address (addressPaymentValidatorHash) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , UnindexedRedeemer(UnindexedRedeemer) + , unindexedRedeemerToRedeemer + ) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) +import Ctl.Internal.Cardano.Types.Transaction + ( Certificate + ( StakeDelegation + , PoolRetirement + , PoolRegistration + , StakeDeregistration + , StakeRegistration + ) + , Transaction + , TransactionOutput(TransactionOutput) + , TransactionWitnessSet(TransactionWitnessSet) + , _body + , _certs + , _inputs + , _isValid + , _mint + , _networkId + , _outputs + , _referenceInputs + , _requiredSigners + , _scriptDataHash + , _withdrawals + , _witnessSet + ) +import Ctl.Internal.Cardano.Types.Value + ( Coin(Coin) + , getNonAdaAsset + , isZero + , mkSingletonValue' + , mpsSymbol + ) +import Ctl.Internal.Contract (getProtocolParameters) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) +import Ctl.Internal.Hashing (datumHash) as Hashing +import Ctl.Internal.Helpers (liftM) +import Ctl.Internal.IsData (class IsData) +import Ctl.Internal.NativeScripts (nativeScriptHash) +import Ctl.Internal.Plutus.Conversion + ( fromPlutusTxOutputWithRefScript + , fromPlutusValue + ) +import Ctl.Internal.Plutus.Types.Credential + ( Credential(ScriptCredential, PubKeyCredential) + ) +import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus +import Ctl.Internal.Plutus.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( ModifyTx + , CannotSatisfyAny + , CannotWithdrawRewardsNativeScript + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsPubKey + , DatumWrongHash + , CannotMakeValue + , MintingPolicyHashNotCurrencySymbol + , CannotMintZero + , ExpectedPlutusScriptGotNativeScript + , CannotFindDatum + , CannotQueryDatum + , CannotGetValidatorHashFromAddress + , TxOutRefWrongType + , CannotConvertPOSIXTimeRange + , WrongRefScriptHash + , ValidatorHashNotFound + , MintingPolicyNotFound + , DatumNotFound + , TxOutRefNotFound + , CannotSolveTimeConstraints + , TypedTxOutHasNoDatumHash + , TypedValidatorMissing + , TypeCheckFailed + , OwnPubKeyAndStakeKeyMissing + ) + ) +import Ctl.Internal.ProcessConstraints.State + ( ConstraintProcessingState + , ConstraintsM + , ValueSpentBalances(ValueSpentBalances) + , _costModels + , _cpsTransaction + , _cpsUtxoIndex + , _datums + , _lookups + , _redeemers + , _refScriptsUtxoMap + , _valueSpentBalancesInputs + , _valueSpentBalancesOutputs + , provideValue + , requireValue + , totalMissingValue + ) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) +import Ctl.Internal.QueryM.Pools + ( getPubKeyHashDelegationsAndRewards + , getValidatorHashDelegationsAndRewards + ) +import Ctl.Internal.Scripts + ( mintingPolicyHash + , nativeScriptStakeValidatorHash + , validatorHash + , validatorHashEnterpriseAddress + ) +import Ctl.Internal.Serialization.Address + ( NetworkId + , StakeCredential + , baseAddress + , baseAddressToAddress + , keyHashCredential + , scriptHashCredential + ) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Ctl.Internal.ToData (class ToData) +import Ctl.Internal.Transaction + ( ModifyTxError + , attachDatum + , attachNativeScript + , attachPlutusScript + , setScriptDataHash + ) +import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , always + , intersection + , isEmpty + , posixTimeRangeToTransactionValidity + ) +import Ctl.Internal.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + ) +import Ctl.Internal.Types.PubKeyHash + ( payPubKeyHashBaseAddress + , payPubKeyHashEnterpriseAddress + , stakePubKeyHashRewardAddress + ) +import Ctl.Internal.Types.RewardAddress + ( stakePubKeyHashRewardAddress + , stakeValidatorHashRewardAddress + ) as RewardAddress +import Ctl.Internal.Types.ScriptLookups (ScriptLookups(ScriptLookups)) +import Ctl.Internal.Types.Scripts + ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) + , MintingPolicyHash + , Validator + , ValidatorHash + ) +import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Types.TxConstraints + ( DatumPresence(DatumWitness, DatumInline) + , InputConstraint(InputConstraint) + , InputWithScriptRef(RefInput, SpendInput) + , OutputConstraint(OutputConstraint) + , TxConstraint + ( MustBeSignedBy + , MustDelegateStakePubKey + , MustDelegateStakePlutusScript + , MustDelegateStakeNativeScript + , MustDeregisterStakePubKey + , MustDeregisterStakePlutusScript + , MustDeregisterStakeNativeScript + , MustHashDatum + , MustIncludeDatum + , MustMintValue + , MustNotBeValid + , MustPayToNativeScript + , MustPayToPubKeyAddress + , MustPayToScript + , MustProduceAtLeast + , MustReferenceOutput + , MustRegisterPool + , MustRegisterStakePubKey + , MustRegisterStakeScript + , MustRetirePool + , MustSatisfyAnyOf + , MustSpendAtLeast + , MustSpendNativeScriptOutput + , MustSpendPubKeyOutput + , MustSpendScriptOutput + , MustValidateIn + , MustWithdrawStakePubKey + , MustWithdrawStakePlutusScript + , MustWithdrawStakeNativeScript + , MustMintValueUsingNativeScript + ) + , TxConstraints(TxConstraints) + , utxoWithScriptRef + ) +import Ctl.Internal.Types.TypedTxOut + ( mkTypedTxOut + , typeTxOutRef + , typedTxOutDatumHash + , typedTxOutRefValue + , typedTxOutTxOut + ) +import Ctl.Internal.Types.TypedValidator (class DatumType, class ValidatorTypes) +import Data.Array (cons, partition, toUnfoldable, zip) +import Data.Array (singleton, (:)) as Array +import Data.Bifunctor (lmap) +import Data.Either (Either(Left, Right), either, hush, isRight, note) +import Data.Foldable (foldM) +import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens.Getter (to, use) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.List (List(Nil, Cons)) +import Data.Map (Map, empty, fromFoldable, lookup, union) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) +import Data.Newtype (class Newtype, over, unwrap, wrap) +import Data.Set (insert) as Set +import Data.Traversable (for, traverse_) +import Data.Tuple.Nested (type (/\), (/\)) +import Effect (Effect) +import Effect.Aff.Class (liftAff) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import MedeaPrelude (mapMaybe) +import Prelude (join) as Bind +import Type.Proxy (Proxy(Proxy)) + +-- The constraints don't precisely match those of Plutus: +-- `forall v. (FromData (DatumType v), ToData (DatumType v), ToData (RedeemerType v))` +-- as we don't have the same granularity on the classes, but the type `v` fixes +-- types `d` and `r` as seen below. We could alternatively create specific typeclasses: +-- ToData (DatumType v) <-> (DatumType v d, ToData d) <= ToDataDatumType v d +-- if we require granular control, similarly FromDataDatumType v d etc. +-- We could use `MonadError` to clean up the `ExceptT`s below although we can't +-- use the type alias because they need to be fully applied so this is perhaps +-- more readable. +-- | Resolve some `TxConstraints` by modifying the `UnbalancedTx` in the +-- | `ConstraintProcessingState` +processLookupsAndConstraints + :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => TxConstraints redeemer datum + -> ConstraintsM validator (Either MkUnbalancedTxError Unit) +processLookupsAndConstraints + (TxConstraints { constraints, ownInputs, ownOutputs }) = runExceptT do + -- Hash all the MintingPolicys and Scripts beforehand. These maps are lost + -- after we `runReaderT`, unlike Plutus that has a `Map` instead of `Array`. + lookups <- use _lookups <#> unwrap + + let + mps = lookups.mps + scripts = lookups.scripts + mpsHashes = map mintingPolicyHash mps + validatorHashes = map validatorHash scripts + mpsMap = fromFoldable $ zip mpsHashes mps + osMap = fromFoldable $ zip validatorHashes scripts + + timeConstraintsSolved <- except $ resumeTimeConstraints constraints + + ExceptT $ foldConstraints (processConstraint mpsMap osMap) + timeConstraintsSolved + ExceptT $ foldConstraints (addOwnInput (Proxy :: Proxy datum)) ownInputs + ExceptT $ foldConstraints addOwnOutput ownOutputs + ExceptT addFakeScriptDataHash + ExceptT addMissingValueSpent + ExceptT updateUtxoIndex + + where + -- Don't write the output in terms of ExceptT because we can't write a + -- partially applied `ConstraintsM` meaning this is more readable. + foldConstraints + :: forall (constr :: Type) (c :: Type) + . (constr -> ConstraintsM c (Either MkUnbalancedTxError Unit)) + -> Array constr + -> ConstraintsM c (Either MkUnbalancedTxError Unit) + foldConstraints handler = + runExceptT <<< traverse_ (ExceptT <<< handler) + +-- To build a transaction that satisfies the 'MustSpendAtLeast' and +-- `MustProduceAtLeast` constraints, we keep a tally of the required and +-- actual values we encounter on either side of the transaction. Then we +-- compute the missing value on both sides, and add an input with the +-- join of the positive parts of the missing values. + +-- Helper to run the stack and get back to `QueryM`. See comments in +-- `processLookupsAndConstraints` regarding constraints. +runConstraintsM + :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => ScriptLookups validator + -> TxConstraints redeemer datum + -> Contract (Either MkUnbalancedTxError (ConstraintProcessingState validator)) +runConstraintsM lookups txConstraints = do + { costModels } <- unwrap <$> getProtocolParameters + let + initCps :: ConstraintProcessingState validator + initCps = + { transaction: mempty + , utxoIndex: Map.empty + , valueSpentBalancesInputs: + ValueSpentBalances { required: mempty, provided: mempty } + , valueSpentBalancesOutputs: + ValueSpentBalances { required: mempty, provided: mempty } + , datums: mempty + , redeemers: [] + , mintRedeemers: empty + , lookups + , refScriptsUtxoMap: empty + , costModels + } + + unpackTuple + :: Either MkUnbalancedTxError Unit /\ + (ConstraintProcessingState validator) + -> Either MkUnbalancedTxError (ConstraintProcessingState validator) + unpackTuple (Left err /\ _) = Left err + unpackTuple (_ /\ cps) = Right cps + unpackTuple <$> + flip runStateT initCps (processLookupsAndConstraints txConstraints) + +-- | Adds a placeholder for ScriptDataHash. It will be wrong at this stage, +-- | because ExUnits hasn't been estimated yet. It will serve as a +-- | placeholder that will have the same size as the correct value. +addFakeScriptDataHash + :: forall (a :: Type) + . ConstraintsM a (Either MkUnbalancedTxError Unit) +addFakeScriptDataHash = runExceptT do + dats <- use _datums + costModels <- use _costModels + -- Use both script and minting redeemers in the order they were appended. + reds <- use (_redeemers <<< to (map unindexedRedeemerToRedeemer)) + tx <- use _cpsTransaction + tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> + Right + _cpsTransaction .= tx' + +-- | Add the remaining balance of the total value that the tx must spend. +-- | See note [Balance of value spent] +addMissingValueSpent + :: forall (a :: Type) + . ConstraintsM a (Either MkUnbalancedTxError Unit) +addMissingValueSpent = do + missing <- gets totalMissingValue + networkId <- getNetworkId + if isZero missing then pure $ Right unit + else runExceptT do + -- add 'missing' to the transaction's outputs. This ensures that the + -- wallet will add a corresponding input when balancing the + -- transaction. + -- Step 4 of the process described in [Balance of value spent] + lookups <- use _lookups <#> unwrap + let + pkh' = lookups.ownPaymentPubKeyHash + skh' = lookups.ownStakePubKeyHash + -- Potential fix me: This logic may be suspect: + txOutAddress <- case pkh', skh' of + Nothing, Nothing -> throwError OwnPubKeyAndStakeKeyMissing + Just pkh, Just skh -> pure $ payPubKeyHashBaseAddress networkId pkh skh + Just pkh, Nothing -> pure $ payPubKeyHashEnterpriseAddress networkId pkh + Nothing, Just skh -> pure $ stakePubKeyHashRewardAddress networkId skh + let + txOut = TransactionOutput + { address: txOutAddress + , amount: missing + , datum: NoOutputDatum + , scriptRef: Nothing + } + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut + +updateUtxoIndex + :: forall (a :: Type) + . ConstraintsM a (Either MkUnbalancedTxError Unit) +updateUtxoIndex = runExceptT do + txOutputs <- use _lookups <#> unwrap >>> _.txOutputs + refScriptsUtxoMap <- use _refScriptsUtxoMap + networkId <- lift getNetworkId + let + cTxOutputs :: Map TransactionInput TransactionOutput + cTxOutputs = + (txOutputs `union` refScriptsUtxoMap) + <#> fromPlutusTxOutputWithRefScript networkId + -- Left bias towards original map, hence `flip`: + _cpsUtxoIndex %= flip union cTxOutputs + +-- Note, we don't use the redeemer here, unlike Plutus because of our lack of +-- `TxIn` datatype. +-- | Add a typed input, checking the type of the output it spends. Return the value +-- | of the spent output. +addOwnInput + :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => Proxy datum + -> InputConstraint redeemer + -> ConstraintsM validator (Either MkUnbalancedTxError Unit) +addOwnInput _pd (InputConstraint { txOutRef }) = do + networkId <- getNetworkId + runExceptT do + ScriptLookups { txOutputs, typedValidator } <- use _lookups + -- Convert to Cardano type + let cTxOutputs = map (fromPlutusTxOutputWithRefScript networkId) txOutputs + inst <- liftM TypedValidatorMissing typedValidator + -- This line is to type check the `TransactionInput`. Plutus actually creates a `TxIn` + -- but we don't have such a datatype for our `TxBody`. Therefore, if we pass + -- this line, we just insert `TransactionInput` into the body. + typedTxOutRef <- ExceptT $ lift $ + typeTxOutRef networkId (flip lookup cTxOutputs) inst txOutRef + <#> lmap TypeCheckFailed + let value = typedTxOutRefValue typedTxOutRef + -- Must be inserted in order. Hopefully this matches the order under CSL + _cpsTransaction <<< _body <<< _inputs %= Set.insert txOutRef + _valueSpentBalancesInputs <>= provideValue value + +-- | Add a typed output and return its value. +addOwnOutput + :: forall (validator :: Type) (datum :: Type) + . DatumType validator datum + => ToData datum + => OutputConstraint datum + -> ConstraintsM validator (Either MkUnbalancedTxError Unit) +addOwnOutput (OutputConstraint { datum: d, value }) = do + queryHandle <- lift $ getQueryHandle + networkId <- getNetworkId + runExceptT do + ScriptLookups { typedValidator } <- use _lookups + inst <- liftM TypedValidatorMissing typedValidator + let + value' = fromPlutusValue value + typedTxOut = mkTypedTxOut networkId inst d value' + txOut = typedTxOutTxOut typedTxOut + -- We are erroring if we don't have a datumhash given the polymorphic datum + -- in the `OutputConstraint`: + dHash <- liftM TypedTxOutHasNoDatumHash (typedTxOutDatumHash typedTxOut) + dat <- ExceptT $ liftAff $ queryHandle.getDatumByHash dHash <#> hush + >>> Bind.join + >>> note (CannotQueryDatum dHash) + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut + ExceptT $ addDatum dat + _valueSpentBalancesOutputs <>= provideValue value' + +resumeTimeConstraints + :: Array TxConstraint -> Either MkUnbalancedTxError (Array TxConstraint) +resumeTimeConstraints constraints = do + let + { no: nonTimeConstraints, yes: timeConstraints } = partition + isTimeConstraint + constraints + intervals = mapMaybe constraintToInterval timeConstraints + newInterval <- foldM mergeIntervals always intervals + pure $ cons (MustValidateIn newInterval) nonTimeConstraints + where + mergeIntervals + :: POSIXTimeRange + -> POSIXTimeRange + -> Either MkUnbalancedTxError POSIXTimeRange + mergeIntervals interval1 interval2 = + let + newInterval :: POSIXTimeRange + newInterval = intersection interval1 interval2 + in + if isEmpty newInterval then Left $ CannotSolveTimeConstraints interval1 + interval2 + else pure newInterval + + constraintToInterval :: TxConstraint -> Maybe POSIXTimeRange + constraintToInterval = case _ of + MustValidateIn x -> Just x + _ -> Nothing + + isTimeConstraint :: TxConstraint -> Boolean + isTimeConstraint (MustValidateIn _) = true + isTimeConstraint _ = false + +lookupTxOutRef + :: forall (a :: Type) + . TransactionInput + -> Maybe InputWithScriptRef + -> ConstraintsM a (Either MkUnbalancedTxError TransactionOutput) +lookupTxOutRef oref = case _ of + Just inputWithRefScript -> + lookup oref (utxoWithScriptRef inputWithRefScript) + # maybe (lookupTxOutRef oref Nothing) (map Right <<< convertTxOutput) + Nothing -> + runExceptT do + utxos <- use _lookups <#> unwrap >>> _.txOutputs + txOutput <- liftM (TxOutRefNotFound oref) (lookup oref utxos) + lift $ convertTxOutput txOutput + where + convertTxOutput + :: Plutus.TransactionOutputWithRefScript -> ConstraintsM a TransactionOutput + convertTxOutput txOutput = + flip fromPlutusTxOutputWithRefScript txOutput <$> getNetworkId + +lookupDatum + :: forall (a :: Type) + . DataHash + -> ConstraintsM a (Either MkUnbalancedTxError Datum) +lookupDatum dh = do + otherDt <- use _lookups <#> unwrap >>> _.datums + pure $ note (DatumNotFound dh) $ lookup dh otherDt + +lookupMintingPolicy + :: MintingPolicyHash + -> Map MintingPolicyHash MintingPolicy + -> Either MkUnbalancedTxError MintingPolicy +lookupMintingPolicy mph mpsMap = + note (MintingPolicyNotFound mph) $ lookup mph mpsMap + +lookupValidator + :: ValidatorHash + -> Map ValidatorHash Validator + -> Either MkUnbalancedTxError Validator +lookupValidator vh osMap = + note (ValidatorHashNotFound vh) $ lookup vh osMap + +processScriptRefUnspentOut + :: forall (scriptHash :: Type) (a :: Type) + . Newtype scriptHash ScriptHash + => scriptHash + -> InputWithScriptRef + -> ConstraintsM a (Either MkUnbalancedTxError Unit) +processScriptRefUnspentOut scriptHash inputWithRefScript = do + unspentOut <- case inputWithRefScript of + SpendInput unspentOut -> do + _cpsTransaction <<< _body <<< _inputs %= Set.insert + (_.input <<< unwrap $ unspentOut) + pure unspentOut + RefInput unspentOut -> do + let refInput = (unwrap unspentOut).input + _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput + pure unspentOut + + updateRefScriptsUtxoMap unspentOut + checkScriptRef unspentOut + where + updateRefScriptsUtxoMap + :: TransactionUnspentOutput -> ConstraintsM a Unit + updateRefScriptsUtxoMap (TransactionUnspentOutput { input, output }) = + _refScriptsUtxoMap %= Map.insert input output + + checkScriptRef + :: TransactionUnspentOutput + -> ConstraintsM a (Either MkUnbalancedTxError Unit) + checkScriptRef (TransactionUnspentOutput { output }) = + let + refScriptHash :: Maybe ScriptHash + refScriptHash = _.referenceScript $ unwrap $ (unwrap output).output + + err :: ConstraintsM a (Either MkUnbalancedTxError Unit) + err = pure $ throwError $ WrongRefScriptHash refScriptHash + in + if Just (unwrap scriptHash) /= refScriptHash then err + else pure (Right unit) + +checkRefNative + :: forall (a :: Type) + . InputWithScriptRef + -> ConstraintsM a (Either MkUnbalancedTxError Boolean) +checkRefNative scriptRef = pure $ note (WrongRefScriptHash Nothing) $ isNative + (unwrap (unwrap uout).output).scriptRef + where + isNative ref = ref >>= + ( case _ of + NativeScriptRef _ -> pure true + _ -> pure false + ) + + uout :: TransactionUnspentOutput + uout = case scriptRef of + RefInput ref' -> ref' + SpendInput ref' -> ref' + +-- | Modify the `UnbalancedTx` so that it satisfies the constraints, if +-- | possible. Fails if a hash is missing from the lookups, or if an output +-- | of the wrong type is spent. +processConstraint + :: forall (a :: Type) + . Map MintingPolicyHash MintingPolicy + -> Map ValidatorHash Validator + -> TxConstraint + -> ConstraintsM a (Either MkUnbalancedTxError Unit) +processConstraint mpsMap osMap c = do + queryHandle <- lift $ getQueryHandle + case c of + MustIncludeDatum dat -> addDatum dat + MustValidateIn posixTimeRange -> do + { systemStart } <- asks _.ledgerConstants + eraSummaries <- liftAff $ + queryHandle.getEraSummaries + >>= either (liftEffect <<< throw <<< show) pure + runExceptT do + ({ timeToLive, validityStartInterval }) <- ExceptT $ liftEffect $ + posixTimeRangeToTransactionValidity eraSummaries + systemStart + posixTimeRange + <#> lmap (CannotConvertPOSIXTimeRange posixTimeRange) + _cpsTransaction <<< _body <<< _Newtype %= + _ + { ttl = timeToLive + , validityStartInterval = validityStartInterval + } + MustBeSignedBy pkh -> runExceptT do + -- FIXME This is incompatible with Plutus' version, which requires + -- the corresponding `paymentPubKey` lookup. In the next major version, + -- we might wish to revise this + -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 + _cpsTransaction <<< _body <<< _requiredSigners <>= Just + [ wrap $ unwrap $ unwrap pkh ] + MustSpendAtLeast plutusValue -> do + let value = fromPlutusValue plutusValue + runExceptT $ _valueSpentBalancesInputs <>= requireValue value + MustProduceAtLeast plutusValue -> do + let value = fromPlutusValue plutusValue + runExceptT $ _valueSpentBalancesOutputs <>= requireValue value + MustSpendPubKeyOutput txo -> runExceptT do + TransactionOutput { amount } <- ExceptT $ lookupTxOutRef txo Nothing + -- POTENTIAL FIX ME: Plutus has Tx.TxIn and Tx.PubKeyTxIn -- TxIn + -- keeps track TransactionInput and TxInType (the input type, whether + -- consuming script, public key or simple script) + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + _valueSpentBalancesInputs <>= provideValue amount + MustSpendScriptOutput txo red scriptRefUnspentOut -> runExceptT do + txOut <- ExceptT $ lookupTxOutRef txo scriptRefUnspentOut + case txOut of + TransactionOutput { datum: NoOutputDatum } -> + throwError $ TxOutRefWrongType txo + TransactionOutput { address, amount, datum: datum' } -> + do + vHash <- liftM + (CannotGetValidatorHashFromAddress address) + (addressPaymentValidatorHash address) + case scriptRefUnspentOut of + Nothing -> do + plutusScript <- + except $ unwrap <$> lookupValidator vHash osMap + ExceptT $ attachToCps attachPlutusScript plutusScript + Just scriptRefUnspentOut' -> + ExceptT $ processScriptRefUnspentOut vHash scriptRefUnspentOut' + -- Note: Plutus uses `TxIn` to attach a redeemer and datum. + -- Use the datum hash inside the lookup + case datum' of + OutputDatumHash dHash -> do + dat <- ExceptT do + mDatumLookup <- lookupDatum dHash + if isRight mDatumLookup then + pure mDatumLookup + else + liftAff $ queryHandle.getDatumByHash dHash <#> hush + >>> Bind.join + >>> note + (CannotQueryDatum dHash) + ExceptT $ addDatum dat + OutputDatum _ -> pure unit + NoOutputDatum -> throwError CannotFindDatum + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + let + uiRedeemer = UnindexedRedeemer + { purpose: ForSpend txo + , datum: unwrap red + } + _redeemers <>= [ uiRedeemer ] + _valueSpentBalancesInputs <>= provideValue amount + MustSpendNativeScriptOutput txo ns -> runExceptT do + _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + ExceptT $ attachToCps attachNativeScript ns + MustReferenceOutput refInput -> runExceptT do + _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput + MustMintValue mpsHash red tn i scriptRefUnspentOut -> runExceptT do + case scriptRefUnspentOut of + Nothing -> do + mp <- except $ lookupMintingPolicy mpsHash mpsMap + ( case mp of + PlutusMintingPolicy p -> + ( ExceptT $ attachToCps + attachPlutusScript + p + ) + NativeMintingPolicy _ -> throwError $ + ExpectedPlutusScriptGotNativeScript mpsHash + ) + Just scriptRefUnspentOut' -> do + isNative <- ExceptT $ checkRefNative scriptRefUnspentOut' + when isNative $ throwError $ ExpectedPlutusScriptGotNativeScript + mpsHash + (ExceptT $ processScriptRefUnspentOut mpsHash scriptRefUnspentOut') + + cs <- + liftM (MintingPolicyHashNotCurrencySymbol mpsHash) (mpsSymbol mpsHash) + let value = mkSingletonValue' cs tn + -- If i is negative we are burning tokens. The tokens burned must + -- be provided as an input. So we add the value burnt to + -- 'valueSpentBalancesInputs'. If i is positive then new tokens are + -- created which must be added to 'valueSpentBalancesOutputs'. + -- If i is zero we raise error, because of + -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1156 + mintVal <- + if i < zero then do + v <- liftM (CannotMakeValue cs tn i) (value $ negate i) + _valueSpentBalancesInputs <>= provideValue v + pure $ map getNonAdaAsset $ value i + else if i == zero then do + throwError $ CannotMintZero cs tn + else do + v <- liftM (CannotMakeValue cs tn i) (value i) + _valueSpentBalancesOutputs <>= provideValue v + pure $ map getNonAdaAsset $ value i + _redeemers <>= + [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] + -- Remove mint redeemers from array before reindexing. + _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal + + MustMintValueUsingNativeScript ns tn i -> runExceptT do + let mpHash = wrap <<< unwrap <<< nativeScriptHash $ ns + + ExceptT $ attachToCps attachNativeScript ns + + cs <- liftM (MintingPolicyHashNotCurrencySymbol mpHash) (mpsSymbol mpHash) + let value = mkSingletonValue' cs tn + -- If i is negative we are burning tokens. The tokens burned must + -- be provided as an input. So we add the value burnt to + -- 'valueSpentBalancesInputs'. If i is positive then new tokens are + -- created which must be added to 'valueSpentBalancesOutputs'. + mintVal <- + if i < zero then do + v <- liftM (CannotMakeValue cs tn i) (value $ negate i) + _valueSpentBalancesInputs <>= provideValue v + pure $ map getNonAdaAsset $ value i + else do + v <- liftM (CannotMakeValue cs tn i) (value i) + _valueSpentBalancesOutputs <>= provideValue v + pure $ map getNonAdaAsset $ value i + + _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal + + MustPayToPubKeyAddress pkh skh mDatum scriptRef plutusValue -> do + networkId <- getNetworkId + let amount = fromPlutusValue plutusValue + runExceptT do + -- If non-inline datum is presented, add it to 'datumWitnesses' and + -- Array of datums. + datum' <- for mDatum \(dat /\ datp) -> do + when (datp == DatumWitness) $ ExceptT $ addDatum dat + pure $ outputDatum dat datp + let + address = case skh of + Just skh' -> payPubKeyHashBaseAddress networkId pkh skh' + Nothing -> payPubKeyHashEnterpriseAddress networkId pkh + txOut = TransactionOutput + { address + , amount + , datum: fromMaybe NoOutputDatum datum' + , scriptRef: scriptRef + } + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut + _valueSpentBalancesOutputs <>= provideValue amount + MustPayToScript vlh mbCredential dat datp scriptRef plutusValue -> do + networkId <- getNetworkId + let amount = fromPlutusValue plutusValue + runExceptT do + let + datum' = outputDatum dat datp + txOut = TransactionOutput + { address: case mbCredential of + Nothing -> validatorHashEnterpriseAddress networkId vlh + Just cred -> baseAddressToAddress $ baseAddress + { network: networkId + , paymentCred: scriptHashCredential (unwrap vlh) + , delegationCred: credentialToStakeCredential cred + } + , amount + , datum: datum' + , scriptRef: scriptRef + } + -- Note we don't `addDatum` as this included as part of `mustPayToScript` + -- constraint already. + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut + _valueSpentBalancesOutputs <>= provideValue amount + MustPayToNativeScript nsh mbCredential plutusValue -> do + networkId <- getNetworkId + let amount = fromPlutusValue plutusValue + runExceptT do + let + txOut = TransactionOutput + { address: case mbCredential of + Nothing -> validatorHashEnterpriseAddress networkId + (wrap $ unwrap nsh) + Just cred -> baseAddressToAddress $ baseAddress + { network: networkId + , paymentCred: scriptHashCredential (unwrap nsh) + , delegationCred: credentialToStakeCredential cred + } + , amount + , datum: NoOutputDatum + , scriptRef: Nothing + } + _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut + _valueSpentBalancesOutputs <>= provideValue amount + MustHashDatum dh dt -> do + let dh' = Hashing.datumHash dt + if dh' == dh then addDatum dt + else pure $ throwError $ DatumWrongHash dh dt + MustRegisterStakePubKey skh -> runExceptT do + void $ lift $ addCertificate + $ StakeRegistration + $ keyHashCredential + $ unwrap + $ unwrap skh + MustDeregisterStakePubKey pubKey -> runExceptT do + void $ lift $ addCertificate + $ StakeDeregistration + $ keyHashCredential + $ unwrap + $ unwrap pubKey + MustRegisterStakeScript scriptHash -> runExceptT do + void $ lift $ addCertificate + $ StakeRegistration + $ scriptHashCredential + $ unwrap scriptHash + MustDeregisterStakePlutusScript plutusScript redeemerData -> runExceptT do + let + cert = StakeDeregistration + ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash + plutusScript + ) + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForCert cert, datum: unwrap redeemerData } + ] + void $ lift $ addCertificate cert + ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) + MustDeregisterStakeNativeScript stakeValidator -> do + void $ addCertificate $ StakeDeregistration + $ scriptHashCredential + $ unwrap + $ nativeScriptStakeValidatorHash + stakeValidator + attachToCps attachNativeScript (unwrap stakeValidator) + MustRegisterPool poolParams -> runExceptT do + void $ lift $ addCertificate $ PoolRegistration poolParams + MustRetirePool poolKeyHash epoch -> runExceptT do + void $ lift $ addCertificate $ PoolRetirement { poolKeyHash, epoch } + MustDelegateStakePubKey stakePubKeyHash poolKeyHash -> runExceptT do + void $ lift $ addCertificate $ + StakeDelegation (keyHashCredential $ unwrap $ unwrap $ stakePubKeyHash) + poolKeyHash + MustDelegateStakePlutusScript stakeValidator redeemerData poolKeyHash -> + runExceptT do + let + cert = StakeDelegation + ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash + stakeValidator + ) + poolKeyHash + lift $ addCertificate cert + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForCert cert, datum: unwrap redeemerData } + ] + ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) + MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do + void $ addCertificate $ StakeDelegation + ( scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash + stakeValidator + ) + poolKeyHash + attachToCps attachNativeScript (unwrap stakeValidator) + MustWithdrawStakePubKey spkh -> runExceptT do + networkId <- lift getNetworkId + mbRewards <- lift $ lift $ wrapQueryM $ getPubKeyHashDelegationsAndRewards + spkh + ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsPubKey spkh) + mbRewards + let + rewardAddress = + RewardAddress.stakePubKeyHashRewardAddress networkId spkh + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + MustWithdrawStakePlutusScript stakeValidator redeemerData -> runExceptT do + let hash = plutusScriptStakeValidatorHash stakeValidator + networkId <- lift getNetworkId + mbRewards <- lift $ lift $ wrapQueryM $ + getValidatorHashDelegationsAndRewards hash + let + rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId + hash + ({ rewards }) <- ExceptT $ pure $ note + (CannotWithdrawRewardsPlutusScript stakeValidator) + mbRewards + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + _redeemers <>= + [ UnindexedRedeemer + { purpose: ForReward rewardAddress, datum: unwrap redeemerData } + ] + ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) + MustWithdrawStakeNativeScript stakeValidator -> runExceptT do + let hash = nativeScriptStakeValidatorHash stakeValidator + networkId <- lift getNetworkId + mbRewards <- lift $ lift $ wrapQueryM $ + getValidatorHashDelegationsAndRewards hash + let + rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId + hash + ({ rewards }) <- ExceptT $ pure $ note + (CannotWithdrawRewardsNativeScript stakeValidator) + mbRewards + _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= + Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + ExceptT $ attachToCps attachNativeScript (unwrap stakeValidator) + MustSatisfyAnyOf xs -> do + cps <- get + let + -- For each sublist, process the constraint from left to right, using the + -- new state in the subsequent call. If we fail, reset to the initial + -- state, `cps` and attempt for the next sublist. If a sublist is + -- processed successfully, we can stop early - I think this is how Plutus + -- behaves (POTENTIAL FIX ME). If all sublists fail, we fail overall as + -- seen in the base case. + tryNext + :: List (List TxConstraint) + -> ConstraintsM a (Either MkUnbalancedTxError Unit) + tryNext Nil = pure $ throwError CannotSatisfyAny + tryNext (Cons ys zs) = + -- Note this implicitly resets state to original cps upon failure (see + -- `put`) + foldM + ( \_ constr -> runExceptT do + let continue = put cps *> tryNext zs + ( ExceptT $ processConstraint mpsMap osMap constr + `catchError` \_ -> continue + ) + `catchError` \_ -> ExceptT continue + ) + (Right unit) + ys + tryNext (toUnfoldable $ map toUnfoldable xs) + MustNotBeValid -> runExceptT do + _cpsTransaction <<< _isValid .= false + where + outputDatum + :: Datum + -> DatumPresence + -> OutputDatum + outputDatum dat = case _ of + DatumInline -> OutputDatum dat + DatumWitness -> OutputDatumHash $ Hashing.datumHash dat + +credentialToStakeCredential :: Credential -> StakeCredential +credentialToStakeCredential cred = case cred of + PubKeyCredential pubKeyHash -> keyHashCredential (unwrap pubKeyHash) + ScriptCredential scriptHash -> scriptHashCredential (unwrap scriptHash) + +-- Attach a Datum, Redeemer, or PlutusScript depending on the handler. They +-- share error type anyway. +attachToCps + :: forall (a :: Type) (b :: Type) + . (a -> Transaction -> Effect (Either ModifyTxError Transaction)) + -> a -- Redeemer, Datum, or PlutusScript. + -> ConstraintsM b (Either MkUnbalancedTxError Unit) +attachToCps handler object = do + tx <- use _cpsTransaction + newTx <- liftEffect $ handler object tx <#> lmap ModifyTx + either + (pure <<< throwError) + (map Right <<< (.=) _cpsTransaction) + newTx + +-- Attaches datum to the transaction and to Array of datums in the state. +addDatum + :: forall (a :: Type) + . Datum + -> ConstraintsM a (Either MkUnbalancedTxError Unit) +addDatum dat = runExceptT do + ExceptT $ attachToCps attachDatum dat + _datums <>= Array.singleton dat + +-- | Returns an index pointing to the location of the newly inserted certificate +-- | in the array of transaction certificates. +addCertificate + :: forall (a :: Type) + . Certificate + -> ConstraintsM a Unit +addCertificate cert = do + _cpsTransaction <<< _body <<< _certs <<< non [] %= Array.(:) cert + +getNetworkId + :: forall (a :: Type) + . ConstraintsM a NetworkId +getNetworkId = use (_cpsTransaction <<< _body <<< _networkId) + >>= maybe (asks _.networkId) pure + +mkUnbalancedTxImpl + :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) + . ValidatorTypes validator datum redeemer + => IsData datum + => IsData redeemer + => ScriptLookups validator + -> TxConstraints redeemer datum + -> Contract (Either MkUnbalancedTxError UnbalancedTx) +mkUnbalancedTxImpl scriptLookups txConstraints = + runConstraintsM scriptLookups txConstraints <#> map + \{ transaction, datums, redeemers, utxoIndex } -> + wrap + { transaction: stripDatumsRedeemers $ stripScriptDataHash transaction + , datums + , redeemers + , utxoIndex + } + where + stripScriptDataHash :: Transaction -> Transaction + stripScriptDataHash = + _body <<< _scriptDataHash .~ Nothing + + stripDatumsRedeemers :: Transaction -> Transaction + stripDatumsRedeemers = _witnessSet %~ + over TransactionWitnessSet + _ { plutusData = Nothing, redeemers = Nothing } diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs new file mode 100644 index 000000000..8d762d672 --- /dev/null +++ b/src/Internal/ProcessConstraints/Error.purs @@ -0,0 +1,64 @@ +module Ctl.Internal.ProcessConstraints.Error where + +import Prelude + +import Ctl.Internal.Cardano.Types.Value (CurrencySymbol) +import Ctl.Internal.Serialization.Address (Address) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Ctl.Internal.Transaction (ModifyTxError) +import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError) +import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) +import Ctl.Internal.Types.Scripts + ( MintingPolicy + , MintingPolicyHash + , NativeScriptStakeValidator + , PlutusScriptStakeValidator + , Validator + , ValidatorHash + ) +import Ctl.Internal.Types.TokenName (TokenName) +import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Types.TypedTxOut (TypeCheckError) +import Data.BigInt (BigInt) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe) +import Data.Show.Generic (genericShow) + +data MkUnbalancedTxError + = CannotConvertPaymentPubKeyHash PaymentPubKeyHash + | CannotFindDatum + | CannotQueryDatum DataHash + | CannotConvertPOSIXTimeRange POSIXTimeRange PosixTimeToSlotError + | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange + | CannotGetMintingPolicyScriptIndex -- Should be impossible + | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` + | CannotHashDatum Datum + | CannotHashMintingPolicy MintingPolicy + | CannotHashValidator Validator + | CannotMakeValue CurrencySymbol TokenName BigInt + | CannotWithdrawRewardsPubKey StakePubKeyHash + | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator + | CannotWithdrawRewardsNativeScript NativeScriptStakeValidator + | DatumNotFound DataHash + | DatumWrongHash DataHash Datum + | MintingPolicyHashNotCurrencySymbol MintingPolicyHash + | MintingPolicyNotFound MintingPolicyHash + | ModifyTx ModifyTxError + | OwnPubKeyAndStakeKeyMissing + | TxOutRefNotFound TransactionInput + | TxOutRefWrongType TransactionInput + | TypeCheckFailed TypeCheckError + | TypedTxOutHasNoDatumHash + | TypedValidatorMissing + | ValidatorHashNotFound ValidatorHash + | WrongRefScriptHash (Maybe ScriptHash) + | CannotSatisfyAny + | ExpectedPlutusScriptGotNativeScript MintingPolicyHash + | CannotMintZero CurrencySymbol TokenName + +derive instance Generic MkUnbalancedTxError _ +derive instance Eq MkUnbalancedTxError + +instance Show MkUnbalancedTxError where + show = genericShow diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs new file mode 100644 index 000000000..745b483cf --- /dev/null +++ b/src/Internal/ProcessConstraints/State.purs @@ -0,0 +1,159 @@ +module Ctl.Internal.ProcessConstraints.State + ( ConstraintsM + , ConstraintProcessingState + , _cpsTransaction + , _cpsUtxoIndex + , _valueSpentBalancesInputs + , _valueSpentBalancesOutputs + , _datums + , _costModels + , _redeemers + , _lookups + , _refScriptsUtxoMap + , ValueSpentBalances(ValueSpentBalances) + , missingValueSpent + , totalMissingValue + , provideValue + , requireValue + ) where + +import Prelude hiding (join) + +import Control.Monad.State.Trans (StateT) +import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) +import Ctl.Internal.Cardano.Types.Transaction + ( Costmdls + , Transaction + , TransactionOutput + ) +import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T +import Ctl.Internal.Cardano.Types.Value (Value, negation, split) +import Ctl.Internal.Contract.Monad (Contract) +import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus +import Ctl.Internal.Types.Datum (Datum) +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) +import Ctl.Internal.Types.Scripts (MintingPolicyHash) +import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.Generic.Rep (class Generic) +import Data.Lattice (join) +import Data.Lens.Record (prop) +import Data.Lens.Types (Lens') +import Data.Map (Map) +import Data.Show.Generic (genericShow) +import Data.Symbol (SProxy(SProxy)) +import Data.Tuple.Nested ((/\)) + +-- A `StateT` ontop of `QueryM` ~ ReaderT QueryConfig Aff`. +-- The state is `ConstraintProcessingState`, which keeps track of the unbalanced +-- transaction etc and additionally holds a `ConstraintsConfig` containing the +-- scriptlookups and a `defaultSlotConfig`. +-- We write `ReaderT QueryConfig Aff` below since type synonyms need to be fully +-- applied. +type ConstraintsM (a :: Type) (b :: Type) = + StateT (ConstraintProcessingState a) Contract b + +-- This is the state for essentially creating an unbalanced transaction. +type ConstraintProcessingState (a :: Type) = + { transaction :: Transaction + , utxoIndex :: Map TransactionInput TransactionOutput + -- The unbalanced transaction that we're building + , valueSpentBalancesInputs :: ValueSpentBalances + -- Balance of the values given and required for the transaction's inputs + , valueSpentBalancesOutputs :: ValueSpentBalances + -- Balance of the values produced and required for the transaction's outputs + , datums :: Array Datum + -- Ordered accumulation of datums we can use to `setScriptDataHash` + , redeemers :: Array UnindexedRedeemer + , mintRedeemers :: Map MintingPolicyHash T.Redeemer + -- Mint redeemers with the corresponding minting policy hashes. + -- We need to reindex mint redeemers every time we add a new one, since + -- indexing relies on policy id ordering. + , lookups :: ScriptLookups a + -- ScriptLookups for resolving constraints. Should be treated as an immutable + -- value despite living inside the processing state + , refScriptsUtxoMap :: + Map TransactionInput Plutus.TransactionOutputWithRefScript + , costModels :: Costmdls + } + +_cpsTransaction + :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction +_cpsTransaction = prop (SProxy :: SProxy "transaction") + +_cpsUtxoIndex + :: forall (a :: Type) + . Lens' (ConstraintProcessingState a) + (Map TransactionInput TransactionOutput) +_cpsUtxoIndex = prop (SProxy :: SProxy "utxoIndex") + +_valueSpentBalancesInputs + :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances +_valueSpentBalancesInputs = prop (SProxy :: SProxy "valueSpentBalancesInputs") + +_valueSpentBalancesOutputs + :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances +_valueSpentBalancesOutputs = prop (SProxy :: SProxy "valueSpentBalancesOutputs") + +_datums + :: forall (a :: Type). Lens' (ConstraintProcessingState a) (Array Datum) +_datums = prop (SProxy :: SProxy "datums") + +_costModels + :: forall (a :: Type). Lens' (ConstraintProcessingState a) Costmdls +_costModels = prop (SProxy :: SProxy "costModels") + +_redeemers + :: forall (a :: Type) + . Lens' (ConstraintProcessingState a) + (Array UnindexedRedeemer) +_redeemers = prop (SProxy :: SProxy "redeemers") + +_lookups + :: forall (a :: Type). Lens' (ConstraintProcessingState a) (ScriptLookups a) +_lookups = prop (SProxy :: SProxy "lookups") + +_refScriptsUtxoMap + :: forall (a :: Type) + . Lens' (ConstraintProcessingState a) + (Map TransactionInput Plutus.TransactionOutputWithRefScript) +_refScriptsUtxoMap = prop (SProxy :: SProxy "refScriptsUtxoMap") + +-- | The balances we track for computing the missing 'Value' (if any) +-- | that needs to be added to the transaction. +-- | See note [Balance of value spent]. +newtype ValueSpentBalances = ValueSpentBalances + { required :: Value + -- Required value spent by the transaction. + , provided :: Value + -- Value provided by an input or output of the transaction. + } + +derive instance Generic ValueSpentBalances _ + +instance Show ValueSpentBalances where + show = genericShow + +instance Semigroup ValueSpentBalances where + append (ValueSpentBalances l) (ValueSpentBalances r) = ValueSpentBalances + { required: l.required `join` r.required -- least upper bound on Value + , provided: l.provided `join` r.provided + } + +missingValueSpent :: ValueSpentBalances -> Value +missingValueSpent (ValueSpentBalances { required, provided }) = + let + difference = required <> negation provided + _ /\ missing = split difference + in + missing + +totalMissingValue :: forall (a :: Type). ConstraintProcessingState a -> Value +totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = + missingValueSpent valueSpentBalancesInputs `join` + missingValueSpent valueSpentBalancesOutputs + +provideValue :: Value -> ValueSpentBalances +provideValue provided = ValueSpentBalances { provided, required: mempty } + +requireValue :: Value -> ValueSpentBalances +requireValue required = ValueSpentBalances { required, provided: mempty } diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index b73c0a6b0..7354d06ab 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -50,6 +50,7 @@ import Ctl.Internal.Deserialization.Keys (freshPrivateKey) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.Plutus.Types.Transaction (_amount, _output) import Ctl.Internal.Plutus.Types.Value (Value, lovelaceValueOf) +import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Serialization.Address (addressBech32) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) import Ctl.Internal.Test.TestPlanM (TestPlanM) @@ -59,7 +60,7 @@ import Ctl.Internal.Test.UtxoDistribution , encodeDistribution , keyWallets ) -import Ctl.Internal.Types.ScriptLookups (mkUnbalancedTx, unspentOutputs) +import Ctl.Internal.Types.ScriptLookups (unspentOutputs) import Ctl.Internal.Types.TxConstraints ( TxConstraint(MustPayToPubKeyAddress) , TxConstraints @@ -381,7 +382,8 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = <> foldMap mustBeSignedBy pkhs lookups = unspentOutputs utxos - unbalancedTx <- liftedE $ mkUnbalancedTx (lookups :: _ Void) constraints + unbalancedTx <- liftedE $ mkUnbalancedTxImpl (lookups :: _ Void) + constraints balancedTx <- liftedE $ balanceTx unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 7db7fe999..e04cf53d0 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,42 +1,8 @@ module Ctl.Internal.Types.ScriptLookups - ( MkUnbalancedTxError - ( CannotConvertPOSIXTimeRange - , CannotSolveTimeConstraints - , CannotConvertPaymentPubKeyHash - , CannotFindDatum - , CannotGetMintingPolicyScriptIndex - , CannotGetValidatorHashFromAddress - , CannotHashDatum - , CannotHashMintingPolicy - , CannotHashValidator - , CannotMakeValue - , CannotQueryDatum - , CannotSatisfyAny - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsNativeScript - , CannotWithdrawRewardsPubKey - , DatumNotFound - , DatumWrongHash - , MintingPolicyHashNotCurrencySymbol - , MintingPolicyNotFound - , ModifyTx - , OwnPubKeyAndStakeKeyMissing - , TxOutRefNotFound - , TxOutRefWrongType - , TypeCheckFailed - , TypedTxOutHasNoDatumHash - , TypedValidatorMissing - , ValidatorHashNotFound - , WrongRefScriptHash - , ExpectedPlutusScriptGotNativeScript - , CannotMintZero - ) - , ScriptLookups(ScriptLookups) + ( ScriptLookups(ScriptLookups) , generalise , mintingPolicy , mintingPolicyM - , mkUnbalancedTx - , mkUnbalancedTx' , datum , validator , validatorM @@ -50,7 +16,6 @@ module Ctl.Internal.Types.ScriptLookups , unspentOutputsM ) where -import Ctl.Internal.ProcessConstraints.UnbalancedTx import Prelude hiding (join) import Contract.Hashing (plutusScriptStakeValidatorHash) @@ -120,6 +85,8 @@ import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as import Ctl.Internal.Plutus.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) +import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.QueryM.Pools ( getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards @@ -436,972 +403,3 @@ ownStakePubKeyHash skh = ownStakePubKeyHashM :: forall (a :: Type). StakePubKeyHash -> Maybe (ScriptLookups a) ownStakePubKeyHashM = pure <<< ownStakePubKeyHash - --- -Note [Balance of value spent] - --- To build a transaction that satisfies the 'MustSpendAtLeast' and --- `MustProduceAtLeast` constraints, we keep a tally of the required and --- actual values we encounter on either side of the transaction. Then we --- compute the missing value on both sides, and add an input with the --- join of the positive parts of the missing values. - --- | The balances we track for computing the missing 'Value' (if any) --- | that needs to be added to the transaction. --- | See note [Balance of value spent]. -newtype ValueSpentBalances = ValueSpentBalances - { required :: Value - -- Required value spent by the transaction. - , provided :: Value - -- Value provided by an input or output of the transaction. - } - -derive instance Generic ValueSpentBalances _ - -instance Show ValueSpentBalances where - show = genericShow - -instance Semigroup ValueSpentBalances where - append (ValueSpentBalances l) (ValueSpentBalances r) = ValueSpentBalances - { required: l.required `join` r.required -- least upper bound on Value - , provided: l.provided `join` r.provided - } - --- This is the state for essentially creating an unbalanced transaction. -type ConstraintProcessingState (a :: Type) = - { transaction :: Transaction - , utxoIndex :: Map TransactionInput TransactionOutput - -- The unbalanced transaction that we're building - , valueSpentBalancesInputs :: ValueSpentBalances - -- Balance of the values given and required for the transaction's inputs - , valueSpentBalancesOutputs :: ValueSpentBalances - -- Balance of the values produced and required for the transaction's outputs - , datums :: Array Datum - -- Ordered accumulation of datums we can use to `setScriptDataHash` - , redeemers :: Array UnindexedRedeemer - , mintRedeemers :: Map MintingPolicyHash T.Redeemer - -- Mint redeemers with the corresponding minting policy hashes. - -- We need to reindex mint redeemers every time we add a new one, since - -- indexing relies on policy id ordering. - , lookups :: ScriptLookups a - -- ScriptLookups for resolving constraints. Should be treated as an immutable - -- value despite living inside the processing state - , refScriptsUtxoMap :: - Map TransactionInput Plutus.TransactionOutputWithRefScript - , costModels :: Costmdls - } - -_cpsTransaction - :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction -_cpsTransaction = prop (SProxy :: SProxy "transaction") - -_cpsUtxoIndex - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) - (Map TransactionInput TransactionOutput) -_cpsUtxoIndex = prop (SProxy :: SProxy "utxoIndex") - -_valueSpentBalancesInputs - :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances -_valueSpentBalancesInputs = prop (SProxy :: SProxy "valueSpentBalancesInputs") - -_valueSpentBalancesOutputs - :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances -_valueSpentBalancesOutputs = prop (SProxy :: SProxy "valueSpentBalancesOutputs") - -_datums - :: forall (a :: Type). Lens' (ConstraintProcessingState a) (Array Datum) -_datums = prop (SProxy :: SProxy "datums") - -_costModels - :: forall (a :: Type). Lens' (ConstraintProcessingState a) Costmdls -_costModels = prop (SProxy :: SProxy "costModels") - -_redeemers - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) - (Array UnindexedRedeemer) -_redeemers = prop (SProxy :: SProxy "redeemers") - -_lookups - :: forall (a :: Type). Lens' (ConstraintProcessingState a) (ScriptLookups a) -_lookups = prop (SProxy :: SProxy "lookups") - -_refScriptsUtxoMap - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) - (Map TransactionInput Plutus.TransactionOutputWithRefScript) -_refScriptsUtxoMap = prop (SProxy :: SProxy "refScriptsUtxoMap") - -missingValueSpent :: ValueSpentBalances -> Value -missingValueSpent (ValueSpentBalances { required, provided }) = - let - difference = required <> negation provided - _ /\ missing = split difference - in - missing - -totalMissingValue :: forall (a :: Type). ConstraintProcessingState a -> Value -totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = - missingValueSpent valueSpentBalancesInputs `join` - missingValueSpent valueSpentBalancesOutputs - -provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided, required: mempty } - -requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required, provided: mempty } - --- A `StateT` ontop of `QueryM` ~ ReaderT QueryConfig Aff`. --- The state is `ConstraintProcessingState`, which keeps track of the unbalanced --- transaction etc and additionally holds a `ConstraintsConfig` containing the --- scriptlookups and a `defaultSlotConfig`. --- We write `ReaderT QueryConfig Aff` below since type synonyms need to be fully --- applied. -type ConstraintsM (a :: Type) (b :: Type) = - StateT (ConstraintProcessingState a) Contract b - --- The constraints don't precisely match those of Plutus: --- `forall v. (FromData (DatumType v), ToData (DatumType v), ToData (RedeemerType v))` --- as we don't have the same granularity on the classes, but the type `v` fixes --- types `d` and `r` as seen below. We could alternatively create specific typeclasses: --- ToData (DatumType v) <-> (DatumType v d, ToData d) <= ToDataDatumType v d --- if we require granular control, similarly FromDataDatumType v d etc. --- We could use `MonadError` to clean up the `ExceptT`s below although we can't --- use the type alias because they need to be fully applied so this is perhaps --- more readable. --- | Resolve some `TxConstraints` by modifying the `UnbalancedTx` in the --- | `ConstraintProcessingState` -processLookupsAndConstraints - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => TxConstraints redeemer datum - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) -processLookupsAndConstraints - (TxConstraints { constraints, ownInputs, ownOutputs }) = runExceptT do - -- Hash all the MintingPolicys and Scripts beforehand. These maps are lost - -- after we `runReaderT`, unlike Plutus that has a `Map` instead of `Array`. - lookups <- use _lookups <#> unwrap - - let - mps = lookups.mps - scripts = lookups.scripts - mpsHashes = map mintingPolicyHash mps - validatorHashes = map validatorHash scripts - mpsMap = fromFoldable $ zip mpsHashes mps - osMap = fromFoldable $ zip validatorHashes scripts - - timeConstraintsSolved <- except $ resumeTimeConstraints constraints - - ExceptT $ foldConstraints (processConstraint mpsMap osMap) - timeConstraintsSolved - ExceptT $ foldConstraints (addOwnInput (Proxy :: Proxy datum)) ownInputs - ExceptT $ foldConstraints addOwnOutput ownOutputs - ExceptT addFakeScriptDataHash - ExceptT addMissingValueSpent - ExceptT updateUtxoIndex - - where - -- Don't write the output in terms of ExceptT because we can't write a - -- partially applied `ConstraintsM` meaning this is more readable. - foldConstraints - :: forall (constr :: Type) (c :: Type) - . (constr -> ConstraintsM c (Either MkUnbalancedTxError Unit)) - -> Array constr - -> ConstraintsM c (Either MkUnbalancedTxError Unit) - foldConstraints handler = - runExceptT <<< traverse_ (ExceptT <<< handler) - --- Helper to run the stack and get back to `QueryM`. See comments in --- `processLookupsAndConstraints` regarding constraints. -runConstraintsM - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError (ConstraintProcessingState validator)) -runConstraintsM lookups txConstraints = do - { costModels } <- unwrap <$> getProtocolParameters - let - initCps :: ConstraintProcessingState validator - initCps = - { transaction: mempty - , utxoIndex: Map.empty - , valueSpentBalancesInputs: - ValueSpentBalances { required: mempty, provided: mempty } - , valueSpentBalancesOutputs: - ValueSpentBalances { required: mempty, provided: mempty } - , datums: mempty - , redeemers: [] - , mintRedeemers: empty - , lookups - , refScriptsUtxoMap: empty - , costModels - } - - unpackTuple - :: Either MkUnbalancedTxError Unit /\ - (ConstraintProcessingState validator) - -> Either MkUnbalancedTxError (ConstraintProcessingState validator) - unpackTuple (Left err /\ _) = Left err - unpackTuple (_ /\ cps) = Right cps - unpackTuple <$> - flip runStateT initCps (processLookupsAndConstraints txConstraints) - --- See comments in `processLookupsAndConstraints` regarding constraints. --- | Create an `UnbalancedTx` given `ScriptLookups` and `TxConstraints`. -mkUnbalancedTx' - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError Transaction) -mkUnbalancedTx' scriptLookups txConstraints = - runConstraintsM scriptLookups txConstraints <#> map _.transaction - --- | An implementation that strips `witnessSet` and data hash from --- | returned `UnbalancedTx` in order to calculate them later on server. --- | It returns part of the `ConstraintProcessingState` for later consumption by --- | the server. The `Spend` redeemers will require reindexing and all hardcoded --- | to `zero` from this function. -mkUnbalancedTx - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError UnbalancedTx) -mkUnbalancedTx scriptLookups txConstraints = - runConstraintsM scriptLookups txConstraints <#> map - \{ transaction, datums, redeemers, utxoIndex } -> - wrap - { transaction: stripDatumsRedeemers $ stripScriptDataHash transaction - , datums - , redeemers - , utxoIndex - } - where - stripScriptDataHash :: Transaction -> Transaction - stripScriptDataHash = - _body <<< _scriptDataHash .~ Nothing - - stripDatumsRedeemers :: Transaction -> Transaction - stripDatumsRedeemers = _witnessSet %~ - over TransactionWitnessSet - _ { plutusData = Nothing, redeemers = Nothing } - --- | Adds a placeholder for ScriptDataHash. It will be wrong at this stage, --- | because ExUnits hasn't been estimated yet. It will serve as a --- | placeholder that will have the same size as the correct value. -addFakeScriptDataHash - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) -addFakeScriptDataHash = runExceptT do - dats <- use _datums - costModels <- use _costModels - -- Use both script and minting redeemers in the order they were appended. - reds <- use (_redeemers <<< to (map unindexedRedeemerToRedeemer)) - tx <- use _cpsTransaction - tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> - Right - _cpsTransaction .= tx' - --- | Add the remaining balance of the total value that the tx must spend. --- | See note [Balance of value spent] -addMissingValueSpent - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) -addMissingValueSpent = do - missing <- gets totalMissingValue - networkId <- getNetworkId - if isZero missing then pure $ Right unit - else runExceptT do - -- add 'missing' to the transaction's outputs. This ensures that the - -- wallet will add a corresponding input when balancing the - -- transaction. - -- Step 4 of the process described in [Balance of value spent] - lookups <- use _lookups <#> unwrap - let - pkh' = lookups.ownPaymentPubKeyHash - skh' = lookups.ownStakePubKeyHash - -- Potential fix me: This logic may be suspect: - txOutAddress <- case pkh', skh' of - Nothing, Nothing -> throwError OwnPubKeyAndStakeKeyMissing - Just pkh, Just skh -> pure $ payPubKeyHashBaseAddress networkId pkh skh - Just pkh, Nothing -> pure $ payPubKeyHashEnterpriseAddress networkId pkh - Nothing, Just skh -> pure $ stakePubKeyHashRewardAddress networkId skh - let - txOut = TransactionOutput - { address: txOutAddress - , amount: missing - , datum: NoOutputDatum - , scriptRef: Nothing - } - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - -updateUtxoIndex - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) -updateUtxoIndex = runExceptT do - txOutputs <- use _lookups <#> unwrap >>> _.txOutputs - refScriptsUtxoMap <- use _refScriptsUtxoMap - networkId <- lift getNetworkId - let - cTxOutputs :: Map TransactionInput TransactionOutput - cTxOutputs = - (txOutputs `union` refScriptsUtxoMap) - <#> fromPlutusTxOutputWithRefScript networkId - -- Left bias towards original map, hence `flip`: - _cpsUtxoIndex %= flip union cTxOutputs - --- Note, we don't use the redeemer here, unlike Plutus because of our lack of --- `TxIn` datatype. --- | Add a typed input, checking the type of the output it spends. Return the value --- | of the spent output. -addOwnInput - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => Proxy datum - -> InputConstraint redeemer - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) -addOwnInput _pd (InputConstraint { txOutRef }) = do - networkId <- getNetworkId - runExceptT do - ScriptLookups { txOutputs, typedValidator } <- use _lookups - -- Convert to Cardano type - let cTxOutputs = map (fromPlutusTxOutputWithRefScript networkId) txOutputs - inst <- liftM TypedValidatorMissing typedValidator - -- This line is to type check the `TransactionInput`. Plutus actually creates a `TxIn` - -- but we don't have such a datatype for our `TxBody`. Therefore, if we pass - -- this line, we just insert `TransactionInput` into the body. - typedTxOutRef <- ExceptT $ lift $ - typeTxOutRef networkId (flip lookup cTxOutputs) inst txOutRef - <#> lmap TypeCheckFailed - let value = typedTxOutRefValue typedTxOutRef - -- Must be inserted in order. Hopefully this matches the order under CSL - _cpsTransaction <<< _body <<< _inputs %= Set.insert txOutRef - _valueSpentBalancesInputs <>= provideValue value - --- | Add a typed output and return its value. -addOwnOutput - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => ToData datum - => OutputConstraint datum - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) -addOwnOutput (OutputConstraint { datum: d, value }) = do - queryHandle <- lift $ getQueryHandle - networkId <- getNetworkId - runExceptT do - ScriptLookups { typedValidator } <- use _lookups - inst <- liftM TypedValidatorMissing typedValidator - let - value' = fromPlutusValue value - typedTxOut = mkTypedTxOut networkId inst d value' - txOut = typedTxOutTxOut typedTxOut - -- We are erroring if we don't have a datumhash given the polymorphic datum - -- in the `OutputConstraint`: - dHash <- liftM TypedTxOutHasNoDatumHash (typedTxOutDatumHash typedTxOut) - dat <- ExceptT $ liftAff $ queryHandle.getDatumByHash dHash <#> hush - >>> Bind.join - >>> note (CannotQueryDatum dHash) - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - ExceptT $ addDatum dat - _valueSpentBalancesOutputs <>= provideValue value' - -resumeTimeConstraints - :: Array TxConstraint -> Either MkUnbalancedTxError (Array TxConstraint) -resumeTimeConstraints constraints = do - let - { no: nonTimeConstraints, yes: timeConstraints } = partition - isTimeConstraint - constraints - intervals = mapMaybe constraintToInterval timeConstraints - newInterval <- foldM mergeIntervals always intervals - pure $ cons (MustValidateIn newInterval) nonTimeConstraints - where - mergeIntervals - :: POSIXTimeRange - -> POSIXTimeRange - -> Either MkUnbalancedTxError POSIXTimeRange - mergeIntervals interval1 interval2 = - let - newInterval :: POSIXTimeRange - newInterval = intersection interval1 interval2 - in - if isEmpty newInterval then Left $ CannotSolveTimeConstraints interval1 - interval2 - else pure newInterval - - constraintToInterval :: TxConstraint -> Maybe POSIXTimeRange - constraintToInterval = case _ of - MustValidateIn x -> Just x - _ -> Nothing - - isTimeConstraint :: TxConstraint -> Boolean - isTimeConstraint (MustValidateIn _) = true - isTimeConstraint _ = false - -data MkUnbalancedTxError - = CannotConvertPaymentPubKeyHash PaymentPubKeyHash - | CannotFindDatum - | CannotQueryDatum DataHash - | CannotConvertPOSIXTimeRange POSIXTimeRange PosixTimeToSlotError - | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange - | CannotGetMintingPolicyScriptIndex -- Should be impossible - | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` - | CannotHashDatum Datum - | CannotHashMintingPolicy MintingPolicy - | CannotHashValidator Validator - | CannotMakeValue CurrencySymbol TokenName BigInt - | CannotWithdrawRewardsPubKey StakePubKeyHash - | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator - | CannotWithdrawRewardsNativeScript NativeScriptStakeValidator - | DatumNotFound DataHash - | DatumWrongHash DataHash Datum - | MintingPolicyHashNotCurrencySymbol MintingPolicyHash - | MintingPolicyNotFound MintingPolicyHash - | ModifyTx ModifyTxError - | OwnPubKeyAndStakeKeyMissing - | TxOutRefNotFound TransactionInput - | TxOutRefWrongType TransactionInput - | TypeCheckFailed TypeCheckError - | TypedTxOutHasNoDatumHash - | TypedValidatorMissing - | ValidatorHashNotFound ValidatorHash - | WrongRefScriptHash (Maybe ScriptHash) - | CannotSatisfyAny - | ExpectedPlutusScriptGotNativeScript MintingPolicyHash - | CannotMintZero CurrencySymbol TokenName - -derive instance Generic MkUnbalancedTxError _ -derive instance Eq MkUnbalancedTxError - -instance Show MkUnbalancedTxError where - show = genericShow - -lookupTxOutRef - :: forall (a :: Type) - . TransactionInput - -> Maybe InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError TransactionOutput) -lookupTxOutRef oref = case _ of - Just inputWithRefScript -> - lookup oref (utxoWithScriptRef inputWithRefScript) - # maybe (lookupTxOutRef oref Nothing) (map Right <<< convertTxOutput) - Nothing -> - runExceptT do - utxos <- use _lookups <#> unwrap >>> _.txOutputs - txOutput <- liftM (TxOutRefNotFound oref) (lookup oref utxos) - lift $ convertTxOutput txOutput - where - convertTxOutput - :: Plutus.TransactionOutputWithRefScript -> ConstraintsM a TransactionOutput - convertTxOutput txOutput = - flip fromPlutusTxOutputWithRefScript txOutput <$> getNetworkId - -lookupDatum - :: forall (a :: Type) - . DataHash - -> ConstraintsM a (Either MkUnbalancedTxError Datum) -lookupDatum dh = do - otherDt <- use _lookups <#> unwrap >>> _.datums - pure $ note (DatumNotFound dh) $ lookup dh otherDt - -lookupMintingPolicy - :: MintingPolicyHash - -> Map MintingPolicyHash MintingPolicy - -> Either MkUnbalancedTxError MintingPolicy -lookupMintingPolicy mph mpsMap = - note (MintingPolicyNotFound mph) $ lookup mph mpsMap - -lookupValidator - :: ValidatorHash - -> Map ValidatorHash Validator - -> Either MkUnbalancedTxError Validator -lookupValidator vh osMap = - note (ValidatorHashNotFound vh) $ lookup vh osMap - -processScriptRefUnspentOut - :: forall (scriptHash :: Type) (a :: Type) - . Newtype scriptHash ScriptHash - => scriptHash - -> InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError Unit) -processScriptRefUnspentOut scriptHash inputWithRefScript = do - unspentOut <- case inputWithRefScript of - SpendInput unspentOut -> do - _cpsTransaction <<< _body <<< _inputs %= Set.insert - (_.input <<< unwrap $ unspentOut) - pure unspentOut - RefInput unspentOut -> do - let refInput = (unwrap unspentOut).input - _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput - pure unspentOut - - updateRefScriptsUtxoMap unspentOut - checkScriptRef unspentOut - where - updateRefScriptsUtxoMap - :: TransactionUnspentOutput -> ConstraintsM a Unit - updateRefScriptsUtxoMap (TransactionUnspentOutput { input, output }) = - _refScriptsUtxoMap %= Map.insert input output - - checkScriptRef - :: TransactionUnspentOutput - -> ConstraintsM a (Either MkUnbalancedTxError Unit) - checkScriptRef (TransactionUnspentOutput { output }) = - let - refScriptHash :: Maybe ScriptHash - refScriptHash = _.referenceScript $ unwrap $ (unwrap output).output - - err :: ConstraintsM a (Either MkUnbalancedTxError Unit) - err = pure $ throwError $ WrongRefScriptHash refScriptHash - in - if Just (unwrap scriptHash) /= refScriptHash then err - else pure (Right unit) - -checkRefNative - :: forall (a :: Type) - . InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError Boolean) -checkRefNative scriptRef = pure $ note (WrongRefScriptHash Nothing) $ isNative - (unwrap (unwrap uout).output).scriptRef - where - isNative ref = ref >>= - ( case _ of - NativeScriptRef _ -> pure true - _ -> pure false - ) - - uout :: TransactionUnspentOutput - uout = case scriptRef of - RefInput ref' -> ref' - SpendInput ref' -> ref' - --- | Modify the `UnbalancedTx` so that it satisfies the constraints, if --- | possible. Fails if a hash is missing from the lookups, or if an output --- | of the wrong type is spent. -processConstraint - :: forall (a :: Type) - . Map MintingPolicyHash MintingPolicy - -> Map ValidatorHash Validator - -> TxConstraint - -> ConstraintsM a (Either MkUnbalancedTxError Unit) -processConstraint mpsMap osMap c = do - queryHandle <- lift $ getQueryHandle - case c of - MustIncludeDatum dat -> addDatum dat - MustValidateIn posixTimeRange -> do - { systemStart } <- asks _.ledgerConstants - eraSummaries <- liftAff $ - queryHandle.getEraSummaries - >>= either (liftEffect <<< throw <<< show) pure - runExceptT do - ({ timeToLive, validityStartInterval }) <- ExceptT $ liftEffect $ - posixTimeRangeToTransactionValidity eraSummaries - systemStart - posixTimeRange - <#> lmap (CannotConvertPOSIXTimeRange posixTimeRange) - _cpsTransaction <<< _body <<< _Newtype %= - _ - { ttl = timeToLive - , validityStartInterval = validityStartInterval - } - MustBeSignedBy pkh -> runExceptT do - -- FIXME This is incompatible with Plutus' version, which requires - -- the corresponding `paymentPubKey` lookup. In the next major version, - -- we might wish to revise this - -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 - _cpsTransaction <<< _body <<< _requiredSigners <>= Just - [ wrap $ unwrap $ unwrap pkh ] - MustSpendAtLeast plutusValue -> do - let value = fromPlutusValue plutusValue - runExceptT $ _valueSpentBalancesInputs <>= requireValue value - MustProduceAtLeast plutusValue -> do - let value = fromPlutusValue plutusValue - runExceptT $ _valueSpentBalancesOutputs <>= requireValue value - MustSpendPubKeyOutput txo -> runExceptT do - TransactionOutput { amount } <- ExceptT $ lookupTxOutRef txo Nothing - -- POTENTIAL FIX ME: Plutus has Tx.TxIn and Tx.PubKeyTxIn -- TxIn - -- keeps track TransactionInput and TxInType (the input type, whether - -- consuming script, public key or simple script) - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo - _valueSpentBalancesInputs <>= provideValue amount - MustSpendScriptOutput txo red scriptRefUnspentOut -> runExceptT do - txOut <- ExceptT $ lookupTxOutRef txo scriptRefUnspentOut - case txOut of - TransactionOutput { datum: NoOutputDatum } -> - throwError $ TxOutRefWrongType txo - TransactionOutput { address, amount, datum: datum' } -> - do - vHash <- liftM - (CannotGetValidatorHashFromAddress address) - (addressPaymentValidatorHash address) - case scriptRefUnspentOut of - Nothing -> do - plutusScript <- - except $ unwrap <$> lookupValidator vHash osMap - ExceptT $ attachToCps attachPlutusScript plutusScript - Just scriptRefUnspentOut' -> - ExceptT $ processScriptRefUnspentOut vHash scriptRefUnspentOut' - -- Note: Plutus uses `TxIn` to attach a redeemer and datum. - -- Use the datum hash inside the lookup - case datum' of - OutputDatumHash dHash -> do - dat <- ExceptT do - mDatumLookup <- lookupDatum dHash - if isRight mDatumLookup then - pure mDatumLookup - else - liftAff $ queryHandle.getDatumByHash dHash <#> hush - >>> Bind.join - >>> note - (CannotQueryDatum dHash) - ExceptT $ addDatum dat - OutputDatum _ -> pure unit - NoOutputDatum -> throwError CannotFindDatum - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo - let - uiRedeemer = UnindexedRedeemer - { purpose: ForSpend txo - , datum: unwrap red - } - _redeemers <>= [ uiRedeemer ] - _valueSpentBalancesInputs <>= provideValue amount - MustSpendNativeScriptOutput txo ns -> runExceptT do - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo - ExceptT $ attachToCps attachNativeScript ns - MustReferenceOutput refInput -> runExceptT do - _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput - MustMintValue mpsHash red tn i scriptRefUnspentOut -> runExceptT do - case scriptRefUnspentOut of - Nothing -> do - mp <- except $ lookupMintingPolicy mpsHash mpsMap - ( case mp of - PlutusMintingPolicy p -> - ( ExceptT $ attachToCps - attachPlutusScript - p - ) - NativeMintingPolicy _ -> throwError $ - ExpectedPlutusScriptGotNativeScript mpsHash - ) - Just scriptRefUnspentOut' -> do - isNative <- ExceptT $ checkRefNative scriptRefUnspentOut' - when isNative $ throwError $ ExpectedPlutusScriptGotNativeScript - mpsHash - (ExceptT $ processScriptRefUnspentOut mpsHash scriptRefUnspentOut') - - cs <- - liftM (MintingPolicyHashNotCurrencySymbol mpsHash) (mpsSymbol mpsHash) - let value = mkSingletonValue' cs tn - -- If i is negative we are burning tokens. The tokens burned must - -- be provided as an input. So we add the value burnt to - -- 'valueSpentBalancesInputs'. If i is positive then new tokens are - -- created which must be added to 'valueSpentBalancesOutputs'. - -- If i is zero we raise error, because of - -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1156 - mintVal <- - if i < zero then do - v <- liftM (CannotMakeValue cs tn i) (value $ negate i) - _valueSpentBalancesInputs <>= provideValue v - pure $ map getNonAdaAsset $ value i - else if i == zero then do - throwError $ CannotMintZero cs tn - else do - v <- liftM (CannotMakeValue cs tn i) (value i) - _valueSpentBalancesOutputs <>= provideValue v - pure $ map getNonAdaAsset $ value i - _redeemers <>= - [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] - -- Remove mint redeemers from array before reindexing. - _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal - - MustMintValueUsingNativeScript ns tn i -> runExceptT do - let mpHash = wrap <<< unwrap <<< nativeScriptHash $ ns - - ExceptT $ attachToCps attachNativeScript ns - - cs <- liftM (MintingPolicyHashNotCurrencySymbol mpHash) (mpsSymbol mpHash) - let value = mkSingletonValue' cs tn - -- If i is negative we are burning tokens. The tokens burned must - -- be provided as an input. So we add the value burnt to - -- 'valueSpentBalancesInputs'. If i is positive then new tokens are - -- created which must be added to 'valueSpentBalancesOutputs'. - mintVal <- - if i < zero then do - v <- liftM (CannotMakeValue cs tn i) (value $ negate i) - _valueSpentBalancesInputs <>= provideValue v - pure $ map getNonAdaAsset $ value i - else do - v <- liftM (CannotMakeValue cs tn i) (value i) - _valueSpentBalancesOutputs <>= provideValue v - pure $ map getNonAdaAsset $ value i - - _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal - - MustPayToPubKeyAddress pkh skh mDatum scriptRef plutusValue -> do - networkId <- getNetworkId - let amount = fromPlutusValue plutusValue - runExceptT do - -- If non-inline datum is presented, add it to 'datumWitnesses' and - -- Array of datums. - datum' <- for mDatum \(dat /\ datp) -> do - when (datp == DatumWitness) $ ExceptT $ addDatum dat - pure $ outputDatum dat datp - let - address = case skh of - Just skh' -> payPubKeyHashBaseAddress networkId pkh skh' - Nothing -> payPubKeyHashEnterpriseAddress networkId pkh - txOut = TransactionOutput - { address - , amount - , datum: fromMaybe NoOutputDatum datum' - , scriptRef: scriptRef - } - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - _valueSpentBalancesOutputs <>= provideValue amount - MustPayToScript vlh mbCredential dat datp scriptRef plutusValue -> do - networkId <- getNetworkId - let amount = fromPlutusValue plutusValue - runExceptT do - let - datum' = outputDatum dat datp - txOut = TransactionOutput - { address: case mbCredential of - Nothing -> validatorHashEnterpriseAddress networkId vlh - Just cred -> baseAddressToAddress $ baseAddress - { network: networkId - , paymentCred: scriptHashCredential (unwrap vlh) - , delegationCred: credentialToStakeCredential cred - } - , amount - , datum: datum' - , scriptRef: scriptRef - } - -- Note we don't `addDatum` as this included as part of `mustPayToScript` - -- constraint already. - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - _valueSpentBalancesOutputs <>= provideValue amount - MustPayToNativeScript nsh mbCredential plutusValue -> do - networkId <- getNetworkId - let amount = fromPlutusValue plutusValue - runExceptT do - let - txOut = TransactionOutput - { address: case mbCredential of - Nothing -> validatorHashEnterpriseAddress networkId - (wrap $ unwrap nsh) - Just cred -> baseAddressToAddress $ baseAddress - { network: networkId - , paymentCred: scriptHashCredential (unwrap nsh) - , delegationCred: credentialToStakeCredential cred - } - , amount - , datum: NoOutputDatum - , scriptRef: Nothing - } - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - _valueSpentBalancesOutputs <>= provideValue amount - MustHashDatum dh dt -> do - let dh' = Hashing.datumHash dt - if dh' == dh then addDatum dt - else pure $ throwError $ DatumWrongHash dh dt - MustRegisterStakePubKey skh -> runExceptT do - void $ lift $ addCertificate - $ StakeRegistration - $ keyHashCredential - $ unwrap - $ unwrap skh - MustDeregisterStakePubKey pubKey -> runExceptT do - void $ lift $ addCertificate - $ StakeDeregistration - $ keyHashCredential - $ unwrap - $ unwrap pubKey - MustRegisterStakeScript scriptHash -> runExceptT do - void $ lift $ addCertificate - $ StakeRegistration - $ scriptHashCredential - $ unwrap scriptHash - MustDeregisterStakePlutusScript plutusScript redeemerData -> runExceptT do - let - cert = StakeDeregistration - ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash - plutusScript - ) - _redeemers <>= - [ UnindexedRedeemer - { purpose: ForCert cert, datum: unwrap redeemerData } - ] - void $ lift $ addCertificate cert - ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) - MustDeregisterStakeNativeScript stakeValidator -> do - void $ addCertificate $ StakeDeregistration - $ scriptHashCredential - $ unwrap - $ nativeScriptStakeValidatorHash - stakeValidator - attachToCps attachNativeScript (unwrap stakeValidator) - MustRegisterPool poolParams -> runExceptT do - void $ lift $ addCertificate $ PoolRegistration poolParams - MustRetirePool poolKeyHash epoch -> runExceptT do - void $ lift $ addCertificate $ PoolRetirement { poolKeyHash, epoch } - MustDelegateStakePubKey stakePubKeyHash poolKeyHash -> runExceptT do - void $ lift $ addCertificate $ - StakeDelegation (keyHashCredential $ unwrap $ unwrap $ stakePubKeyHash) - poolKeyHash - MustDelegateStakePlutusScript stakeValidator redeemerData poolKeyHash -> - runExceptT do - let - cert = StakeDelegation - ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash - stakeValidator - ) - poolKeyHash - lift $ addCertificate cert - _redeemers <>= - [ UnindexedRedeemer - { purpose: ForCert cert, datum: unwrap redeemerData } - ] - ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) - MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do - void $ addCertificate $ StakeDelegation - ( scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash - stakeValidator - ) - poolKeyHash - attachToCps attachNativeScript (unwrap stakeValidator) - MustWithdrawStakePubKey spkh -> runExceptT do - networkId <- lift getNetworkId - mbRewards <- lift $ lift $ wrapQueryM $ getPubKeyHashDelegationsAndRewards - spkh - ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsPubKey spkh) - mbRewards - let - rewardAddress = - RewardAddress.stakePubKeyHashRewardAddress networkId spkh - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) - MustWithdrawStakePlutusScript stakeValidator redeemerData -> runExceptT do - let hash = plutusScriptStakeValidatorHash stakeValidator - networkId <- lift getNetworkId - mbRewards <- lift $ lift $ wrapQueryM $ - getValidatorHashDelegationsAndRewards hash - let - rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId - hash - ({ rewards }) <- ExceptT $ pure $ note - (CannotWithdrawRewardsPlutusScript stakeValidator) - mbRewards - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) - _redeemers <>= - [ UnindexedRedeemer - { purpose: ForReward rewardAddress, datum: unwrap redeemerData } - ] - ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) - MustWithdrawStakeNativeScript stakeValidator -> runExceptT do - let hash = nativeScriptStakeValidatorHash stakeValidator - networkId <- lift getNetworkId - mbRewards <- lift $ lift $ wrapQueryM $ - getValidatorHashDelegationsAndRewards hash - let - rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId - hash - ({ rewards }) <- ExceptT $ pure $ note - (CannotWithdrawRewardsNativeScript stakeValidator) - mbRewards - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) - ExceptT $ attachToCps attachNativeScript (unwrap stakeValidator) - MustSatisfyAnyOf xs -> do - cps <- get - let - -- For each sublist, process the constraint from left to right, using the - -- new state in the subsequent call. If we fail, reset to the initial - -- state, `cps` and attempt for the next sublist. If a sublist is - -- processed successfully, we can stop early - I think this is how Plutus - -- behaves (POTENTIAL FIX ME). If all sublists fail, we fail overall as - -- seen in the base case. - tryNext - :: List (List TxConstraint) - -> ConstraintsM a (Either MkUnbalancedTxError Unit) - tryNext Nil = pure $ throwError CannotSatisfyAny - tryNext (Cons ys zs) = - -- Note this implicitly resets state to original cps upon failure (see - -- `put`) - foldM - ( \_ constr -> runExceptT do - let continue = put cps *> tryNext zs - ( ExceptT $ processConstraint mpsMap osMap constr - `catchError` \_ -> continue - ) - `catchError` \_ -> ExceptT continue - ) - (Right unit) - ys - tryNext (toUnfoldable $ map toUnfoldable xs) - MustNotBeValid -> runExceptT do - _cpsTransaction <<< _isValid .= false - where - outputDatum - :: Datum - -> DatumPresence - -> OutputDatum - outputDatum dat = case _ of - DatumInline -> OutputDatum dat - DatumWitness -> OutputDatumHash $ Hashing.datumHash dat - -credentialToStakeCredential :: Credential -> StakeCredential -credentialToStakeCredential cred = case cred of - PubKeyCredential pubKeyHash -> keyHashCredential (unwrap pubKeyHash) - ScriptCredential scriptHash -> scriptHashCredential (unwrap scriptHash) - --- Attach a Datum, Redeemer, or PlutusScript depending on the handler. They --- share error type anyway. -attachToCps - :: forall (a :: Type) (b :: Type) - . (a -> Transaction -> Effect (Either ModifyTxError Transaction)) - -> a -- Redeemer, Datum, or PlutusScript. - -> ConstraintsM b (Either MkUnbalancedTxError Unit) -attachToCps handler object = do - tx <- use _cpsTransaction - newTx <- liftEffect $ handler object tx <#> lmap ModifyTx - either - (pure <<< throwError) - (map Right <<< (.=) _cpsTransaction) - newTx - --- Attaches datum to the transaction and to Array of datums in the state. -addDatum - :: forall (a :: Type) - . Datum - -> ConstraintsM a (Either MkUnbalancedTxError Unit) -addDatum dat = runExceptT do - ExceptT $ attachToCps attachDatum dat - _datums <>= Array.singleton dat - --- | Returns an index pointing to the location of the newly inserted certificate --- | in the array of transaction certificates. -addCertificate - :: forall (a :: Type) - . Certificate - -> ConstraintsM a Unit -addCertificate cert = do - _cpsTransaction <<< _body <<< _certs <<< non [] %= Array.(:) cert - -getNetworkId - :: forall (a :: Type) - . ConstraintsM a NetworkId -getNetworkId = use (_cpsTransaction <<< _body <<< _networkId) - >>= maybe (asks _.networkId) pure From 26b2830a026121173b60d165f210810e5fe684c5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Mar 2023 16:58:09 +0400 Subject: [PATCH 114/478] - Remove ReindexRedeemers from the public API - more comments/refactoring --- CHANGELOG.md | 6 +- src/Contract/Transaction.purs | 15 +- src/Internal/BalanceTx/BalanceTx.purs | 9 +- src/Internal/BalanceTx/RedeemerIndex.purs | 13 +- src/Internal/ProcessConstraints.purs | 17 +- src/Internal/ProcessConstraints/State.purs | 28 +-- .../ProcessConstraints/UnbalancedTx.purs | 224 +----------------- src/Internal/ReindexRedeemers.purs | 64 ----- 8 files changed, 56 insertions(+), 320 deletions(-) delete mode 100644 src/Internal/ReindexRedeemers.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 870de4df8..419f85057 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,7 +66,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) -- `UnattachedUnbalancedTx` has been renamed and moved to `Contract.UnbalancedTx.UnbalancedTx`, the old `UnbalancedTx` type has been removed as not needed. `mkUnbalancedTx` function has been moved to `Contract.UnbalancedTx`. - All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): - `checkNewUtxosAtAddress` -> `assertNewUtxosAtAddress` @@ -77,7 +76,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `PoolPubKeyHash` is now a wrapper over `PubKeyHash` instead of `Ed25519KeyHash` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `Contract.Wallet.Key.publicKeyFromPrivateKey` uses `PublicKey` type from public API ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `Contract.Test.Blockfrost.executeContractTestsWithBlockfrost` does not require optional `CtlBackendParams` value (it is now constructed from environment variables). -- `plutip-server` was moved from [Plutip repo](https://github.com/mlabs-haskell/plutip) to CTL ([#1415](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1415)) +- `plutip-server` has been moved from [Plutip repo](https://github.com/mlabs-haskell/plutip) to CTL ([#1415](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1415)) +- `UnattachedUnbalancedTx` has been renamed and moved to `Contract.UnbalancedTx.UnbalancedTx`, the old `UnbalancedTx` type has been removed as not needed. `mkUnbalancedTx` function has been moved to `Contract.UnbalancedTx` ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) ### Fixed @@ -89,10 +89,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Fixed collateral selection - sort the UTxOs by ADA value in descending order, before selecting them for collateral, to ensure that if a combination that satisfies the requirements is possible, it will be selected. The bug affected CIP-30 wallets. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Output correct reward address in CIP-30 mock ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) ### Removed - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) ## [v5.0.0] diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index a039116b5..70c7c5f6d 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -17,7 +17,6 @@ module Contract.Transaction , module OutputDatum , module PTransaction , module PTransactionUnspentOutput - , module ReindexRedeemersExport , module ScriptRef , module Scripts , module Transaction @@ -52,7 +51,7 @@ import Contract.TxConstraints (TxConstraints) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) -import Ctl.Internal.BalanceTx (FinalizedTransaction, UtxoIx) +import Ctl.Internal.BalanceTx (FinalizedTransaction) import Ctl.Internal.BalanceTx (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction import Ctl.Internal.BalanceTx (balanceTxWithConstraints) as BalanceTx import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) @@ -200,10 +199,6 @@ import Ctl.Internal.Plutus.Types.TransactionUnspentOutput ) as PTransactionUnspentOutput import Ctl.Internal.Plutus.Types.Value (Coin) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) -import Ctl.Internal.ReindexRedeemers - ( ReindexErrors(CannotGetTxOutRefIndexForRedeemer) - ) as ReindexRedeemersExport -import Ctl.Internal.ReindexRedeemers (reindexSpentScriptRedeemers) as X import Ctl.Internal.Serialization (convertTransaction) import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) @@ -249,6 +244,7 @@ import Data.Either (Either, hush) import Data.Foldable (foldl, length) import Data.Generic.Rep (class Generic) import Data.Lens.Getter (view) +import Data.Map (Map) import Data.Map (empty, insert) as Map import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap) @@ -399,16 +395,17 @@ withBalancedTx -> Contract a withBalancedTx = withSingleTransaction balanceAndLock unwrap -unUnbalancedTx :: UnbalancedTx -> UnindexedTx /\ UtxoIx +unUnbalancedTx + :: UnbalancedTx -> UnindexedTx /\ Map TransactionInput TransactionOutput unUnbalancedTx ( UnbalancedTx { transaction , datums , redeemers - , utxoIndex + , usedUtxos } ) = - { transaction, datums, redeemers } /\ utxoIndex + { transaction, datums, redeemers } /\ usedUtxos -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index ac21cd35a..165ee51d3 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -2,7 +2,6 @@ module Ctl.Internal.BalanceTx ( module BalanceTxErrorExport , module FinalizedTransaction , balanceTxWithConstraints - , UtxoIx ) where import Prelude @@ -171,16 +170,14 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -type UtxoIx = Map TransactionInput TransactionOutput - -- | Balances an unbalanced transaction using the specified balancer -- | constraints. balanceTxWithConstraints :: UnindexedTx - -> UtxoIx + -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError FinalizedTransaction) -balanceTxWithConstraints transaction index constraintsBuilder = do +balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do pparams <- getProtocolParameters withBalanceTxConstraints constraintsBuilder $ runExceptT do @@ -228,7 +225,7 @@ balanceTxWithConstraints transaction index constraintsBuilder = do allUtxos = -- Combine utxos at the user address and those from any scripts -- involved with the contract in the unbalanced transaction: - utxos `Map.union` index + utxos `Map.union` extraUtxos availableUtxos <- liftContract $ filterLockedUtxos allUtxos logTrace' $ "balanceTxWithConstraints: all UTxOs: " <> show allUtxos diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 637a2379c..a04f14ded 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -6,7 +6,18 @@ -- | "Combining Scripts with Their Inputs" chapter of "A Formal Specification -- | of the Cardano Ledger integrating Plutus Core" -- | https://github.com/input-output-hk/cardano-ledger/releases/latest/download/alonzo-ledger.pdf -module Ctl.Internal.BalanceTx.RedeemerIndex where +module Ctl.Internal.BalanceTx.RedeemerIndex + ( IndexedRedeemer(IndexedRedeemer) + , RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , RedeemersContext + , UnindexedRedeemer(UnindexedRedeemer) + , attachIndexedRedeemers + , attachRedeemers + , indexRedeemers + , indexedRedeemerToRedeemer + , mkRedeemersContext + , unindexedRedeemerToRedeemer + ) where import Prelude diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index bbef988d8..99424caf1 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -100,7 +100,7 @@ import Ctl.Internal.ProcessConstraints.State , ValueSpentBalances(ValueSpentBalances) , _costModels , _cpsTransaction - , _cpsUtxoIndex + , _cpsUsedUtxos , _datums , _lookups , _redeemers @@ -279,7 +279,7 @@ processLookupsAndConstraints ExceptT $ foldConstraints addOwnOutput ownOutputs ExceptT addFakeScriptDataHash ExceptT addMissingValueSpent - ExceptT updateUtxoIndex + ExceptT updateUsedUtxos where -- Don't write the output in terms of ExceptT because we can't write a @@ -314,14 +314,13 @@ runConstraintsM lookups txConstraints = do initCps :: ConstraintProcessingState validator initCps = { transaction: mempty - , utxoIndex: Map.empty + , usedUtxos: Map.empty , valueSpentBalancesInputs: ValueSpentBalances { required: mempty, provided: mempty } , valueSpentBalancesOutputs: ValueSpentBalances { required: mempty, provided: mempty } , datums: mempty , redeemers: [] - , mintRedeemers: empty , lookups , refScriptsUtxoMap: empty , costModels @@ -385,10 +384,10 @@ addMissingValueSpent = do } _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut -updateUtxoIndex +updateUsedUtxos :: forall (a :: Type) . ConstraintsM a (Either MkUnbalancedTxError Unit) -updateUtxoIndex = runExceptT do +updateUsedUtxos = runExceptT do txOutputs <- use _lookups <#> unwrap >>> _.txOutputs refScriptsUtxoMap <- use _refScriptsUtxoMap networkId <- lift getNetworkId @@ -398,7 +397,7 @@ updateUtxoIndex = runExceptT do (txOutputs `union` refScriptsUtxoMap) <#> fromPlutusTxOutputWithRefScript networkId -- Left bias towards original map, hence `flip`: - _cpsUtxoIndex %= flip union cTxOutputs + _cpsUsedUtxos %= flip union cTxOutputs -- Note, we don't use the redeemer here, unlike Plutus because of our lack of -- `TxIn` datatype. @@ -1018,12 +1017,12 @@ mkUnbalancedTxImpl -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTxImpl scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ transaction, datums, redeemers, utxoIndex } -> + \{ transaction, datums, redeemers, usedUtxos } -> wrap { transaction: stripDatumsRedeemers $ stripScriptDataHash transaction , datums , redeemers - , utxoIndex + , usedUtxos } where stripScriptDataHash :: Transaction -> Transaction diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 745b483cf..9874e3973 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -2,7 +2,7 @@ module Ctl.Internal.ProcessConstraints.State ( ConstraintsM , ConstraintProcessingState , _cpsTransaction - , _cpsUtxoIndex + , _cpsUsedUtxos , _valueSpentBalancesInputs , _valueSpentBalancesOutputs , _datums @@ -26,13 +26,11 @@ import Ctl.Internal.Cardano.Types.Transaction , Transaction , TransactionOutput ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T import Ctl.Internal.Cardano.Types.Value (Value, negation, split) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) import Data.Lattice (join) @@ -55,22 +53,22 @@ type ConstraintsM (a :: Type) (b :: Type) = -- This is the state for essentially creating an unbalanced transaction. type ConstraintProcessingState (a :: Type) = { transaction :: Transaction - , utxoIndex :: Map TransactionInput TransactionOutput - -- The unbalanced transaction that we're building + -- ^ The unbalanced transaction that we're building + , usedUtxos :: Map TransactionInput TransactionOutput + -- ^ All UTxOs that are used in the Tx , valueSpentBalancesInputs :: ValueSpentBalances - -- Balance of the values given and required for the transaction's inputs + -- ^ Balance of the values given and required for the transaction's inputs , valueSpentBalancesOutputs :: ValueSpentBalances - -- Balance of the values produced and required for the transaction's outputs + -- ^ Balance of the values produced and required for the transaction's outputs , datums :: Array Datum - -- Ordered accumulation of datums we can use to `setScriptDataHash` + -- ^ Ordered accumulation of datums we can use to `setScriptDataHash` , redeemers :: Array UnindexedRedeemer - , mintRedeemers :: Map MintingPolicyHash T.Redeemer - -- Mint redeemers with the corresponding minting policy hashes. - -- We need to reindex mint redeemers every time we add a new one, since - -- indexing relies on policy id ordering. + -- ^ Unindexed redeemers that will be attached to the Tx later, on balancing + -- stage. , lookups :: ScriptLookups a - -- ScriptLookups for resolving constraints. Should be treated as an immutable + -- ^ ScriptLookups for resolving constraints. Should be treated as an immutable -- value despite living inside the processing state + -- TODO: remove: https://github.com/Plutonomicon/cardano-transaction-lib/issues/843 , refScriptsUtxoMap :: Map TransactionInput Plutus.TransactionOutputWithRefScript , costModels :: Costmdls @@ -80,11 +78,11 @@ _cpsTransaction :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction _cpsTransaction = prop (SProxy :: SProxy "transaction") -_cpsUtxoIndex +_cpsUsedUtxos :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Map TransactionInput TransactionOutput) -_cpsUtxoIndex = prop (SProxy :: SProxy "utxoIndex") +_cpsUsedUtxos = prop (SProxy :: SProxy "usedUtxos") _valueSpentBalancesInputs :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs index d5cfa6ab5..69c8ea8a4 100644 --- a/src/Internal/ProcessConstraints/UnbalancedTx.purs +++ b/src/Internal/ProcessConstraints/UnbalancedTx.purs @@ -1,227 +1,23 @@ -module Ctl.Internal.ProcessConstraints.UnbalancedTx where +module Ctl.Internal.ProcessConstraints.UnbalancedTx + ( UnbalancedTx(UnbalancedTx) + ) where import Prelude hiding (join) -import Contract.Hashing (plutusScriptStakeValidatorHash) -import Control.Monad.Error.Class (catchError, throwError) -import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) -import Control.Monad.Reader.Class (asks) -import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) -import Control.Monad.Trans.Class (lift) -import Ctl.Internal.Address (addressPaymentValidatorHash) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer - ) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction - ( Certificate - ( StakeDelegation - , PoolRetirement - , PoolRegistration - , StakeDeregistration - , StakeRegistration - ) - , Costmdls - , Transaction - , TransactionOutput(TransactionOutput) - , TransactionWitnessSet(TransactionWitnessSet) - , _body - , _certs - , _inputs - , _isValid - , _mint - , _networkId - , _outputs - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _withdrawals - , _witnessSet - ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , CurrencySymbol - , Value - , getNonAdaAsset - , isZero - , mkSingletonValue' - , mpsSymbol - , negation - , split - ) -import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) -import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.Helpers (liftM, (<\>)) -import Ctl.Internal.IsData (class IsData) -import Ctl.Internal.NativeScripts (nativeScriptHash) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusTxOutputWithRefScript - , fromPlutusValue - ) -import Ctl.Internal.Plutus.Types.Credential - ( Credential(ScriptCredential, PubKeyCredential) - ) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Ctl.Internal.QueryM.Pools - ( getPubKeyHashDelegationsAndRewards - , getValidatorHashDelegationsAndRewards - ) -import Ctl.Internal.Scripts - ( mintingPolicyHash - , nativeScriptStakeValidatorHash - , validatorHash - , validatorHashEnterpriseAddress - ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , StakeCredential - , baseAddress - , baseAddressToAddress - , keyHashCredential - , scriptHashCredential - ) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Transaction - ( ModifyTxError - , attachDatum - , attachNativeScript - , attachPlutusScript - , setScriptDataHash - ) -import Ctl.Internal.Types.Any (Any) -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , PosixTimeToSlotError - , always - , intersection - , isEmpty - , posixTimeRangeToTransactionValidity - ) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash - , StakePubKeyHash - , payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , stakePubKeyHashRewardAddress - ) -import Ctl.Internal.Types.RewardAddress - ( stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - ) as RewardAddress -import Ctl.Internal.Types.Scripts - ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) - , MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , Validator - , ValidatorHash - ) -import Ctl.Internal.Types.TokenName (TokenName) +import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) +import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) +import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.TxConstraints - ( DatumPresence(DatumWitness, DatumInline) - , InputConstraint(InputConstraint) - , InputWithScriptRef(RefInput, SpendInput) - , OutputConstraint(OutputConstraint) - , TxConstraint - ( MustBeSignedBy - , MustDelegateStakePubKey - , MustDelegateStakePlutusScript - , MustDelegateStakeNativeScript - , MustDeregisterStakePubKey - , MustDeregisterStakePlutusScript - , MustDeregisterStakeNativeScript - , MustHashDatum - , MustIncludeDatum - , MustMintValue - , MustNotBeValid - , MustPayToNativeScript - , MustPayToPubKeyAddress - , MustPayToScript - , MustProduceAtLeast - , MustReferenceOutput - , MustRegisterPool - , MustRegisterStakePubKey - , MustRegisterStakeScript - , MustRetirePool - , MustSatisfyAnyOf - , MustSpendAtLeast - , MustSpendNativeScriptOutput - , MustSpendPubKeyOutput - , MustSpendScriptOutput - , MustValidateIn - , MustWithdrawStakePubKey - , MustWithdrawStakePlutusScript - , MustWithdrawStakeNativeScript - , MustMintValueUsingNativeScript - ) - , TxConstraints(TxConstraints) - , utxoWithScriptRef - ) -import Ctl.Internal.Types.TypedTxOut - ( TypeCheckError - , mkTypedTxOut - , typeTxOutRef - , typedTxOutDatumHash - , typedTxOutRefValue - , typedTxOutTxOut - ) -import Ctl.Internal.Types.TypedValidator - ( class DatumType - , class ValidatorTypes - , TypedValidator(TypedValidator) - ) -import Ctl.Internal.Types.TypedValidator (generalise) as TV -import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey) -import Data.Array (cons, partition, toUnfoldable, zip) -import Data.Array (singleton, union, (:)) as Array -import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) -import Data.Either (Either(Left, Right), either, hush, isRight, note) -import Data.Foldable (foldM) import Data.Generic.Rep (class Generic) -import Data.Lattice (join) -import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) -import Data.Lens.Getter (to, use) -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Lens.Types (Lens') -import Data.List (List(Nil, Cons)) -import Data.Map (Map, empty, fromFoldable, lookup, singleton, union) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) -import Data.Newtype (class Newtype, over, unwrap, wrap) -import Data.Set (insert) as Set +import Data.Map (Map) +import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -import Data.Symbol (SProxy(SProxy)) -import Data.Traversable (for, traverse_) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) -import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) -import Effect.Exception (throw) -import MedeaPrelude (mapMaybe) -import Prelude (join) as Bind -import Type.Proxy (Proxy(Proxy)) -- | A newtype for the unbalanced transaction after creating one with datums --- | and redeemers not attached +-- | and redeemers not attached. newtype UnbalancedTx = UnbalancedTx { transaction :: Transaction -- the unbalanced tx created - , utxoIndex :: Map TransactionInput TransactionOutput + , usedUtxos :: Map TransactionInput TransactionOutput , datums :: Array Datum -- the array of ordered datums that require attaching , redeemers :: Array UnindexedRedeemer } diff --git a/src/Internal/ReindexRedeemers.purs b/src/Internal/ReindexRedeemers.purs deleted file mode 100644 index b69532277..000000000 --- a/src/Internal/ReindexRedeemers.purs +++ /dev/null @@ -1,64 +0,0 @@ --- | This module implements functionality to reindex redeemers to be used after --- | balancing when all inputs have been inserted to the array. -module Ctl.Internal.ReindexRedeemers - ( ReindexErrors(CannotGetTxOutRefIndexForRedeemer) - , reindexSpentScriptRedeemers - , reindexSpentScriptRedeemers' - ) where - -import Prelude - -import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer)) as T -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) -import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.Array (elemIndex) -import Data.BigInt (fromInt) -import Data.Either (Either(Right), note) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just)) -import Data.Show.Generic (genericShow) -import Data.Traversable (traverse) -import Data.Tuple (fst) -import Data.Tuple.Nested (type (/\), (/\)) - --- | The only error should be impossible but we keep this here in case the user --- | decides to call this function at some point where inputs have been --- | accidentally deleted and/or not after balancing -data ReindexErrors = CannotGetTxOutRefIndexForRedeemer T.Redeemer - -derive instance Generic ReindexErrors _ - -instance Show ReindexErrors where - show = genericShow - -type RedeemersTxIn = T.Redeemer /\ Maybe TransactionInput - --- | Reindex the `Spend` redeemers. Since we insert to an ordered array, we must --- | reindex the redeemers with such inputs. This must be crucially called after --- | balancing when all inputs are in place so they cannot be reordered. -reindexSpentScriptRedeemers - :: Array TransactionInput - -> Array RedeemersTxIn - -> Either ReindexErrors (Array T.Redeemer) -reindexSpentScriptRedeemers inputs redeemersTxIns = do - redeemersTxInsReindexed <- - reindexSpentScriptRedeemers' inputs redeemersTxIns - pure $ map fst redeemersTxInsReindexed - -reindexSpentScriptRedeemers' - :: Array TransactionInput - -> Array RedeemersTxIn - -> Either ReindexErrors (Array RedeemersTxIn) -reindexSpentScriptRedeemers' inputs redeemersTxIns = - traverse (reindex inputs) redeemersTxIns - where - reindex - :: Array TransactionInput - -> RedeemersTxIn - -> Either ReindexErrors RedeemersTxIn - reindex ipts = case _ of - red@(T.Redeemer red'@{ tag: Spend }) /\ Just txOutRef -> do - index <- note (CannotGetTxOutRefIndexForRedeemer red) - (fromInt <$> elemIndex txOutRef ipts) - Right $ T.Redeemer red' { index = index } /\ Just txOutRef - mintRed /\ txOutRef -> Right $ mintRed /\ txOutRef From b61a02e44b54b6b561c9dc0a125da878ae2fcb15 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Mar 2023 17:24:56 +0400 Subject: [PATCH 115/478] Fix warnings --- src/Internal/BalanceTx/RedeemerIndex.purs | 13 +- src/Internal/Types/ScriptLookups.purs | 215 +----------------- src/Internal/Types/UnbalancedTransaction.purs | 1 - 3 files changed, 9 insertions(+), 220 deletions(-) diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index a04f14ded..ff7bbc3b0 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -43,12 +43,11 @@ import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) import Data.Map as Map -import Data.Maybe (Maybe(Just), fromJust, fromMaybe) +import Data.Maybe (Maybe(Just), fromMaybe) import Data.Newtype (class Newtype, unwrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) -import Partial.Unsafe (unsafePartial) attachRedeemers :: Array Redeemer -> Transaction -> Transaction attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers @@ -113,16 +112,6 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = , exUnits: { mem: zero, steps: zero } } -redeemerToIndexedRedeemer :: Redeemer -> IndexedRedeemer -redeemerToIndexedRedeemer - ( Redeemer - { tag - , index - , data: datum - } - ) = IndexedRedeemer - { tag, datum, index: unsafePartial $ fromJust $ BigInt.toInt index } - -- | Contains a value redeemer corresponds to, different for each possible -- | `RedeemerTag`. -- | Allows to uniquely compute redeemer index, given a `RedeemersContext` that diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index e04cf53d0..7cde7e1fd 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -18,222 +18,23 @@ module Ctl.Internal.Types.ScriptLookups import Prelude hiding (join) -import Contract.Hashing (plutusScriptStakeValidatorHash) -import Control.Monad.Error.Class (catchError, throwError) -import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) -import Control.Monad.Reader.Class (asks) -import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) -import Control.Monad.Trans.Class (lift) -import Ctl.Internal.Address (addressPaymentValidatorHash) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer - ) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction - ( Certificate - ( StakeDelegation - , PoolRetirement - , PoolRegistration - , StakeDeregistration - , StakeRegistration - ) - , Costmdls - , Transaction - , TransactionOutput(TransactionOutput) - , TransactionWitnessSet(TransactionWitnessSet) - , _body - , _certs - , _inputs - , _isValid - , _mint - , _networkId - , _outputs - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _withdrawals - , _witnessSet - ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer) as T -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , CurrencySymbol - , Value - , getNonAdaAsset - , isZero - , mkSingletonValue' - , mpsSymbol - , negation - , split - ) -import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.Helpers (liftM, (<\>)) -import Ctl.Internal.IsData (class IsData) -import Ctl.Internal.NativeScripts (nativeScriptHash) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusTxOutputWithRefScript - , fromPlutusValue - ) -import Ctl.Internal.Plutus.Types.Credential - ( Credential(ScriptCredential, PubKeyCredential) - ) +import Ctl.Internal.Helpers ((<\>)) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.QueryM.Pools - ( getPubKeyHashDelegationsAndRewards - , getValidatorHashDelegationsAndRewards - ) -import Ctl.Internal.Scripts - ( mintingPolicyHash - , nativeScriptStakeValidatorHash - , validatorHash - , validatorHashEnterpriseAddress - ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , StakeCredential - , baseAddress - , baseAddressToAddress - , keyHashCredential - , scriptHashCredential - ) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Transaction - ( ModifyTxError - , attachDatum - , attachNativeScript - , attachPlutusScript - , setScriptDataHash - ) import Ctl.Internal.Types.Any (Any) import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , PosixTimeToSlotError - , always - , intersection - , isEmpty - , posixTimeRangeToTransactionValidity - ) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash - , StakePubKeyHash - , payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , stakePubKeyHashRewardAddress - ) -import Ctl.Internal.Types.RewardAddress - ( stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - ) as RewardAddress -import Ctl.Internal.Types.Scripts - ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) - , MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , Validator - , ValidatorHash - ) -import Ctl.Internal.Types.TokenName (TokenName) +import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) +import Ctl.Internal.Types.Scripts (MintingPolicy, Validator) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.TxConstraints - ( DatumPresence(DatumWitness, DatumInline) - , InputConstraint(InputConstraint) - , InputWithScriptRef(RefInput, SpendInput) - , OutputConstraint(OutputConstraint) - , TxConstraint - ( MustBeSignedBy - , MustDelegateStakePubKey - , MustDelegateStakePlutusScript - , MustDelegateStakeNativeScript - , MustDeregisterStakePubKey - , MustDeregisterStakePlutusScript - , MustDeregisterStakeNativeScript - , MustHashDatum - , MustIncludeDatum - , MustMintValue - , MustNotBeValid - , MustPayToNativeScript - , MustPayToPubKeyAddress - , MustPayToScript - , MustProduceAtLeast - , MustReferenceOutput - , MustRegisterPool - , MustRegisterStakePubKey - , MustRegisterStakeScript - , MustRetirePool - , MustSatisfyAnyOf - , MustSpendAtLeast - , MustSpendNativeScriptOutput - , MustSpendPubKeyOutput - , MustSpendScriptOutput - , MustValidateIn - , MustWithdrawStakePubKey - , MustWithdrawStakePlutusScript - , MustWithdrawStakeNativeScript - , MustMintValueUsingNativeScript - ) - , TxConstraints(TxConstraints) - , utxoWithScriptRef - ) -import Ctl.Internal.Types.TypedTxOut - ( TypeCheckError - , mkTypedTxOut - , typeTxOutRef - , typedTxOutDatumHash - , typedTxOutRefValue - , typedTxOutTxOut - ) -import Ctl.Internal.Types.TypedValidator - ( class DatumType - , class ValidatorTypes - , TypedValidator(TypedValidator) - ) +import Ctl.Internal.Types.TypedValidator (TypedValidator(TypedValidator)) import Ctl.Internal.Types.TypedValidator (generalise) as TV import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey) -import Data.Array (cons, partition, toUnfoldable, zip) -import Data.Array (singleton, union, (:)) as Array -import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) -import Data.Either (Either(Left, Right), either, hush, isRight, note) -import Data.Foldable (foldM) +import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) -import Data.Lattice (join) -import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) -import Data.Lens.Getter (to, use) -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Lens.Types (Lens') -import Data.List (List(Nil, Cons)) -import Data.Map (Map, empty, fromFoldable, lookup, singleton, union) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) -import Data.Newtype (class Newtype, over, unwrap, wrap) -import Data.Set (insert) as Set +import Data.Map (Map, empty, singleton, union) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (class Newtype, over, wrap) import Data.Show.Generic (genericShow) -import Data.Symbol (SProxy(SProxy)) -import Data.Traversable (for, traverse_) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) -import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) -import Effect.Exception (throw) -import MedeaPrelude (mapMaybe) -import Prelude (join) as Bind -import Type.Proxy (Proxy(Proxy)) -- Taken mainly from https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-constraints/html/Ledger-Constraints-OffChain.html -- Plutus rev: cc72a56eafb02333c96f662581b57504f8f8992f via Plutus-apps (localhost): abe4785a4fc4a10ba0c4e6417f0ab9f1b4169b26 diff --git a/src/Internal/Types/UnbalancedTransaction.purs b/src/Internal/Types/UnbalancedTransaction.purs index b268839a5..55138aecd 100644 --- a/src/Internal/Types/UnbalancedTransaction.purs +++ b/src/Internal/Types/UnbalancedTransaction.purs @@ -11,7 +11,6 @@ import Aeson (class EncodeAeson) import Ctl.Internal.Cardano.Types.Transaction ( PublicKey , RequiredSigner(RequiredSigner) - , Transaction , Vkey(Vkey) , convertPubKey ) From 6b1109c16a7445c8cf53f9e711d50bcaa92a2f8e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 23 Mar 2023 17:58:01 +0400 Subject: [PATCH 116/478] Formatting, code style, remove dead comments --- src/Internal/BalanceTx/BalanceTx.purs | 50 ++++++++++++--------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 165ee51d3..e4239ac9e 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -238,7 +238,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do reindexedRedeemers <- liftEither $ lmap ReindexRedeemersError $ indexRedeemers (mkRedeemersContext unbalancedCollTx) transaction.redeemers let - transaction' = transaction + reindexedTransaction = transaction { transaction = attachIndexedRedeemers reindexedRedeemers unbalancedCollTx } @@ -246,7 +246,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do -- Balance and finalize the transaction: runBalancer { strategy: selectionStrategy - , transaction: transaction' + , transaction: reindexedTransaction , changeAddress , allUtxos , utxos: availableUtxos @@ -393,25 +393,25 @@ runBalancer p = do logBalancerState "Balancing change and fees (Stage 2)" p.allUtxos state { transaction: evaluatedTx, minFee: newMinFee } <- evaluateTx state case newMinFee <= minFee of - true -> + true -> do logTransaction "Balanced transaction (Done)" p.allUtxos - evaluatedTx.transaction *> - if Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs then - do - selectionState <- - performMultiAssetSelection p.strategy leftoverUtxos - (lovelaceValueOf one) - runNextBalancerStep $ state - { transaction = transaction # - _transaction <<< _body <<< _inputs %~ Set.union - (selectedInputs selectionState) - , leftoverUtxos = - selectionState ^. _leftoverUtxos - } - else - logTransaction "Balanced transaction (Done)" p.allUtxos - transaction.transaction - *> finalizeTransaction evaluatedTx p.allUtxos + evaluatedTx.transaction + if Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs then + do + selectionState <- + performMultiAssetSelection p.strategy leftoverUtxos + (lovelaceValueOf one) + runNextBalancerStep $ state + { transaction = transaction # + _transaction <<< _body <<< _inputs %~ Set.union + (selectedInputs selectionState) + , leftoverUtxos = + selectionState ^. _leftoverUtxos + } + else do + logTransaction "Balanced transaction (Done)" p.allUtxos + transaction.transaction + finalizeTransaction evaluatedTx p.allUtxos false -> runNextBalancerStep $ state { transaction = transaction @@ -437,13 +437,9 @@ runBalancer p = do _body worker $ - -- state { changeOutputs = changeOutputs } # - -- if requiredValue == mempty then BalanceChangeAndMinFee else PrebalanceTx - if requiredValue == mempty then - BalanceChangeAndMinFee $ state - { changeOutputs = changeOutputs, transaction = transaction } - else - PrebalanceTx $ state { changeOutputs = changeOutputs } + if requiredValue == mempty then BalanceChangeAndMinFee $ state + { changeOutputs = changeOutputs, transaction = transaction } + else PrebalanceTx $ state { changeOutputs = changeOutputs } -- | Selects a combination of unspent transaction outputs from the wallet's -- | utxo set so that the total input value is sufficient to cover all From 30fe2bec357a30aedd7e2082236f164b20e13efb Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Mon, 27 Mar 2023 02:36:28 +0100 Subject: [PATCH 117/478] Wait for first slot before distributing to wallets --- src/Internal/Plutip/Server.purs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index eee508abc..f54048f45 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -17,6 +17,7 @@ import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat import Contract.Address (NetworkId(MainnetId)) +import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither) @@ -324,6 +325,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do "Impossible happened: could not decode wallets. Please report as bug" $ decodeWallets distr (unwrap <$> response.privateKeys) let walletsArray = keyWallets (Proxy :: Proxy distr) wallets + void $ waitNSlots one transferFundsFromEnterpriseToBase ourKey walletsArray pure wallets From e9426fca6c839df1396fa690f1e84dc6aaf15e2c Mon Sep 17 00:00:00 2001 From: danielfarrelly <98325361+danielfarrelly@users.noreply.github.com> Date: Mon, 27 Mar 2023 18:27:10 +0100 Subject: [PATCH 118/478] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 189ca6182..8dad2a929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -92,6 +92,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Fixed collateral selection - sort the UTxOs by ADA value in descending order, before selecting them for collateral, to ensure that if a combination that satisfies the requirements is possible, it will be selected. The bug affected CIP-30 wallets. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Output correct reward address in CIP-30 mock ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ### Removed From 8d6a366b09e0b747f406e1dd2a8a364ca6f89769 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 Mar 2023 21:13:45 +0300 Subject: [PATCH 119/478] Remove factually incorrect claim --- doc/using-from-js.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/using-from-js.md b/doc/using-from-js.md index b115f469f..e954a487f 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -139,8 +139,6 @@ Our default [WebPack config](../webpack.config.js) uses `BROWSER_RUNTIME` enviro }), ``` -The reason why we are tied to WebPack is that it is one of the few bundlers that support async WASM imports. - There's [a claim that Vite bundler can also be used](https://github.com/Plutonomicon/cardano-transaction-lib/issues/79#issuecomment-1257036068), although we don't officially support this method. ### Calling in the browser From a6bd87d21028c0104adb402ed69d20cc9324d674 Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Thu, 30 Mar 2023 13:27:07 -0400 Subject: [PATCH 120/478] Add other Local TX Monitor Calls --- src/Internal/QueryM.purs | 46 ++++++++++ src/Internal/QueryM/Ogmios.purs | 150 +++++++++++++++++++++++++++++++- 2 files changed, 194 insertions(+), 2 deletions(-) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 72a3e25b4..d81654b02 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -17,6 +17,7 @@ module Ctl.Internal.QueryM , QueryRuntime , SubmitTxListenerSet , WebSocket(WebSocket) + , acquireMempoolSnapshotAff , evaluateTxOgmios , getChainTip , getLogger @@ -27,14 +28,19 @@ module Ctl.Internal.QueryM , postAeson , mkListenerSet , defaultMessageListener + , mempoolSnapshotHasTxAff + , mempoolSnapshotNextTxAff + , mempoolSnapshotSizeAndCapacityAff , mkOgmiosRequest , mkOgmiosRequestAff , mkOgmiosWebSocketAff , mkRequest , mkRequestAff + , releaseMempoolAff , scriptToAeson , submitTxOgmios , underlyingWebSocket + , withMempoolSnapshot ) where import Prelude @@ -354,6 +360,37 @@ mempoolSnapshotHasTxAff ogmiosWs logger ms = mkOgmiosRequestAff ogmiosWs logger (Ogmios.mempoolSnapshotHasTxCall ms) _.mempoolHasTx +mempoolSnapshotSizeAndCapacityAff + :: OgmiosWebSocket + -> Logger + -> Ogmios.MempoolSnapshotAcquired + -> Aff Ogmios.MempoolSizeAndCapacity +mempoolSnapshotSizeAndCapacityAff ogmiosWs logger ms = + mkOgmiosRequestAff ogmiosWs logger + (Ogmios.mempoolSnpashotSizeAndCapacityCall ms) + _.mempoolSizeAndCapcity + unit + +releaseMempoolAff + :: OgmiosWebSocket + -> Logger + -> Ogmios.MempoolSnapshotAcquired + -> Aff Ogmios.MempoolReleased +releaseMempoolAff ogmiosWs logger ms = + mkOgmiosRequestAff ogmiosWs logger (Ogmios.releaseMempoolCall ms) + _.releaseMempool + unit + +mempoolSnapshotNextTxAff + :: OgmiosWebSocket + -> Logger + -> Ogmios.MempoolSnapshotAcquired + -> Aff (Maybe Ogmios.MempoolTransaction) +mempoolSnapshotNextTxAff ogmiosWs logger ms = + mkOgmiosRequestAff ogmiosWs logger (Ogmios.mempoolSnapshotNextTxCall ms) + _.mempoolNextTx + unit + -------------------------------------------------------------------------------- -- Affjax -------------------------------------------------------------------------------- @@ -587,8 +624,14 @@ mkOgmiosWebSocketLens logger isTxConfirmed = do mkListenerSet dispatcher pendingRequests , acquireMempool: mkListenerSet dispatcher pendingRequests + , releaseMempool: + mkListenerSet dispatcher pendingRequests , mempoolHasTx: mkListenerSet dispatcher pendingRequests + , mempoolNextTx: + mkListenerSet dispatcher pendingRequests + , mempoolSizeAndCapcity: + mkListenerSet dispatcher pendingRequests , submit: mkSubmitTxListenerSet dispatcher pendingSubmitTxRequests , poolIds: @@ -630,7 +673,10 @@ type OgmiosListeners = , currentEpoch :: ListenerSet Unit Ogmios.CurrentEpoch , systemStart :: ListenerSet Unit Ogmios.OgmiosSystemStart , acquireMempool :: ListenerSet Unit Ogmios.MempoolSnapshotAcquired + , releaseMempool :: ListenerSet Unit Ogmios.MempoolReleased , mempoolHasTx :: ListenerSet TxHash Boolean + , mempoolNextTx :: ListenerSet Unit (Maybe Ogmios.MempoolTransaction) + , mempoolSizeAndCapcity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity , poolIds :: ListenerSet Unit PoolIdsR , poolParameters :: ListenerSet (Array PoolPubKeyHash) PoolParametersR , delegationsAndRewards :: ListenerSet (Array String) DelegationsAndRewardsR diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 408b5ad26..5da43c2f7 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -7,7 +7,11 @@ module Ctl.Internal.QueryM.Ogmios , CurrentEpoch(CurrentEpoch) , DelegationsAndRewardsR(DelegationsAndRewardsR) , ExecutionUnits + , MempoolReleased(Released) + , MempoolSizeAndCapacity(MempoolSizeAndCapacity) , MempoolSnapshotAcquired + , MempoolTransaction(MempoolTransaction) + , MempoolTxBody(MempoolTxBody) , OgmiosAddress , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) , OgmiosTxOut @@ -49,6 +53,8 @@ module Ctl.Internal.QueryM.Ogmios , evaluateTxCall , queryPoolIdsCall , mempoolSnapshotHasTxCall + , mempoolSnapshotNextTxCall + , mempoolSnpashotSizeAndCapacityCall , mkOgmiosCallType , queryChainTipCall , queryCurrentEpochCall @@ -57,6 +63,7 @@ module Ctl.Internal.QueryM.Ogmios , querySystemStartCall , queryPoolParameters , queryDelegationsAndRewards + , releaseMempoolCall , submitTxCall , slotLengthFactor , parseIpv6String @@ -69,7 +76,7 @@ import Aeson ( class DecodeAeson , class EncodeAeson , Aeson - , JsonDecodeError(AtKey, TypeMismatch, MissingValue) + , JsonDecodeError(AtKey, TypeMismatch, MissingValue, UnexpectedValue) , caseAesonArray , caseAesonObject , caseAesonString @@ -103,7 +110,8 @@ import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls(Costmdls) + ( AuxiliaryData + , Costmdls(Costmdls) , ExUnitPrices , ExUnits , Ipv4(Ipv4) @@ -113,6 +121,7 @@ import Ctl.Internal.Cardano.Types.Transaction , PoolPubKeyHash , Relay(MultiHostName, SingleHostAddr, SingleHostName) , SubCoin + , TransactionWitnessSet , URL(URL) , UnitInterval ) @@ -176,6 +185,7 @@ import Ctl.Internal.Types.SystemStart ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) +import Data.Argonaut (fromString) as JSON import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) @@ -317,6 +327,23 @@ mempoolSnapshotHasTxCall _ = mkOgmiosCallType , args: { id: _ } } +mempoolSnapshotNextTxCall + :: MempoolSnapshotAcquired -> JsonWspCall Unit (Maybe MempoolTransaction) +mempoolSnapshotNextTxCall _ = mkOgmiosCallType + { methodname: "NextTx" + , args: const { fields: "all" } + } + +mempoolSnpashotSizeAndCapacityCall + :: MempoolSnapshotAcquired -> JsonWspCall Unit MempoolSizeAndCapacity +mempoolSnpashotSizeAndCapacityCall _ = + mkOgmiosCallTypeNoArgs "SizeAndCapacity" + +releaseMempoolCall + :: MempoolSnapshotAcquired -> JsonWspCall Unit MempoolReleased +releaseMempoolCall _ = + mkOgmiosCallTypeNoArgs "ReleaseMempool" + -------------------------------------------------------------------------------- -- Local Tx Monitor Query Response & Parsing -------------------------------------------------------------------------------- @@ -331,6 +358,117 @@ instance DecodeAeson MempoolSnapshotAcquired where map AwaitAcquired <<< aesonObject (flip getField "AwaitAcquired" >=> flip getField "slot") +-- | The acquired snapshot’s size (in bytes), number of transactions, and capacity +-- | (in bytes). +newtype MempoolSizeAndCapacity = MempoolSizeAndCapacity + { capacity :: BigInt + , currentSize :: BigInt + , numberOfTxs :: BigInt + } + +derive instance Generic MempoolSizeAndCapacity _ +derive instance Newtype MempoolSizeAndCapacity _ +instance Show MempoolSizeAndCapacity where + show = genericShow + +instance DecodeAeson MempoolSizeAndCapacity where + decodeAeson = aesonObject $ \o -> do + capacity <- getField o "capacity" + currentSize <- getField o "currentSize" + numberOfTxs <- getField o "numberOfTxs" + + pure $ wrap { capacity, currentSize, numberOfTxs } + +data MempoolReleased = Released + +-- Ogmios only has a single response for releasing the mempool +-- https://github.com/CardanoSolutions/ogmios/blob/d326d8839d50ff628f7be1b5552f7cd22b2f094e/server/src/Ogmios/Data/Protocol/StateQuery.hs#L231 +instance DecodeAeson MempoolReleased where + decodeAeson = aesonString $ \a -> case a of + "Released" -> Right Released + _ -> Left $ UnexpectedValue $ JSON.fromString a + +instance Show MempoolReleased where + show Released = "Mempool Released" + +newtype MempoolTransaction = MempoolTransaction + { id :: OgmiosTxId + -- , inputSource :: InputSource + , body :: MempoolTxBody + -- , witness :: MempoolWitnessSet + -- , metadata :: Maybe MempoolAuxiliaryData + -- , raw :: String + } + +derive instance Generic MempoolTransaction _ +derive instance Newtype MempoolTransaction _ +instance Show MempoolTransaction where + show = genericShow + +instance DecodeAeson MempoolTransaction where + decodeAeson = aesonObject $ \o -> do + id <- getField o "id" + body <- getField o "body" + pure $ MempoolTransaction { id, body } + +-- TODO: Decode the remaining parts of the transaction. +newtype MempoolTxBody = MempoolTxBody + { inputs :: Array OgmiosTxOutRef + -- , collaterals :: Array OgmiosTxOutRef + , outputs :: Array OgmiosTxOut + -- , certificates :: Array Certificate + -- , withdrawls :: Map OgmiosRewardAddress BigInt + -- , fee :: BigInt + -- , validityInterval :: ValidityInterval + -- , update :: Maybe Update + -- , mint :: Maybe Value + -- , network :: Maybe NetworkId + -- , scriptIntegrityHash :: Maybe String + -- , requiredExtraSignatures :: Array OgmiosRequiredSigner + } + +derive instance Generic MempoolTxBody _ +derive instance Newtype MempoolTxBody _ +instance Show MempoolTxBody where + show = genericShow + +instance DecodeAeson MempoolTxBody where + decodeAeson = aesonObject $ \o -> do + inputs <- aesonArray (traverse parseTxOutRef) =<< getField o "inputs" + outputs <- aesonArray (traverse parseTxOut) =<< getField o "outputs" + pure $ MempoolTxBody { inputs, outputs } + +data InputSource = Inputs | Collaterals +type OgmiosRewardAddress = String +type OgmiosRequiredSigner = String +newtype MempoolWitnessSet = MempoolWitnessSet TransactionWitnessSet + +type MempoolAuxiliaryData = + { hash :: String + , body :: AuxiliaryData + } + +type ValidityInterval = + { invalidBefore :: Maybe BigInt + , invalidHereafter :: Maybe BigInt + } + +-- parser for ValidityInterval +parseValidityInterval :: Aeson -> Either JsonDecodeError ValidityInterval +parseValidityInterval = aesonObject $ \o -> do + invalidBefore <- getFieldOptional o "invalidBefore" + invalidHereafter <- getFieldOptional o "invalidHereafter" + pure { invalidBefore, invalidHereafter } + +-- parser for InputSource +parseInputSource :: Aeson -> Either JsonDecodeError InputSource +parseInputSource = aesonObject $ \o -> do + inputSource <- getField o "invalidSource" + case inputSource of + "inputs" -> Right Inputs + "outputs" -> Right Collaterals + _ -> Left $ UnexpectedValue $ JSON.fromString inputSource + -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- @@ -1117,6 +1255,14 @@ aesonArray -> Either JsonDecodeError a aesonArray = caseAesonArray (Left (TypeMismatch "Expected Array")) +-- helper for assuming we get an string +aesonString + :: forall (a :: Type) + . (String -> Either JsonDecodeError a) + -> Aeson + -> Either JsonDecodeError a +aesonString = caseAesonString (Left (TypeMismatch "Expected String")) + -- parser for txOutRef parseTxOutRef :: Aeson -> Either JsonDecodeError OgmiosTxOutRef parseTxOutRef = aesonObject $ \o -> do From 66611242e5755cc163fc45a1b50c9fef372598a0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 31 Mar 2023 13:18:24 +0400 Subject: [PATCH 121/478] Add Lace wallet and remove collateral requirement --- examples/ByUrl.purs | 7 +++ src/Contract/Config.purs | 9 ++++ src/Internal/Contract/Sign.purs | 3 +- src/Internal/Test/E2E/Route.js | 79 ++++++++++++++++++++++----------- src/Internal/Wallet.purs | 24 ++++++---- src/Internal/Wallet/Cip30.purs | 11 ++--- src/Internal/Wallet/Spec.purs | 4 ++ 7 files changed, 93 insertions(+), 44 deletions(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 6f4829fc8..bfce2834d 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -11,6 +11,7 @@ import Contract.Config , ConnectToEternl , ConnectToFlint , ConnectToNuFi + , ConnectToLace ) , blockfrostPublicPreviewServerConfig , mainnetFlintConfig @@ -23,6 +24,7 @@ import Contract.Config , testnetEternlConfig , testnetFlintConfig , testnetGeroConfig + , testnetLaceConfig , testnetLodeConfig , testnetNamiConfig , testnetNuFiConfig @@ -98,6 +100,10 @@ main = do /\ (mkBlockfrostPreviewConfig mbApiKey) { walletSpec = Just ConnectToNuFi } /\ Nothing + , "blockfrost-lace-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToLace } + /\ Nothing ] addLinks walletsWithBlockfrost examples route walletsWithBlockfrost examples @@ -121,6 +127,7 @@ wallets = Map.fromFoldable , "eternl" /\ testnetEternlConfig /\ Nothing , "lode" /\ testnetLodeConfig /\ Nothing , "nufi" /\ testnetNuFiConfig /\ Nothing + , "lace" /\ testnetLaceConfig /\ Nothing , "nami-mock" /\ testnetNamiConfig /\ Just MockNami , "gero-mock" /\ testnetGeroConfig /\ Just MockGero , "flint-mock" /\ testnetFlintConfig /\ Just MockFlint diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index a96234cb7..515924023 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -7,6 +7,7 @@ module Contract.Config , testnetEternlConfig , testnetLodeConfig , testnetNuFiConfig + , testnetLaceConfig , mainnetConfig , mainnetNamiConfig , mainnetGeroConfig @@ -14,6 +15,7 @@ module Contract.Config , mainnetEternlConfig , mainnetLodeConfig , mainnetNuFiConfig + , mainnetLaceConfig , defaultSynchronizationParams , strictSynchronizationParams , defaultTimeParams @@ -83,6 +85,7 @@ import Ctl.Internal.Wallet.Spec , ConnectToEternl , ConnectToLode , ConnectToNuFi + , ConnectToLace ) ) import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) @@ -172,6 +175,9 @@ testnetLodeConfig = testnetConfig { walletSpec = Just ConnectToLode } testnetNuFiConfig :: ContractParams testnetNuFiConfig = testnetConfig { walletSpec = Just ConnectToNuFi } +testnetLaceConfig :: ContractParams +testnetLaceConfig = testnetConfig { walletSpec = Just ConnectToLace } + mainnetConfig :: ContractParams mainnetConfig = testnetConfig { networkId = MainnetId } @@ -192,3 +198,6 @@ mainnetLodeConfig = mainnetConfig { walletSpec = Just ConnectToLode } mainnetNuFiConfig :: ContractParams mainnetNuFiConfig = mainnetConfig { walletSpec = Just ConnectToNuFi } + +mainnetLaceConfig :: ContractParams +mainnetLaceConfig = mainnetConfig { walletSpec = Just ConnectToLace } diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index fd940d56a..c8aa2e630 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -11,7 +11,7 @@ import Ctl.Internal.Cardano.Types.Transaction as Transaction import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) import Ctl.Internal.Wallet - ( Wallet(KeyWallet, Lode, Eternl, Flint, Gero, Nami, NuFi) + ( Wallet(KeyWallet, Lode, Eternl, Flint, Gero, Nami, NuFi, Lace) , callCip30Wallet ) import Data.Array (fromFoldable) @@ -45,6 +45,7 @@ signTransaction tx = do liftAff $ callCip30Wallet eternl \nw -> flip nw.signTx tx Lode lode -> liftAff $ callCip30Wallet lode \nw -> flip nw.signTx tx NuFi nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx + Lace nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx KeyWallet kw -> liftAff do witnessSet <- (unwrap kw).signTx tx pure $ Just (tx # _witnessSet <>~ witnessSet) diff --git a/src/Internal/Test/E2E/Route.js b/src/Internal/Test/E2E/Route.js index 1ea426a03..904f56429 100644 --- a/src/Internal/Test/E2E/Route.js +++ b/src/Internal/Test/E2E/Route.js @@ -13,32 +13,57 @@ exports._writeExampleHTML = example => wallets => () => { }; exports._addLinks = configs => tests => () => { - const table = document.createElement("table"); - table.border = "1"; - const header = document.createElement("tr"); - - header.appendChild(document.createElement("th")); - for (let config of configs) { - const td = document.createElement("th"); - td.textContent = config; - header.appendChild(td); - } - table.appendChild(header); - - for (let test of tests) { - const tr = document.createElement("tr"); - const titleTd = document.createElement("td"); - titleTd.textContent = test; - tr.appendChild(titleTd); - for (let config of configs) { - const td = document.createElement("td"); - const link = document.createElement("a"); - link.href = "?" + config + ":" + test; - link.textContent = config; - td.appendChild(link); - tr.appendChild(td); + const configSelectEl = document.createElement("select"); + const testNameSelectEl = document.createElement("select"); + const linkEl = document.createElement("a"); + linkEl.textContent = "➡ RUN EXAMPLE"; + + const h1El = document.createElement("h3"); + h1El.textContent = "Example runner"; + + const selectEnvironmentEl = document.createElement("span"); + selectEnvironmentEl.textContent = "Environment: "; + + const selectExampleEl = document.createElement("span"); + selectExampleEl.textContent = "Example: "; + + document.body.appendChild(h1El); + document.body.appendChild(selectEnvironmentEl); + + const updateUrl = () => { + linkEl.href = "?" + configSelectEl.value + ":" + testNameSelectEl.value; + }; + + configs.forEach((config, ix) => { + const optionEl = document.createElement("option"); + optionEl.textContent = config; + optionEl.value = config; + configSelectEl.appendChild(optionEl); + if (document.location.search.startsWith("?" + config)) { + configSelectEl.selectedIndex = ix; } - table.appendChild(tr); - } - document.body.appendChild(table); + }); + document.body.appendChild(configSelectEl); + document.body.appendChild(document.createElement("br")); + + document.body.appendChild(selectExampleEl); + + tests.forEach((test, ix) => { + const optionEl = document.createElement("option"); + optionEl.textContent = test; + optionEl.value = test; + testNameSelectEl.appendChild(optionEl); + if (document.location.search.endsWith(":" + test)) { + testNameSelectEl.selectedIndex = ix; + } + }); + document.body.appendChild(testNameSelectEl); + + updateUrl(); + document.body.appendChild(document.createElement("br")); + + document.body.appendChild(linkEl); + + configSelectEl.onchange = updateUrl; + testNameSelectEl.onchange = updateUrl; }; diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 876e19261..8d868f8e3 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -1,7 +1,7 @@ module Ctl.Internal.Wallet ( module KeyWallet , module Cip30Wallet - , Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, KeyWallet) + , Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) , WalletExtension ( NamiWallet , LodeWallet @@ -9,6 +9,7 @@ module Ctl.Internal.Wallet , FlintWallet , EternlWallet , NuFiWallet + , LaceWallet ) , isEternlAvailable , isGeroAvailable @@ -82,6 +83,7 @@ data Wallet | Eternl Cip30Wallet | Lode Cip30Wallet | NuFi Cip30Wallet + | Lace Cip30Wallet | KeyWallet KeyWallet data WalletExtension @@ -90,6 +92,7 @@ data WalletExtension | FlintWallet | EternlWallet | LodeWallet + | LaceWallet | NuFiWallet mkKeyWallet :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Wallet @@ -107,14 +110,15 @@ foreign import _icon :: String -> Effect String mkWalletAff :: WalletExtension -> Aff Wallet mkWalletAff walletExtension = case walletExtension of - NamiWallet -> Nami <$> mkCip30WalletAff "Nami" (_enableWallet walletName) - GeroWallet -> Gero <$> mkCip30WalletAff "Gero" (_enableWallet walletName) - EternlWallet -> Eternl <$> mkCip30WalletAff "Eternl" + NamiWallet -> Nami <$> mkCip30WalletAff (_enableWallet walletName) + GeroWallet -> Gero <$> mkCip30WalletAff (_enableWallet walletName) + EternlWallet -> Eternl <$> mkCip30WalletAff (_enableWallet walletName) - FlintWallet -> Flint <$> mkCip30WalletAff "Flint" + FlintWallet -> Flint <$> mkCip30WalletAff (_enableWallet walletName) LodeWallet -> _mkLodeWalletAff - NuFiWallet -> NuFi <$> mkCip30WalletAff "NuFi" (_enableWallet walletName) + NuFiWallet -> NuFi <$> mkCip30WalletAff (_enableWallet walletName) + LaceWallet -> Lace <$> mkCip30WalletAff (_enableWallet walletName) where walletName = walletExtensionToName walletExtension @@ -205,8 +209,8 @@ _mkLodeWalletAff = do retryNWithIntervalUntil (fromInt' 10) (toNumber 100) $ liftEffect (isWalletAvailable LodeWallet) catchError - (Lode <$> mkCip30WalletAff "Lode" (_enableWallet "LodeWallet")) - ( \e -> throwError <<< error $ (show e) <> + (Lode <$> mkCip30WalletAff (_enableWallet "LodeWallet")) + ( \e -> throwError <<< error $ show e <> " Note: LodeWallet is injected asynchronously and may be unreliable." ) where @@ -227,6 +231,7 @@ cip30Wallet = case _ of Eternl c30 -> Just c30 Lode c30 -> Just c30 NuFi c30 -> Just c30 + Lace c30 -> Just c30 KeyWallet _ -> Nothing walletExtensionToName :: WalletExtension -> String @@ -237,6 +242,7 @@ walletExtensionToName = case _ of EternlWallet -> "eternl" LodeWallet -> "LodeWallet" NuFiWallet -> "nufi" + LaceWallet -> "lace" walletToWalletExtension :: Wallet -> Maybe WalletExtension walletToWalletExtension = case _ of @@ -246,6 +252,7 @@ walletToWalletExtension = case _ of Eternl _ -> Just EternlWallet Lode _ -> Just LodeWallet NuFi _ -> Just NuFiWallet + Lace _ -> Just LaceWallet KeyWallet _ -> Nothing isEnabled :: WalletExtension -> Aff Boolean @@ -303,6 +310,7 @@ actionBasedOnWallet walletAction keyWalletAction = Flint wallet -> liftAff $ callCip30Wallet wallet walletAction Lode wallet -> liftAff $ callCip30Wallet wallet walletAction NuFi wallet -> liftAff $ callCip30Wallet wallet walletAction + Lace wallet -> liftAff $ callCip30Wallet wallet walletAction KeyWallet kw -> keyWalletAction kw callCip30Wallet diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index a36bff1ee..32e0dfb80 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -44,7 +44,7 @@ import Ctl.Internal.Types.CborBytes , rawBytesAsCborBytes ) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) -import Data.Maybe (Maybe(Just, Nothing), isNothing, maybe) +import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) import Effect (Effect) @@ -90,16 +90,11 @@ type Cip30Wallet = } mkCip30WalletAff - :: String - -- ^ Name of the wallet for error messages - -> Effect (Promise Cip30Connection) + :: Effect (Promise Cip30Connection) -- ^ A function to get wallet connection -> Aff Cip30Wallet -mkCip30WalletAff walletName enableWallet = do +mkCip30WalletAff enableWallet = do wallet <- toAffE enableWallet - -- Ensure the Nami wallet has collateral set up - whenM (isNothing <$> getCollateral wallet) do - liftEffect $ throw $ walletName <> " wallet missing collateral" pure { connection: wallet , getNetworkId diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 403980bd4..29e014374 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Wallet.Spec , ConnectToEternl , ConnectToLode , ConnectToNuFi + , ConnectToLace ) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) @@ -24,6 +25,7 @@ import Ctl.Internal.Wallet , EternlWallet , LodeWallet , NuFiWallet + , LaceWallet ) , mkKeyWallet , mkWalletAff @@ -55,6 +57,7 @@ data WalletSpec | ConnectToEternl | ConnectToLode | ConnectToNuFi + | ConnectToLace mkWalletBySpec :: WalletSpec -> Aff Wallet mkWalletBySpec = case _ of @@ -73,3 +76,4 @@ mkWalletBySpec = case _ of ConnectToEternl -> mkWalletAff EternlWallet ConnectToLode -> mkWalletAff LodeWallet ConnectToNuFi -> mkWalletAff NuFiWallet + ConnectToLace -> mkWalletAff LaceWallet From e0b8bc837f3286913c32a6546e09827159d2c37b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 31 Mar 2023 14:50:59 +0400 Subject: [PATCH 122/478] Refactor Blockfrost API key setup code --- examples/index.html | 11 ------- examples/index.js | 59 +++++++++++++++++++++++++++++++++- src/Internal/Test/E2E/Route.js | 2 +- 3 files changed, 59 insertions(+), 13 deletions(-) diff --git a/examples/index.html b/examples/index.html index b92b25e15..0cee19da7 100644 --- a/examples/index.html +++ b/examples/index.html @@ -7,16 +7,5 @@ Examples source code is located in examples/ directory.
- To set a Blockfrost API key, run the following in the browser console: -
-    localStorage.setItem('BLOCKFROST_API_KEY', 'your-key-here');
-  
- Then close the browser, and run: -
-    npm run e2e-pack-settings
-  
- The key will be saved permanently to your settings archive. Sharing the archive file after that implies that the key can be leaked. -
    -
diff --git a/examples/index.js b/examples/index.js index cc75f91f4..dcda6a63b 100644 --- a/examples/index.js +++ b/examples/index.js @@ -7,4 +7,61 @@ // spago bundle-module -m
--to output.js import("../output.js").then(m => m.main()); -console.log("app starting"); +// Set up Blockfrost API key prompt and UI around it. +// This code is only needed for CTL itself. +const oldBlockfrostKey = localStorage.getItem("BLOCKFROST_API_KEY"); + +const addSpacer = () => { + const spacer = document.createElement("span"); + spacer.textContent = " "; + document.body.appendChild(spacer); +}; + +const addHtml = html => { + const div = document.createElement("div"); + div.innerHTML = html; + document.body.appendChild(div); +}; + +addHtml(`

Blockfrost setup

`); + +if (oldBlockfrostKey !== null) { + const keyIsSetEl = document.createElement("span"); + keyIsSetEl.innerHTML = + '✅ Blockfrost key is set.'; + document.body.appendChild(keyIsSetEl); + + addSpacer(); + + const setBFKeyButton = document.createElement("button"); + setBFKeyButton.textContent = "Unset"; + setBFKeyButton.onclick = () => { + localStorage.removeItem("BLOCKFROST_API_KEY"); + window.location = "/"; + }; + document.body.appendChild(setBFKeyButton); +} else { + const keyIsNotSetEl = document.createElement("span"); + keyIsNotSetEl.innerHTML = + '❌ Blockfrost key is not set.'; + document.body.appendChild(keyIsNotSetEl); + + addSpacer(); + + const setBFKeyButton = document.createElement("button"); + setBFKeyButton.textContent = "Set Blockfrost API key"; + setBFKeyButton.onclick = () => { + const key = prompt("Enter your Blockfrost API key"); + if (key !== null) { + localStorage.setItem("BLOCKFROST_API_KEY", key); + window.location = "/"; + } + }; + document.body.appendChild(setBFKeyButton); +} + +addHtml(`
To set the Blockfrost API key permanently, close the browser and run: +
+    npm run e2e-pack-settings
+  
+ The key will be saved to your settings archive. Sharing the archive file after that implies that the key can be leaked.
`); diff --git a/src/Internal/Test/E2E/Route.js b/src/Internal/Test/E2E/Route.js index 904f56429..7d827c8de 100644 --- a/src/Internal/Test/E2E/Route.js +++ b/src/Internal/Test/E2E/Route.js @@ -39,7 +39,7 @@ exports._addLinks = configs => tests => () => { optionEl.textContent = config; optionEl.value = config; configSelectEl.appendChild(optionEl); - if (document.location.search.startsWith("?" + config)) { + if (document.location.search.startsWith("?" + config + ":")) { configSelectEl.selectedIndex = ix; } }); From a4e8cc1286ebfaf3bc24ce6aa1125c763e524fe7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 31 Mar 2023 17:38:43 +0400 Subject: [PATCH 123/478] Draft E2E support for Lace --- src/Internal/Test/E2E/Runner.purs | 9 ++++++++- src/Internal/Test/E2E/Types.purs | 5 +++-- src/Internal/Test/E2E/Wallets.purs | 31 ++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 0777540ea..58ac5a54a 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -50,7 +50,7 @@ import Ctl.Internal.Test.E2E.Types , SettingsArchive , SettingsRuntime , TmpDir - , WalletExt(FlintExt, NamiExt, GeroExt, LodeExt, EternlExt) + , WalletExt(FlintExt, NamiExt, GeroExt, LodeExt, EternlExt, LaceExt) , getE2EWalletExtension , mkE2ETest , mkExtensionId @@ -63,6 +63,8 @@ import Ctl.Internal.Test.E2E.Wallets , flintSign , geroConfirmAccess , geroSign + , laceConfirmAccess + , laceSign , lodeConfirmAccess , lodeSign , namiConfirmAccess @@ -279,6 +281,7 @@ testPlan opts@{ tests } rt@{ wallets } = GeroExt -> geroConfirmAccess LodeExt -> lodeConfirmAccess NamiExt -> namiConfirmAccess + LaceExt -> laceConfirmAccess sign = case wallet of EternlExt -> eternlSign @@ -286,6 +289,7 @@ testPlan opts@{ tests } rt@{ wallets } = GeroExt -> geroSign LodeExt -> lodeSign NamiExt -> namiSign + LaceExt -> laceSign someWallet = { wallet , name: walletName wallet @@ -389,6 +393,7 @@ readExtensions wallets = do gero <- readExtensionParams "GERO" wallets lode <- readExtensionParams "LODE" wallets eternl <- readExtensionParams "ETERNL" wallets + lace <- readExtensionParams "LACE" wallets pure $ Map.fromFoldable $ catMaybes [ Tuple NamiExt <$> nami @@ -396,6 +401,7 @@ readExtensions wallets = do , Tuple GeroExt <$> gero , Tuple LodeExt <$> lode , Tuple EternlExt <$> eternl + , Tuple LaceExt <$> lace ] -- | Read E2E test suite parameters from environment variables and CLI @@ -924,3 +930,4 @@ walletName = case _ of GeroExt -> "gero" LodeExt -> "lode" NamiExt -> "nami" + LaceExt -> "lace" diff --git a/src/Internal/Test/E2E/Types.purs b/src/Internal/Test/E2E/Types.purs index a75087a66..bbb3594ac 100644 --- a/src/Internal/Test/E2E/Types.purs +++ b/src/Internal/Test/E2E/Types.purs @@ -12,7 +12,7 @@ module Ctl.Internal.Test.E2E.Types , unExtensionId , WalletPassword , ExtensionParams - , WalletExt(FlintExt, NamiExt, GeroExt, LodeExt, EternlExt) + , WalletExt(FlintExt, NamiExt, GeroExt, LodeExt, EternlExt, LaceExt) , Extensions , E2ETestRuntime , SettingsRuntime @@ -93,7 +93,7 @@ type ExtensionParams = } -- | Enumeration of all known extensions. -data WalletExt = FlintExt | NamiExt | GeroExt | LodeExt | EternlExt +data WalletExt = FlintExt | NamiExt | GeroExt | LodeExt | EternlExt | LaceExt derive instance Eq WalletExt derive instance Ord WalletExt @@ -148,6 +148,7 @@ mkE2ETest str = <|> (tryWalletPrefix "gero" <#> mkTestEntry (WalletExtension GeroExt)) <|> (tryWalletPrefix "lode" <#> mkTestEntry (WalletExtension LodeExt)) <|> (tryWalletPrefix "nami" <#> mkTestEntry (WalletExtension NamiExt)) + <|> (tryWalletPrefix "lace" <#> mkTestEntry (WalletExtension LaceExt)) <|> (tryWalletPrefix "plutip" <#> mkTestEntry PlutipCluster) <|> (pure $ mkTestEntry NoWallet str) where diff --git a/src/Internal/Test/E2E/Wallets.purs b/src/Internal/Test/E2E/Wallets.purs index 44dea9cf6..8d7f7a73a 100644 --- a/src/Internal/Test/E2E/Wallets.purs +++ b/src/Internal/Test/E2E/Wallets.purs @@ -10,6 +10,8 @@ module Ctl.Internal.Test.E2E.Wallets , lodeSign , namiConfirmAccess , namiSign + , laceConfirmAccess + , laceSign ) where import Prelude @@ -221,6 +223,35 @@ geroSign extId password re = where pattern = Pattern $ unExtensionId extId <> "/index.html?#/swap?tx=" +laceConfirmAccess :: ExtensionId -> RunningE2ETest -> Aff Unit +laceConfirmAccess extId re = do + wasInPage <- isJust <$> inWalletPageOptional extId pattern re + confirmAccessTimeout + \page -> do + void $ Toppokki.pageWaitForSelector (wrap $ "button") + {} + page + void $ doJQ (buttonWithText "Authorize") click page + delaySec 0.1 + void $ doJQ (buttonWithText "Always") click page + when wasInPage do + waitForWalletPageClose pattern 10.0 re.browser + where + pattern :: Pattern + pattern = wrap $ unExtensionId extId <> "/dappConnector.html#/dapp/connect" + +-- Not implemented yet +laceSign :: ExtensionId -> WalletPassword -> RunningE2ETest -> Aff Unit +laceSign extId password re = do + inWalletPage pattern re signTimeout \page -> do + void $ Toppokki.pageWaitForSelector (wrap $ "button") + {} + page + void $ doJQ (buttonWithText "Confirm") click page + -- TODO: continue from here + where + pattern = Pattern $ unExtensionId extId <> "/index.html?#/swap?tx=" + -- Not implemented yet flintConfirmAccess :: ExtensionId -> RunningE2ETest -> Aff Unit flintConfirmAccess _ _ = From 9346c9e04cc3ad4ec4c3fb4093e6b14bf76284ec Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 1 Apr 2023 19:02:19 +0400 Subject: [PATCH 124/478] Throw when Lace is used in E2E --- src/Internal/Test/E2E/Wallets.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Internal/Test/E2E/Wallets.purs b/src/Internal/Test/E2E/Wallets.purs index 8d7f7a73a..7ee2c3296 100644 --- a/src/Internal/Test/E2E/Wallets.purs +++ b/src/Internal/Test/E2E/Wallets.purs @@ -242,7 +242,8 @@ laceConfirmAccess extId re = do -- Not implemented yet laceSign :: ExtensionId -> WalletPassword -> RunningE2ETest -> Aff Unit -laceSign extId password re = do +laceSign extId _password re = do + void $ liftEffect $ throw "Lace support is not implemented" inWalletPage pattern re signTimeout \page -> do void $ Toppokki.pageWaitForSelector (wrap $ "button") {} From eaf9a3c214f437aced8e71a689276162d7ec422e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 1 Apr 2023 19:05:45 +0400 Subject: [PATCH 125/478] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87b69f6a..7d02de241 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) +- **Lace wallet support** - ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - Automatic retries for `503 Service Unavailable` Kupo request errors. Retry attempts happen with exponentially increasing intervals ([#1436](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1436)) - New functions in the assertion library to track changes in CIP-30 wallet total balance - see `Contract.Test.Assert` ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Added `start-runtime` npm script to the template, to simplify UX ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) @@ -81,6 +82,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `plutip-server` has been moved from [Plutip repo](https://github.com/mlabs-haskell/plutip) to CTL ([#1415](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1415)) - `UnattachedUnbalancedTx` has been renamed and moved to `Contract.UnbalancedTx.UnbalancedTx`, the old `UnbalancedTx` type has been removed as not needed. `mkUnbalancedTx` function has been moved to `Contract.UnbalancedTx` ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Default NodeJS stable version is now v18 ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) +- Do not require light wallet collateral for all interactions ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) ### Fixed From ecf89b6c5c3525a7018df2f26472cff4109b2210 Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Sun, 2 Apr 2023 22:29:18 -0400 Subject: [PATCH 126/478] Decode the `MempoolTransaction` more --- src/Internal/QueryM/Ogmios.purs | 133 +++++++++++++++++++++++++++----- 1 file changed, 113 insertions(+), 20 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 5da43c2f7..4d55ee191 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -7,13 +7,16 @@ module Ctl.Internal.QueryM.Ogmios , CurrentEpoch(CurrentEpoch) , DelegationsAndRewardsR(DelegationsAndRewardsR) , ExecutionUnits + , InputSource(Collaterals, Inputs) , MempoolReleased(Released) , MempoolSizeAndCapacity(MempoolSizeAndCapacity) , MempoolSnapshotAcquired , MempoolTransaction(MempoolTransaction) , MempoolTxBody(MempoolTxBody) + , Network(Mainnet, Testnet) , OgmiosAddress , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) + , OgmiosRequiredSigner , OgmiosTxOut , OgmiosTxOutRef , PParamRational(PParamRational) @@ -47,6 +50,7 @@ module Ctl.Internal.QueryM.Ogmios , TxHash , UtxoQR(UtxoQR) , UtxoQueryResult + , ValidityInterval , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -191,7 +195,7 @@ import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt -import Data.Either (Either(Left, Right), either, note) +import Data.Either (Either(Left, Right), either, hush, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) import Data.Int (fromString) as Int @@ -393,11 +397,11 @@ instance Show MempoolReleased where newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId - -- , inputSource :: InputSource + , inputSource :: InputSource , body :: MempoolTxBody -- , witness :: MempoolWitnessSet -- , metadata :: Maybe MempoolAuxiliaryData - -- , raw :: String + , raw :: String } derive instance Generic MempoolTransaction _ @@ -409,22 +413,24 @@ instance DecodeAeson MempoolTransaction where decodeAeson = aesonObject $ \o -> do id <- getField o "id" body <- getField o "body" - pure $ MempoolTransaction { id, body } + raw <- getField o "raw" + inputSource <- getField o "inputSource" + pure $ MempoolTransaction { id, body, inputSource, raw } -- TODO: Decode the remaining parts of the transaction. newtype MempoolTxBody = MempoolTxBody { inputs :: Array OgmiosTxOutRef - -- , collaterals :: Array OgmiosTxOutRef + , collaterals :: Array OgmiosTxOutRef , outputs :: Array OgmiosTxOut -- , certificates :: Array Certificate -- , withdrawls :: Map OgmiosRewardAddress BigInt - -- , fee :: BigInt - -- , validityInterval :: ValidityInterval + , fee :: BigInt + , validityInterval :: ValidityInterval -- , update :: Maybe Update - -- , mint :: Maybe Value - -- , network :: Maybe NetworkId - -- , scriptIntegrityHash :: Maybe String - -- , requiredExtraSignatures :: Array OgmiosRequiredSigner + , mint :: Maybe Value + , network :: Maybe Network + , scriptIntegrityHash :: Maybe String + , requiredExtraSignatures :: Array OgmiosRequiredSigner } derive instance Generic MempoolTxBody _ @@ -435,10 +441,46 @@ instance Show MempoolTxBody where instance DecodeAeson MempoolTxBody where decodeAeson = aesonObject $ \o -> do inputs <- aesonArray (traverse parseTxOutRef) =<< getField o "inputs" + collaterals <- aesonArray (traverse parseTxOutRef) =<< getField o "collaterals" outputs <- aesonArray (traverse parseTxOut) =<< getField o "outputs" - pure $ MempoolTxBody { inputs, outputs } + fee <- getField o "fee" + validityInterval <- parseValidityInterval =<< getField o "validityInterval" + mint <- getFieldOptional' o "mint" >>= case _ of + Nothing -> pure Nothing + Just aes -> do + val <- parseValue aes + pure $ Just val + -- withdrawls <- getFieldOptional' o "withdrawls" >>= case _ of + -- Nothing -> pure Map.empty + -- Just aes -> map decodeAeson $ Map.fromFoldable $ ForeignObject.toUnfoldable aes + network <- getFieldOptional' o "network" + requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< getField o "requiredExtraSignatures" + scriptIntegrityHash <- getFieldOptional' o "scriptIntegrityHash" + pure $ MempoolTxBody + { inputs + , collaterals + , outputs + , fee + , validityInterval + , mint + , network + , scriptIntegrityHash + , requiredExtraSignatures + } data InputSource = Inputs | Collaterals +derive instance Generic InputSource _ +instance Show InputSource where + show = genericShow + +instance DecodeAeson InputSource where + decodeAeson = aesonObject $ \o -> do + inputSource <- getField o "inputSource" + case inputSource of + "inputs" -> Right Inputs + "outputs" -> Right Collaterals + _ -> unexpectedValueError inputSource + type OgmiosRewardAddress = String type OgmiosRequiredSigner = String newtype MempoolWitnessSet = MempoolWitnessSet TransactionWitnessSet @@ -453,6 +495,19 @@ type ValidityInterval = , invalidHereafter :: Maybe BigInt } +data Network = Mainnet | Testnet +derive instance Generic Network _ +instance Show Network where + show = genericShow + +instance DecodeAeson Network where + decodeAeson = aesonObject $ \o -> do + network <- getField o "network" + case network of + "mainnet" -> Right Mainnet + "testnet" -> Right Testnet + _ -> unexpectedValueError network + -- parser for ValidityInterval parseValidityInterval :: Aeson -> Either JsonDecodeError ValidityInterval parseValidityInterval = aesonObject $ \o -> do @@ -460,14 +515,52 @@ parseValidityInterval = aesonObject $ \o -> do invalidHereafter <- getFieldOptional o "invalidHereafter" pure { invalidBefore, invalidHereafter } --- parser for InputSource -parseInputSource :: Aeson -> Either JsonDecodeError InputSource -parseInputSource = aesonObject $ \o -> do - inputSource <- getField o "invalidSource" - case inputSource of - "inputs" -> Right Inputs - "outputs" -> Right Collaterals - _ -> Left $ UnexpectedValue $ JSON.fromString inputSource +newtype ProtocolParametersUpdate = ProtocolParametersUpdate + { minFeeCoefficient :: Maybe UInt + , minFeeConstant :: Maybe UInt + , maxBlockBodySize :: Maybe UInt + , maxBlockHeaderSize :: Maybe UInt + , maxTxSize :: Maybe UInt + , stakeKeyDeposit :: Maybe UInt + , poolDeposit :: Maybe UInt + , poolRetirementEpochBound :: Maybe UInt + , desiredNumberOfPools :: Maybe UInt + , poolInfluence :: Maybe Ratio + , monetaryExpansion :: Maybe Ratio + , treasuryExpansion :: Maybe Ratio + , decentralizationParameter :: Maybe Ratio + , minPoolCost :: Maybe UInt + , coinsPerUtxoWord :: Maybe UInt + , maxValueSize :: Maybe UInt + , collateralPercentage :: Maybe UInt + , maxCollateralInputs :: Maybe UInt + , extraEntropy :: Nonce + , protocolVersion :: ProtocolVersion + , costModels :: CostModels + , prices :: Prices + , maxExecutionUnitsPerTransaction :: ExUnits + , maxExecutionUnitsPerBlock :: ExUnits + } + +type Nonce = String +type Ratio = String + +type ProtocolVersion = + { major :: UInt + , minor :: UInt + , patch :: Maybe UInt + } + +type Prices = + { memory :: UnitInterval + , steps :: UnitInterval + } + +type CostModels = Map String CostModel +type CostModel = Map String Int + +unexpectedValueError :: forall a. String -> Either JsonDecodeError a +unexpectedValueError = Left <<< UnexpectedValue <<< JSON.fromString -------------------------------------------------------------------------------- -- Helpers From 5e2080af7776512c06a16e707b8fad9b63b77ecb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Apr 2023 13:19:49 +0400 Subject: [PATCH 127/478] Add a faling test to debug later --- test/Plutip/Contract.purs | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 925ecf671..6af277e05 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -39,7 +39,11 @@ import Contract.PlutusData , unitRedeemer ) import Contract.Prelude (mconcat) -import Contract.Prim.ByteArray (byteArrayFromAscii, hexToByteArrayUnsafe) +import Contract.Prim.ByteArray + ( byteArrayFromAscii + , hexToByteArrayUnsafe + , hexToRawBytes + ) import Contract.ScriptLookups as Lookups import Contract.Scripts ( ValidatorHash @@ -84,7 +88,12 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (UtxoMap, getWalletBalance, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value -import Contract.Wallet (getWalletUtxos, isWalletAvailable, withKeyWallet) +import Contract.Wallet + ( getWalletUtxos + , isWalletAvailable + , privateKeyFromBytes + , withKeyWallet + ) import Control.Monad.Error.Class (try) import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) @@ -149,7 +158,7 @@ import Data.Either (Either(Left, Right), isLeft, isRight) import Data.Foldable (fold, foldM, length) import Data.Lens (view) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), isJust) +import Data.Maybe (Maybe(Just, Nothing), fromJust, isJust) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse, traverse_) import Data.Tuple (Tuple(Tuple)) @@ -158,6 +167,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) import Mote (group, skip, test) +import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures ( cip25MetadataFixture1 @@ -179,6 +189,26 @@ import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit suite = do + skip do + test "Buggy test that does nothing but fails" do + let + someUtxos = + [ BigInt.fromInt 2_000_000 + , BigInt.fromInt 3_000_000 + ] + + privateStakeKey1 = + wrap $ unsafePartial $ fromJust + $ privateKeyFromBytes =<< hexToRawBytes + "63361c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + + distribution = + [ withStakeKey privateStakeKey someUtxos + , withStakeKey privateStakeKey1 someUtxos + ] + + withWallets distribution \_ → pure unit + skip $ group "TooManyAssetsInOutput regression - #1441" do test "Mint many assets at once" do let From 77fb00bcacf517bb3977a2e02fb939526f8fce00 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Apr 2023 14:11:31 +0400 Subject: [PATCH 128/478] Fix problems with multiple stake keys --- src/Internal/Test/UtxoDistribution.purs | 7 +++--- test/Plutip/Contract.purs | 32 +++++++++++++++---------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 630691349..490bc5b2a 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -54,7 +54,7 @@ import Data.FoldableWithIndex (foldMapWithIndex) import Data.List (List, (:)) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just)) -import Data.Newtype (unwrap) +import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) import Data.Tuple (Tuple) import Data.Tuple.Nested (type (/\), (/\)) @@ -230,8 +230,9 @@ transferFundsFromEnterpriseToBase ourKey wallets = do -- It's necessary to include `mustBeSignedBy`, we get a -- `feeTooSmall` error otherwise. See -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/853 - Constraints.mustBeSignedBy payPkh <> - foldMapWithIndex + Constraints.mustBeSignedBy payPkh + <> Constraints.mustBeSignedBy (wrap $ unwrap stakePkh) + <> foldMapWithIndex ( \input (TransactionOutputWithRefScript { output }) -> Constraints.mustPayToPubKeyAddress payPkh stakePkh (unwrap output).amount diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 6af277e05..d294bda19 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -189,8 +189,19 @@ import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit suite = do - skip do - test "Buggy test that does nothing but fails" do + group "Regressions" do + skip $ test + "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice ManyAssets.contract + test "#1480 - test that does nothing but fails" do let someUtxos = [ BigInt.fromInt 2_000_000 @@ -202,24 +213,19 @@ suite = do $ privateKeyFromBytes =<< hexToRawBytes "63361c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + privateStakeKey2 = + wrap $ unsafePartial $ fromJust + $ privateKeyFromBytes =<< hexToRawBytes + "6ffb1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + distribution = [ withStakeKey privateStakeKey someUtxos , withStakeKey privateStakeKey1 someUtxos + , withStakeKey privateStakeKey2 someUtxos ] withWallets distribution \_ → pure unit - skip $ group "TooManyAssetsInOutput regression - #1441" do - test "Mint many assets at once" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 - ] - withWallets distribution \alice -> do - withKeyWallet alice ManyAssets.contract - group "Contract interface" do test "Collateral selection: UTxO with lower amount is selected" do let From 9f42c11c9e2e1c01286de37908899b1c54a63e9f Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Mon, 3 Apr 2023 15:37:13 -0400 Subject: [PATCH 129/478] Complete decode of the `MempoolTxBody` --- src/Internal/QueryM/Ogmios.purs | 321 ++++++++++++++++++++++++-------- 1 file changed, 241 insertions(+), 80 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 4d55ee191..4f2fa18bd 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -16,9 +16,20 @@ module Ctl.Internal.QueryM.Ogmios , Network(Mainnet, Testnet) , OgmiosAddress , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) + , OgmiosCertificate + ( StakeDelegation + , StakeKeyRegistration + , StakeKeyDeregistration + , PoolRegistration + , PoolRetirement + , GenesisDelegation + , MoveInstantaneousRewards + ) , OgmiosRequiredSigner + , OgmiosRewardAddress , OgmiosTxOut , OgmiosTxOutRef + , OgmiosWithdrawls(OgmiosWithdrawls) , PParamRational(PParamRational) , PoolParameters , PoolParametersR(PoolParametersR) @@ -42,15 +53,26 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosSystemStart(OgmiosSystemStart) , OgmiosTxIn , OgmiosTxId + , Proposal(Proposal) , SubmitTxR(SubmitTxSuccess, SubmitFail) , TxEvaluationFailure(UnparsedError, ScriptFailures) , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) , PoolIdsR , TxHash + , Update(Update) , UtxoQR(UtxoQR) , UtxoQueryResult , ValidityInterval + , StakeDelegation + , PoolRetirement + , GenesisDelegation + , MoveInstantaneousRewards + , DigestBlake2BCredential + , PoolId + , Rewards(Rewards) + , RewardPot(Reserves, Treasury) + , LovelaceDelta , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -125,7 +147,6 @@ import Ctl.Internal.Cardano.Types.Transaction , PoolPubKeyHash , Relay(MultiHostName, SingleHostAddr, SingleHostName) , SubCoin - , TransactionWitnessSet , URL(URL) , UnitInterval ) @@ -195,7 +216,7 @@ import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt -import Data.Either (Either(Left, Right), either, hush, note) +import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) import Data.Int (fromString) as Int @@ -417,16 +438,15 @@ instance DecodeAeson MempoolTransaction where inputSource <- getField o "inputSource" pure $ MempoolTransaction { id, body, inputSource, raw } --- TODO: Decode the remaining parts of the transaction. newtype MempoolTxBody = MempoolTxBody { inputs :: Array OgmiosTxOutRef , collaterals :: Array OgmiosTxOutRef , outputs :: Array OgmiosTxOut - -- , certificates :: Array Certificate - -- , withdrawls :: Map OgmiosRewardAddress BigInt - , fee :: BigInt + , certificates :: Array OgmiosCertificate + , withdrawls :: OgmiosWithdrawls + , fee :: Coin , validityInterval :: ValidityInterval - -- , update :: Maybe Update + , update :: Maybe Update , mint :: Maybe Value , network :: Maybe Network , scriptIntegrityHash :: Maybe String @@ -440,28 +460,33 @@ instance Show MempoolTxBody where instance DecodeAeson MempoolTxBody where decodeAeson = aesonObject $ \o -> do - inputs <- aesonArray (traverse parseTxOutRef) =<< getField o "inputs" - collaterals <- aesonArray (traverse parseTxOutRef) =<< getField o "collaterals" - outputs <- aesonArray (traverse parseTxOut) =<< getField o "outputs" - fee <- getField o "fee" - validityInterval <- parseValidityInterval =<< getField o "validityInterval" - mint <- getFieldOptional' o "mint" >>= case _ of + inputs <- aesonArray (traverse parseTxOutRef) =<< o .: "inputs" + collaterals <- aesonArray (traverse parseTxOutRef) =<< o .: "collaterals" + outputs <- aesonArray (traverse parseTxOut) =<< o .: "outputs" + certificates <- aesonArray (traverse decodeAeson) =<< o .: "certificates" + fee <- o .: "fee" + validityInterval <- parseValidityInterval =<< o .: "validityInterval" + update <- o .:? "update" + mint <- o .:? "mint" >>= case _ of Nothing -> pure Nothing Just aes -> do val <- parseValue aes pure $ Just val - -- withdrawls <- getFieldOptional' o "withdrawls" >>= case _ of - -- Nothing -> pure Map.empty - -- Just aes -> map decodeAeson $ Map.fromFoldable $ ForeignObject.toUnfoldable aes - network <- getFieldOptional' o "network" - requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< getField o "requiredExtraSignatures" - scriptIntegrityHash <- getFieldOptional' o "scriptIntegrityHash" + withdrawls <- o .:? "withdrawls" >>= case _ of + Nothing -> pure $ OgmiosWithdrawls Map.empty + Just wthd -> pure wthd + network <- o .:? "network" + requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< o .: "requiredExtraSignatures" + scriptIntegrityHash <- o .:? "scriptIntegrityHash" pure $ MempoolTxBody { inputs , collaterals , outputs + , certificates + , withdrawls , fee , validityInterval + , update , mint , network , scriptIntegrityHash @@ -472,10 +497,8 @@ data InputSource = Inputs | Collaterals derive instance Generic InputSource _ instance Show InputSource where show = genericShow - instance DecodeAeson InputSource where - decodeAeson = aesonObject $ \o -> do - inputSource <- getField o "inputSource" + decodeAeson = aesonString $ \inputSource -> case inputSource of "inputs" -> Right Inputs "outputs" -> Right Collaterals @@ -483,7 +506,133 @@ instance DecodeAeson InputSource where type OgmiosRewardAddress = String type OgmiosRequiredSigner = String -newtype MempoolWitnessSet = MempoolWitnessSet TransactionWitnessSet +newtype MempoolWitnessSet = MempoolWitnessSet + { signatures :: Map String String + , scripts :: Map String ScriptRef + -- , bootstrap :: Array BootstrapWitness + -- , datums :: Map String Datum + -- , redeemers :: Map String Redeemer + } + +data OgmiosCertificate + = StakeDelegation StakeDelegation + | StakeKeyRegistration DigestBlake2BCredential + | StakeKeyDeregistration DigestBlake2BCredential + | PoolRegistration PoolParameters + | PoolRetirement PoolRetirement + | GenesisDelegation GenesisDelegation + | MoveInstantaneousRewards MoveInstantaneousRewards + +derive instance Generic OgmiosCertificate _ +instance Show OgmiosCertificate where + show = genericShow +instance DecodeAeson OgmiosCertificate where + decodeAeson = aesonObject $ \o -> do + case (Array.head $ ForeignObject.toUnfoldable o) of + Just ("stakeDelegation" /\ certificate) -> map StakeDelegation $ parseStakeDelegation certificate + Just ("stakeKeyRegistration" /\ certificate) -> map StakeKeyRegistration $ decodeAeson certificate + Just ("stakeKeyDeregistration" /\ certificate) -> map StakeKeyDeregistration $ decodeAeson certificate + Just ("poolRegistration" /\ certificate) -> aesonObject (map PoolRegistration <<< decodePoolParameters) certificate + Just ("poolRetirement" /\ certificate) -> map PoolRetirement $ parsePoolRetirement certificate + Just ("GenesisDelegation" /\ certificate) -> map GenesisDelegation $ parseGenesisDelegation certificate + Just ("moveInstantaneousRewards" /\ certificate) -> map MoveInstantaneousRewards $ parseMoveInstantaneousRewards certificate + _ -> Left $ TypeMismatch "Expected a Certificate" + +type StakeDelegation = + { delegator :: DigestBlake2BCredential + , delegatee :: PoolId + } +type PoolRetirement = + { retirementEpoch :: Epoch + , poolId :: PoolId + } +type GenesisDelegation = + { delegateKeyHash :: VRFKeyHash + , verificationKeyHash :: VRFKeyHash + , vrfVerificationKeyHash :: VRFKeyHash + } +type MoveInstantaneousRewards = + { rewards :: Maybe Rewards + , value :: Maybe Coin + , pot :: RewardPot + } + +parseStakeDelegation :: Aeson -> Either JsonDecodeError StakeDelegation +parseStakeDelegation = aesonObject $ \o -> do + delegator <- o .: "delegator" + delegatee <- o .: "delegatee" + pure { delegator, delegatee } + +parsePoolRetirement :: Aeson -> Either JsonDecodeError PoolRetirement +parsePoolRetirement = aesonObject $ \o -> do + retirementEpoch <- o .: "retirementEpoch" + poolId <- o .: "poolId" + pure { retirementEpoch, poolId } + +parseGenesisDelegation :: Aeson -> Either JsonDecodeError GenesisDelegation +parseGenesisDelegation = aesonObject $ \o -> do + delegateKeyHash <- decodeVRFKeyHash =<< o .: "delegateKeyHash" + verificationKeyHash <- decodeVRFKeyHash =<< o .: "verificationKeyHash" + vrfVerificationKeyHash <- decodeVRFKeyHash =<< o .: "vrfVerificationKeyHash" + pure { delegateKeyHash, verificationKeyHash, vrfVerificationKeyHash } + +parseMoveInstantaneousRewards :: Aeson -> Either JsonDecodeError MoveInstantaneousRewards +parseMoveInstantaneousRewards = aesonObject $ \o -> do + rewards <- o .:? "rewards" + value <- o .:? "value" + pot <- o .: "pot" + pure { rewards, value, pot } + +type PoolId = String +type DigestBlake2BCredential = String +newtype Rewards = Rewards (Map String LovelaceDelta) + +derive instance Generic Rewards _ +instance Show Rewards where + show = genericShow +instance DecodeAeson Rewards where + decodeAeson = aesonObject $ \obj -> do + let rewardsList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) + Rewards <<< Map.fromFoldable <$> + traverse decodeRewardAmount rewardsList + where + decodeRewardAmount + :: String /\ Aeson + -> Either JsonDecodeError (String /\ Coin) + decodeRewardAmount (rewardAddress /\ aeson) = do + coin <- decodeAeson aeson + pure $ rewardAddress /\ Coin coin + +type LovelaceDelta = Coin +data RewardPot = Reserves | Treasury + +derive instance Generic RewardPot _ +instance Show RewardPot where + show = genericShow +instance DecodeAeson RewardPot where + decodeAeson = aesonString $ \rewardPot -> + case rewardPot of + "reserves" -> Right Reserves + "treasury" -> Right Treasury + _ -> unexpectedValueError rewardPot + +newtype OgmiosWithdrawls = OgmiosWithdrawls (Map OgmiosRewardAddress Coin) + +derive instance Generic OgmiosWithdrawls _ +instance Show OgmiosWithdrawls where + show = genericShow +instance DecodeAeson OgmiosWithdrawls where + decodeAeson = aesonObject $ \obj -> do + let withdrawlList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) + OgmiosWithdrawls <<< Map.fromFoldable <$> + traverse decodeWithdrawlAmount withdrawlList + where + decodeWithdrawlAmount + :: OgmiosRewardAddress /\ Aeson + -> Either JsonDecodeError (OgmiosRewardAddress /\ Coin) + decodeWithdrawlAmount (rewardAddress /\ aeson) = do + coin <- decodeAeson aeson + pure $ rewardAddress /\ Coin coin type MempoolAuxiliaryData = { hash :: String @@ -515,49 +664,53 @@ parseValidityInterval = aesonObject $ \o -> do invalidHereafter <- getFieldOptional o "invalidHereafter" pure { invalidBefore, invalidHereafter } -newtype ProtocolParametersUpdate = ProtocolParametersUpdate - { minFeeCoefficient :: Maybe UInt - , minFeeConstant :: Maybe UInt - , maxBlockBodySize :: Maybe UInt - , maxBlockHeaderSize :: Maybe UInt - , maxTxSize :: Maybe UInt - , stakeKeyDeposit :: Maybe UInt - , poolDeposit :: Maybe UInt - , poolRetirementEpochBound :: Maybe UInt - , desiredNumberOfPools :: Maybe UInt - , poolInfluence :: Maybe Ratio - , monetaryExpansion :: Maybe Ratio - , treasuryExpansion :: Maybe Ratio - , decentralizationParameter :: Maybe Ratio - , minPoolCost :: Maybe UInt - , coinsPerUtxoWord :: Maybe UInt - , maxValueSize :: Maybe UInt - , collateralPercentage :: Maybe UInt - , maxCollateralInputs :: Maybe UInt - , extraEntropy :: Nonce - , protocolVersion :: ProtocolVersion - , costModels :: CostModels - , prices :: Prices - , maxExecutionUnitsPerTransaction :: ExUnits - , maxExecutionUnitsPerBlock :: ExUnits +newtype Update = Update + { epoch :: UInt + , proposal :: Proposal } +derive instance Generic Update _ +instance Show Update where + show = genericShow +instance DecodeAeson Update where + decodeAeson = aesonObject $ \o -> do + epoch <- getField o "epoch" + proposal <- getField o "proposal" + pure $ Update { epoch, proposal } + +newtype Proposal = Proposal (Map String OgmiosProtocolParameters) +derive instance Generic Proposal _ +instance Show Proposal where + show = genericShow +instance DecodeAeson Proposal where + decodeAeson = aesonObject $ \obj -> do + let proposalList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) + Proposal <<< Map.fromFoldable <$> + traverse decodeWithdrawlAmount proposalList + where + decodeWithdrawlAmount + :: String /\ Aeson + -> Either JsonDecodeError (String /\ OgmiosProtocolParameters) + decodeWithdrawlAmount (string /\ aeson) = do + opp <- decodeAeson aeson + pure $ string /\ opp type Nonce = String type Ratio = String -type ProtocolVersion = +newtype ProtocolVersion = ProtocolVersion { major :: UInt , minor :: UInt , patch :: Maybe UInt } - -type Prices = - { memory :: UnitInterval - , steps :: UnitInterval - } - -type CostModels = Map String CostModel -type CostModel = Map String Int +derive instance Generic ProtocolVersion _ +instance Show ProtocolVersion where + show = genericShow +instance DecodeAeson ProtocolVersion where + decodeAeson = aesonObject $ \o -> do + major <- getField o "major" + minor <- getField o "minor" + patch <- getFieldOptional' o "patch" + pure $ ProtocolVersion { major, minor, patch } unexpectedValueError :: forall a. String -> Either JsonDecodeError a unexpectedValueError = Left <<< UnexpectedValue <<< JSON.fromString @@ -743,31 +896,39 @@ instance DecodeAeson PoolParametersR where decodeAeson aeson = do obj :: Object (Object Aeson) <- decodeAeson aeson kvs <- for (Object.toUnfoldable obj :: Array _) \(Tuple k objParams) -> do - vrfKeyhashHex <- objParams .: "vrf" - vrfKeyhashBytes <- note (TypeMismatch "VRFKeyHash") $ hexToByteArray - vrfKeyhashHex - vrfKeyhash <- note (TypeMismatch "VRFKeyHash") $ VRFKeyHash <$> fromBytes - (wrap vrfKeyhashBytes) - pledge <- objParams .: "pledge" - cost <- objParams .: "cost" - margin <- decodeUnitInterval =<< objParams .: "margin" - rewardAccount <- objParams .: "rewardAccount" - poolOwners <- objParams .: "owners" - relayArr <- objParams .: "relays" - relays <- for relayArr decodeRelay - poolMetadata <- objParams .:? "metadata" >>= traverse decodePoolMetadata - pure $ k /\ - { vrfKeyhash - , pledge - , cost - , margin - , rewardAccount - , poolOwners - , relays - , poolMetadata - } + poolParams <- decodePoolParameters objParams + pure $ k /\ poolParams pure $ PoolParametersR $ Map.fromFoldable kvs +decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters +decodePoolParameters = \objParams -> do + vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrf" + pledge <- objParams .: "pledge" + cost <- objParams .: "cost" + margin <- decodeUnitInterval =<< objParams .: "margin" + rewardAccount <- objParams .: "rewardAccount" + poolOwners <- objParams .: "owners" + relayArr <- objParams .: "relays" + relays <- for relayArr decodeRelay + poolMetadata <- objParams .:? "metadata" >>= traverse decodePoolMetadata + pure + { vrfKeyhash + , pledge + , cost + , margin + , rewardAccount + , poolOwners + , relays + , poolMetadata + } + +decodeVRFKeyHash :: Aeson -> Either JsonDecodeError VRFKeyHash +decodeVRFKeyHash = aesonString $ \vrfKeyhashHex -> do + vrfKeyhashBytes <- note (TypeMismatch "VRFKeyHash") $ hexToByteArray + vrfKeyhashHex + note (TypeMismatch "VRFKeyHash") $ VRFKeyHash <$> fromBytes + (wrap vrfKeyhashBytes) + decodeUnitInterval :: Aeson -> Either JsonDecodeError UnitInterval decodeUnitInterval aeson = do str <- decodeAeson aeson From e30eead41d233ad9fad74c8692c90c9825888035 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 4 Apr 2023 15:01:35 +0400 Subject: [PATCH 130/478] NB: update docs for CTL use from JS --- doc/using-from-js.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/using-from-js.md b/doc/using-from-js.md index e954a487f..e8883a260 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -160,6 +160,8 @@ import("./output.js").then( }); ``` +Note that `import` returns a `Promise`. + The config also contains some setup for output target: ```js @@ -187,6 +189,9 @@ The HTML page should contain this import, pointing to output bundle filename: `type="module"` is required here. + +`experiments.syncWebAssembly` WebPack setting must be set to `true` because CTL internal code expects it. + The whole webpage can be served with `BROWSER_RUNTIME=1 webpack-dev-server --progress` or built with `BROWSER_RUNTIME=1 webpack --mode=production` ## See also From c4ba8bb2ff478cafe6914a199c0129972edbff4a Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Tue, 4 Apr 2023 10:44:27 -0400 Subject: [PATCH 131/478] Decode witness set --- src/Internal/QueryM/Ogmios.purs | 146 ++++++++++++++++++++++++-------- 1 file changed, 113 insertions(+), 33 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 4f2fa18bd..af3d0994d 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -16,6 +16,7 @@ module Ctl.Internal.QueryM.Ogmios , Network(Mainnet, Testnet) , OgmiosAddress , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) + , OgmiosBootstrapWitness(OgmiosBootstrapWitness) , OgmiosCertificate ( StakeDelegation , StakeKeyRegistration @@ -25,11 +26,13 @@ module Ctl.Internal.QueryM.Ogmios , GenesisDelegation , MoveInstantaneousRewards ) + , OgmiosRedeemer(OgmiosRedeemer) , OgmiosRequiredSigner , OgmiosRewardAddress , OgmiosTxOut , OgmiosTxOutRef , OgmiosWithdrawls(OgmiosWithdrawls) + , OgmiosWitnessSet(OgmiosWitnessSet) , PParamRational(PParamRational) , PoolParameters , PoolParametersR(PoolParametersR) @@ -45,6 +48,7 @@ module Ctl.Internal.QueryM.Ogmios , IllFormedExecutionBudget , NoCostModelForLanguage ) + , Signature , AdditionalUtxoSet(AdditionalUtxoSet) , OgmiosUtxoMap , OgmiosDatum @@ -73,6 +77,9 @@ module Ctl.Internal.QueryM.Ogmios , Rewards(Rewards) , RewardPot(Reserves, Treasury) , LovelaceDelta + , ChainCode + , AddressAttributes + , VerificationKey , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -420,8 +427,8 @@ newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId , inputSource :: InputSource , body :: MempoolTxBody - -- , witness :: MempoolWitnessSet - -- , metadata :: Maybe MempoolAuxiliaryData + , witness :: OgmiosWitnessSet + -- , metadata :: Maybe OgmiosAuxiliaryData , raw :: String } @@ -432,11 +439,12 @@ instance Show MempoolTransaction where instance DecodeAeson MempoolTransaction where decodeAeson = aesonObject $ \o -> do - id <- getField o "id" - body <- getField o "body" - raw <- getField o "raw" - inputSource <- getField o "inputSource" - pure $ MempoolTransaction { id, body, inputSource, raw } + id <- o .: "id" + inputSource <- o .: "inputSource" + body <- o .: "body" + witness <- o .: "witness" + raw <- o .: "raw" + pure $ MempoolTransaction { id, inputSource, body, witness, raw } newtype MempoolTxBody = MempoolTxBody { inputs :: Array OgmiosTxOutRef @@ -469,9 +477,7 @@ instance DecodeAeson MempoolTxBody where update <- o .:? "update" mint <- o .:? "mint" >>= case _ of Nothing -> pure Nothing - Just aes -> do - val <- parseValue aes - pure $ Just val + Just aes -> map Just $ parseValue aes withdrawls <- o .:? "withdrawls" >>= case _ of Nothing -> pure $ OgmiosWithdrawls Map.empty Just wthd -> pure wthd @@ -506,14 +512,83 @@ instance DecodeAeson InputSource where type OgmiosRewardAddress = String type OgmiosRequiredSigner = String -newtype MempoolWitnessSet = MempoolWitnessSet - { signatures :: Map String String +newtype OgmiosWitnessSet = OgmiosWitnessSet + { signatures :: Map String Signature , scripts :: Map String ScriptRef - -- , bootstrap :: Array BootstrapWitness - -- , datums :: Map String Datum - -- , redeemers :: Map String Redeemer + , bootstrap :: Array OgmiosBootstrapWitness + , datums :: Map String OgmiosDatum + , redeemers :: Map String OgmiosRedeemer } +derive instance Generic OgmiosWitnessSet _ +instance Show OgmiosWitnessSet where + show = genericShow +instance DecodeAeson OgmiosWitnessSet where + decodeAeson = aesonObject $ \o -> do + signatureList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "signatures" + scriptList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "scripts" + bootstrap <- aesonArray (traverse decodeAeson) =<< o .: "bootstrap" + datumList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "datums" + redeemerList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "redeemers" + + signatures <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) signatureList + scripts <- Map.fromFoldable <$> traverse (decodeValue $ aesonObject parseScript) scriptList + datums <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) datumList + redeemers <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) redeemerList + + pure $ OgmiosWitnessSet + { signatures, scripts, bootstrap, datums, redeemers } + + where + + decodeValue + :: forall a. (Aeson -> Either JsonDecodeError a) + -> String /\ Aeson + -> Either JsonDecodeError (String /\ a) + decodeValue func (str /\ aes) = do + val <- func aes + pure $ str /\ val + +newtype OgmiosRedeemer = OgmiosRedeemer + { redeemer :: String, executionUnits :: ExUnits } + +derive instance Generic OgmiosRedeemer _ +instance Show OgmiosRedeemer where + show = genericShow +instance DecodeAeson OgmiosRedeemer where + decodeAeson = aesonObject $ \o -> do + redeemer <- o .: "redeemer" + execUnitsAeson <- o .: "executionUnits" + executionUnits <- flip aesonObject execUnitsAeson $ \obj -> do + mem <- obj .: "memory" + steps <- obj .: "steps" + pure { mem, steps } + pure $ OgmiosRedeemer { redeemer, executionUnits } + +newtype OgmiosBootstrapWitness = OgmiosBootstrapWitness + { signature :: Signature + , chainCode :: Maybe ChainCode + , addressAttributes :: Maybe AddressAttributes + , key :: VerificationKey + } + +derive instance Generic OgmiosBootstrapWitness _ +instance Show OgmiosBootstrapWitness where + show = genericShow +instance DecodeAeson OgmiosBootstrapWitness where + decodeAeson = aesonObject $ \o -> do + signature <- o .: "signature" + chainCode <- o .:? "chainCode" + addressAttributes <- o .:? "addressAttributes" + key <- o .: "key" + pure $ OgmiosBootstrapWitness + { signature, chainCode, addressAttributes, key } + +type Signature = String +type ChainCode = String +type AddressAttributes = String +type VerificationKey = String + data OgmiosCertificate = StakeDelegation StakeDelegation | StakeKeyRegistration DigestBlake2BCredential @@ -634,11 +709,17 @@ instance DecodeAeson OgmiosWithdrawls where coin <- decodeAeson aeson pure $ rewardAddress /\ Coin coin -type MempoolAuxiliaryData = +newtype OgmiosAuxiliaryData = OgmiosAuxiliaryData { hash :: String - , body :: AuxiliaryData + , body :: { scripts :: Maybe (Array ScriptRef) + , blob :: Maybe AuxiliaryData + } } +derive instance Generic OgmiosAuxiliaryData _ +instance Show OgmiosAuxiliaryData where + show = genericShow + type ValidityInterval = { invalidBefore :: Maybe BigInt , invalidHereafter :: Maybe BigInt @@ -1541,27 +1622,26 @@ parseTxOut = aesonObject $ \o -> do value <- parseValue o datumHash <- getFieldOptional' o "datumHash" datum <- getFieldOptional' o "datum" - script <- parseScript o + script <- getFieldOptional' o "script" >>= case _ of + Nothing -> pure Nothing + Just script -> Just <$> parseScript script pure { address, value, datumHash, datum, script } -parseScript :: Object Aeson -> Either JsonDecodeError (Maybe ScriptRef) -parseScript outer = - getFieldOptional' outer "script" >>= case _ of - Nothing -> pure Nothing - Just script -> do - case (Array.head $ ForeignObject.toUnfoldable script) of - Just ("plutus:v1" /\ plutusScript) -> - Just <$> parsePlutusScriptWithLang PlutusV1 plutusScript +parseScript :: Object Aeson -> Either JsonDecodeError ScriptRef +parseScript script = + case (Array.head $ ForeignObject.toUnfoldable script) of + Just ("plutus:v1" /\ plutusScript) -> + parsePlutusScriptWithLang PlutusV1 plutusScript - Just ("plutus:v2" /\ plutusScript) -> - Just <$> parsePlutusScriptWithLang PlutusV2 plutusScript + Just ("plutus:v2" /\ plutusScript) -> + parsePlutusScriptWithLang PlutusV2 plutusScript - Just ("native" /\ nativeScript) -> - Just <<< NativeScriptRef <$> parseNativeScript nativeScript + Just ("native" /\ nativeScript) -> + NativeScriptRef <$> parseNativeScript nativeScript - _ -> - Left $ TypeMismatch $ - "Expected native or Plutus script, got: " <> show script + _ -> + Left $ TypeMismatch $ + "Expected native or Plutus script, got: " <> show script where parsePlutusScriptWithLang :: Language -> Aeson -> Either JsonDecodeError ScriptRef From f15439b275299362168b6d89db1d59bfafc789af Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Tue, 4 Apr 2023 14:00:34 -0400 Subject: [PATCH 132/478] Decode Ogmios Auxiliary Data --- src/Internal/QueryM/Ogmios.purs | 68 ++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index af3d0994d..2be45a8fc 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -15,6 +15,7 @@ module Ctl.Internal.QueryM.Ogmios , MempoolTxBody(MempoolTxBody) , Network(Mainnet, Testnet) , OgmiosAddress + , OgmiosAuxiliaryData(OgmiosAuxiliaryData) , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) , OgmiosBootstrapWitness(OgmiosBootstrapWitness) , OgmiosCertificate @@ -116,6 +117,7 @@ import Aeson , decodeAeson , encodeAeson , fromArray + , fromString , getField , getFieldOptional , getFieldOptional' @@ -143,8 +145,7 @@ import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData - , Costmdls(Costmdls) + ( Costmdls(Costmdls) , ExUnitPrices , ExUnits , Ipv4(Ipv4) @@ -216,6 +217,17 @@ import Ctl.Internal.Types.SystemStart , sysStartToOgmiosTimestamp ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) +import Ctl.Internal.Types.TransactionMetadata + ( GeneralTransactionMetadata(GeneralTransactionMetadata) + , TransactionMetadatum + ( MetadataMap + , MetadataList + , Int + , Bytes + , Text + ) + , TransactionMetadatumLabel(TransactionMetadatumLabel) + ) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut (fromString) as JSON import Data.Array (catMaybes, index) @@ -428,7 +440,7 @@ newtype MempoolTransaction = MempoolTransaction , inputSource :: InputSource , body :: MempoolTxBody , witness :: OgmiosWitnessSet - -- , metadata :: Maybe OgmiosAuxiliaryData + , metadata :: Maybe OgmiosAuxiliaryData , raw :: String } @@ -443,8 +455,9 @@ instance DecodeAeson MempoolTransaction where inputSource <- o .: "inputSource" body <- o .: "body" witness <- o .: "witness" + metadata <- o .:? "metadata" raw <- o .: "raw" - pure $ MempoolTransaction { id, inputSource, body, witness, raw } + pure $ MempoolTransaction { id, inputSource, body, witness, metadata, raw } newtype MempoolTxBody = MempoolTxBody { inputs :: Array OgmiosTxOutRef @@ -712,13 +725,58 @@ instance DecodeAeson OgmiosWithdrawls where newtype OgmiosAuxiliaryData = OgmiosAuxiliaryData { hash :: String , body :: { scripts :: Maybe (Array ScriptRef) - , blob :: Maybe AuxiliaryData + , blob :: Maybe GeneralTransactionMetadata } } derive instance Generic OgmiosAuxiliaryData _ instance Show OgmiosAuxiliaryData where show = genericShow +instance DecodeAeson OgmiosAuxiliaryData where + decodeAeson = aesonObject $ \o -> do + hash <- o .: "hash" + body <- o .: "body" >>= (aesonObject $ \obj -> do + scripts <- obj .:? "scripts" >>= case _ of + Nothing -> pure Nothing + Just aes -> Just <$> aesonArray (traverse $ aesonObject parseScript) aes + blob <- obj .:? "blob" >>= case _ of + Nothing -> pure Nothing + Just aes -> Just <$> parseMetadata aes + pure { scripts, blob }) + pure $ OgmiosAuxiliaryData { hash, body } + + +parseMetadata :: Aeson -> Either JsonDecodeError GeneralTransactionMetadata +parseMetadata = aesonObject $ \o -> do + let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) + GeneralTransactionMetadata <<< Map.fromFoldable <$> + traverse decodeMetadata metadata + where + decodeMetadata + :: String /\ Aeson + -> Either JsonDecodeError (TransactionMetadatumLabel /\ TransactionMetadatum) + decodeMetadata (num /\ aeson) = do + label <- note (TypeMismatch "Epected a BigInt") $ TransactionMetadatumLabel <$> BigInt.fromString num + metadatum <- decodeMetadatum aeson + pure $ label /\ metadatum + + decodeMetadatum :: Aeson -> Either JsonDecodeError TransactionMetadatum + decodeMetadatum = aesonObject $ \o -> do + case (Array.head $ ForeignObject.toUnfoldable o) of + Just ("MetadataMap" /\ metadatum) -> decodeMetadataMap metadatum + Just ("MetadataList" /\ metadatum) -> map MetadataList $ aesonArray (traverse decodeMetadatum) metadatum + Just ("Int" /\ metadatum) -> map Int $ decodeAeson metadatum + Just ("Bytes" /\ metadatum) -> map Bytes $ decodeAeson metadatum + Just ("Text" /\ metadatum) -> map Text $ decodeAeson metadatum + _ -> Left $ TypeMismatch "Expected a TransactionMetadatum" + + decodeMetadataMap :: Aeson -> Either JsonDecodeError TransactionMetadatum + decodeMetadataMap = aesonObject $ \o -> do + let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) + MetadataMap <<< Map.fromFoldable <$> + ( for metadata \(Tuple k v) -> + Tuple <$> (decodeMetadatum $ fromString k) <*> decodeMetadatum v + ) type ValidityInterval = { invalidBefore :: Maybe BigInt From 2a8441e27db92f018a1b180be0d13bda09a944fa Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Tue, 4 Apr 2023 14:07:02 -0400 Subject: [PATCH 133/478] Apply Formatting --- src/Internal/QueryM/Ogmios.purs | 117 ++++++++++++++++++++++---------- 1 file changed, 82 insertions(+), 35 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2be45a8fc..3233e54e8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -495,7 +495,8 @@ instance DecodeAeson MempoolTxBody where Nothing -> pure $ OgmiosWithdrawls Map.empty Just wthd -> pure wthd network <- o .:? "network" - requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< o .: "requiredExtraSignatures" + requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< o .: + "requiredExtraSignatures" scriptIntegrityHash <- o .:? "scriptIntegrityHash" pure $ MempoolTxBody { inputs @@ -513,9 +514,11 @@ instance DecodeAeson MempoolTxBody where } data InputSource = Inputs | Collaterals + derive instance Generic InputSource _ instance Show InputSource where show = genericShow + instance DecodeAeson InputSource where decodeAeson = aesonString $ \inputSource -> case inputSource of @@ -536,18 +539,27 @@ newtype OgmiosWitnessSet = OgmiosWitnessSet derive instance Generic OgmiosWitnessSet _ instance Show OgmiosWitnessSet where show = genericShow + instance DecodeAeson OgmiosWitnessSet where decodeAeson = aesonObject $ \o -> do - signatureList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "signatures" - scriptList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "scripts" + signatureList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o + .: "signatures" + scriptList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: + "scripts" bootstrap <- aesonArray (traverse decodeAeson) =<< o .: "bootstrap" - datumList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "datums" - redeemerList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: "redeemers" - - signatures <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) signatureList - scripts <- Map.fromFoldable <$> traverse (decodeValue $ aesonObject parseScript) scriptList + datumList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: + "datums" + redeemerList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o + .: "redeemers" + + signatures <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) + signatureList + scripts <- Map.fromFoldable <$> traverse + (decodeValue $ aesonObject parseScript) + scriptList datums <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) datumList - redeemers <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) redeemerList + redeemers <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) + redeemerList pure $ OgmiosWitnessSet { signatures, scripts, bootstrap, datums, redeemers } @@ -555,7 +567,8 @@ instance DecodeAeson OgmiosWitnessSet where where decodeValue - :: forall a. (Aeson -> Either JsonDecodeError a) + :: forall a + . (Aeson -> Either JsonDecodeError a) -> String /\ Aeson -> Either JsonDecodeError (String /\ a) decodeValue func (str /\ aes) = do @@ -568,6 +581,7 @@ newtype OgmiosRedeemer = OgmiosRedeemer derive instance Generic OgmiosRedeemer _ instance Show OgmiosRedeemer where show = genericShow + instance DecodeAeson OgmiosRedeemer where decodeAeson = aesonObject $ \o -> do redeemer <- o .: "redeemer" @@ -588,6 +602,7 @@ newtype OgmiosBootstrapWitness = OgmiosBootstrapWitness derive instance Generic OgmiosBootstrapWitness _ instance Show OgmiosBootstrapWitness where show = genericShow + instance DecodeAeson OgmiosBootstrapWitness where decodeAeson = aesonObject $ \o -> do signature <- o .: "signature" @@ -614,31 +629,43 @@ data OgmiosCertificate derive instance Generic OgmiosCertificate _ instance Show OgmiosCertificate where show = genericShow + instance DecodeAeson OgmiosCertificate where decodeAeson = aesonObject $ \o -> do case (Array.head $ ForeignObject.toUnfoldable o) of - Just ("stakeDelegation" /\ certificate) -> map StakeDelegation $ parseStakeDelegation certificate - Just ("stakeKeyRegistration" /\ certificate) -> map StakeKeyRegistration $ decodeAeson certificate - Just ("stakeKeyDeregistration" /\ certificate) -> map StakeKeyDeregistration $ decodeAeson certificate - Just ("poolRegistration" /\ certificate) -> aesonObject (map PoolRegistration <<< decodePoolParameters) certificate - Just ("poolRetirement" /\ certificate) -> map PoolRetirement $ parsePoolRetirement certificate - Just ("GenesisDelegation" /\ certificate) -> map GenesisDelegation $ parseGenesisDelegation certificate - Just ("moveInstantaneousRewards" /\ certificate) -> map MoveInstantaneousRewards $ parseMoveInstantaneousRewards certificate + Just ("stakeDelegation" /\ certificate) -> map StakeDelegation $ + parseStakeDelegation certificate + Just ("stakeKeyRegistration" /\ certificate) -> map StakeKeyRegistration $ + decodeAeson certificate + Just ("stakeKeyDeregistration" /\ certificate) -> + map StakeKeyDeregistration $ decodeAeson certificate + Just ("poolRegistration" /\ certificate) -> aesonObject + (map PoolRegistration <<< decodePoolParameters) + certificate + Just ("poolRetirement" /\ certificate) -> map PoolRetirement $ + parsePoolRetirement certificate + Just ("GenesisDelegation" /\ certificate) -> map GenesisDelegation $ + parseGenesisDelegation certificate + Just ("moveInstantaneousRewards" /\ certificate) -> + map MoveInstantaneousRewards $ parseMoveInstantaneousRewards certificate _ -> Left $ TypeMismatch "Expected a Certificate" type StakeDelegation = { delegator :: DigestBlake2BCredential , delegatee :: PoolId } + type PoolRetirement = { retirementEpoch :: Epoch , poolId :: PoolId } + type GenesisDelegation = { delegateKeyHash :: VRFKeyHash , verificationKeyHash :: VRFKeyHash , vrfVerificationKeyHash :: VRFKeyHash } + type MoveInstantaneousRewards = { rewards :: Maybe Rewards , value :: Maybe Coin @@ -664,7 +691,8 @@ parseGenesisDelegation = aesonObject $ \o -> do vrfVerificationKeyHash <- decodeVRFKeyHash =<< o .: "vrfVerificationKeyHash" pure { delegateKeyHash, verificationKeyHash, vrfVerificationKeyHash } -parseMoveInstantaneousRewards :: Aeson -> Either JsonDecodeError MoveInstantaneousRewards +parseMoveInstantaneousRewards + :: Aeson -> Either JsonDecodeError MoveInstantaneousRewards parseMoveInstantaneousRewards = aesonObject $ \o -> do rewards <- o .:? "rewards" value <- o .:? "value" @@ -678,6 +706,7 @@ newtype Rewards = Rewards (Map String LovelaceDelta) derive instance Generic Rewards _ instance Show Rewards where show = genericShow + instance DecodeAeson Rewards where decodeAeson = aesonObject $ \obj -> do let rewardsList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) @@ -697,6 +726,7 @@ data RewardPot = Reserves | Treasury derive instance Generic RewardPot _ instance Show RewardPot where show = genericShow + instance DecodeAeson RewardPot where decodeAeson = aesonString $ \rewardPot -> case rewardPot of @@ -709,9 +739,11 @@ newtype OgmiosWithdrawls = OgmiosWithdrawls (Map OgmiosRewardAddress Coin) derive instance Generic OgmiosWithdrawls _ instance Show OgmiosWithdrawls where show = genericShow + instance DecodeAeson OgmiosWithdrawls where decodeAeson = aesonObject $ \obj -> do - let withdrawlList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) + let + withdrawlList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) OgmiosWithdrawls <<< Map.fromFoldable <$> traverse decodeWithdrawlAmount withdrawlList where @@ -724,28 +756,32 @@ instance DecodeAeson OgmiosWithdrawls where newtype OgmiosAuxiliaryData = OgmiosAuxiliaryData { hash :: String - , body :: { scripts :: Maybe (Array ScriptRef) - , blob :: Maybe GeneralTransactionMetadata - } + , body :: + { scripts :: Maybe (Array ScriptRef) + , blob :: Maybe GeneralTransactionMetadata + } } derive instance Generic OgmiosAuxiliaryData _ instance Show OgmiosAuxiliaryData where show = genericShow + instance DecodeAeson OgmiosAuxiliaryData where decodeAeson = aesonObject $ \o -> do hash <- o .: "hash" - body <- o .: "body" >>= (aesonObject $ \obj -> do - scripts <- obj .:? "scripts" >>= case _ of - Nothing -> pure Nothing - Just aes -> Just <$> aesonArray (traverse $ aesonObject parseScript) aes - blob <- obj .:? "blob" >>= case _ of - Nothing -> pure Nothing - Just aes -> Just <$> parseMetadata aes - pure { scripts, blob }) + body <- o .: "body" >>= + ( aesonObject $ \obj -> do + scripts <- obj .:? "scripts" >>= case _ of + Nothing -> pure Nothing + Just aes -> Just <$> aesonArray (traverse $ aesonObject parseScript) + aes + blob <- obj .:? "blob" >>= case _ of + Nothing -> pure Nothing + Just aes -> Just <$> parseMetadata aes + pure { scripts, blob } + ) pure $ OgmiosAuxiliaryData { hash, body } - parseMetadata :: Aeson -> Either JsonDecodeError GeneralTransactionMetadata parseMetadata = aesonObject $ \o -> do let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) @@ -754,17 +790,21 @@ parseMetadata = aesonObject $ \o -> do where decodeMetadata :: String /\ Aeson - -> Either JsonDecodeError (TransactionMetadatumLabel /\ TransactionMetadatum) + -> Either JsonDecodeError + (TransactionMetadatumLabel /\ TransactionMetadatum) decodeMetadata (num /\ aeson) = do - label <- note (TypeMismatch "Epected a BigInt") $ TransactionMetadatumLabel <$> BigInt.fromString num + label <- note (TypeMismatch "Epected a BigInt") $ TransactionMetadatumLabel + <$> BigInt.fromString num metadatum <- decodeMetadatum aeson pure $ label /\ metadatum - + decodeMetadatum :: Aeson -> Either JsonDecodeError TransactionMetadatum decodeMetadatum = aesonObject $ \o -> do case (Array.head $ ForeignObject.toUnfoldable o) of Just ("MetadataMap" /\ metadatum) -> decodeMetadataMap metadatum - Just ("MetadataList" /\ metadatum) -> map MetadataList $ aesonArray (traverse decodeMetadatum) metadatum + Just ("MetadataList" /\ metadatum) -> map MetadataList $ aesonArray + (traverse decodeMetadatum) + metadatum Just ("Int" /\ metadatum) -> map Int $ decodeAeson metadatum Just ("Bytes" /\ metadatum) -> map Bytes $ decodeAeson metadatum Just ("Text" /\ metadatum) -> map Text $ decodeAeson metadatum @@ -784,6 +824,7 @@ type ValidityInterval = } data Network = Mainnet | Testnet + derive instance Generic Network _ instance Show Network where show = genericShow @@ -807,9 +848,11 @@ newtype Update = Update { epoch :: UInt , proposal :: Proposal } + derive instance Generic Update _ instance Show Update where show = genericShow + instance DecodeAeson Update where decodeAeson = aesonObject $ \o -> do epoch <- getField o "epoch" @@ -817,9 +860,11 @@ instance DecodeAeson Update where pure $ Update { epoch, proposal } newtype Proposal = Proposal (Map String OgmiosProtocolParameters) + derive instance Generic Proposal _ instance Show Proposal where show = genericShow + instance DecodeAeson Proposal where decodeAeson = aesonObject $ \obj -> do let proposalList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) @@ -841,9 +886,11 @@ newtype ProtocolVersion = ProtocolVersion , minor :: UInt , patch :: Maybe UInt } + derive instance Generic ProtocolVersion _ instance Show ProtocolVersion where show = genericShow + instance DecodeAeson ProtocolVersion where decodeAeson = aesonObject $ \o -> do major <- getField o "major" From 27348310de02e95de9f2a0af10445d00c6a8ff27 Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Tue, 4 Apr 2023 16:27:04 -0400 Subject: [PATCH 134/478] Add functions to `Contract.Backend.Ogmios` --- CHANGELOG.md | 1 + src/Contract/Backend/Ogmios.purs | 99 +++++++++++++++++++++++++++++++- src/Internal/QueryM.purs | 49 ++++++++++++++++ src/Internal/QueryM/Ogmios.purs | 9 +++ 4 files changed, 156 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87b69f6a..d7a4c20a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Configuration options for Kupo in `buildCtlRuntime` ([`deferDbIndexes`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-defer-db-indexes) and [`pruneUtxo`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-prune-utxo)) ([#1448](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1448)) - `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) +- Ogmios specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios`. ### Changed diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index 226202c33..d18c4dcf9 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -1,15 +1,49 @@ -- | Module for backend-specific functions that only work with Ogmios/Kupo backends module Contract.Backend.Ogmios - ( getPoolParameters + ( acquireMempoolSnapshot + , fetchMempoolTXs + , getPoolParameters + , mempoolSnapshotHasTx + , mempoolSnapshotNextTx + , mempoolSnapshotSizeAndCapacity + , mempoolTxToUtxoMap + , releaseMempool ) where -import Prelude +import Contract.Prelude import Contract.Monad (Contract) import Contract.Transaction (PoolPubKeyHash) +import Contract.Utxos (UtxoMap) import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) import Ctl.Internal.Contract.Monad (wrapQueryM) +import Ctl.Internal.Plutus.Conversion (toPlutusTxOutputWithRefScript) +import Ctl.Internal.QueryM + ( acquireMempoolSnapshot + , mempoolSnapshotHasTx + , mempoolSnapshotNextTx + , mempoolSnapshotSizeAndCapacity + , releaseMempool + ) as QM +import Ctl.Internal.QueryM.Ogmios + ( MempoolReleased + , MempoolSizeAndCapacity + , MempoolSnapshotAcquired + , MempoolTransaction(MempoolTransaction) + , TxHash + ) import Ctl.Internal.QueryM.Pools as QueryM +import Ctl.Internal.TxOutput + ( ogmiosTxOutToTransactionOutput + , txOutRefToTransactionInput + ) +import Data.Array ((..), (:)) +import Data.Array as Array +import Data.Bifunctor (bimap) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) +import Data.UInt as UInt -- | **This function can only run with Ogmios backend** -- | @@ -19,3 +53,64 @@ getPoolParameters :: PoolPubKeyHash -> Contract PoolRegistrationParams getPoolParameters = wrapQueryM <<< QueryM.getPoolParameters + +-------------------------------------------------------------------------------- +-- Local Tx Monitor +-------------------------------------------------------------------------------- + +-- | Establish a connection with the Local TX Monitor. +-- | Instantly accquires the current mempool snapshot, and will wait for the next +-- | mempool snapshot if used again before using `releaseMempool`. +acquireMempoolSnapshot :: Contract MempoolSnapshotAcquired +acquireMempoolSnapshot = wrapQueryM QM.acquireMempoolSnapshot + +-- | Check to see if a TxHash is present in the current mempool snapshot. +mempoolSnapshotHasTx :: MempoolSnapshotAcquired -> TxHash -> Contract Boolean +mempoolSnapshotHasTx ms = wrapQueryM <<< QM.mempoolSnapshotHasTx ms + +-- | Get the first received TX in the current mempool snapshot. This function can +-- | be recursively called to traverse the finger-tree of the mempool data set. +-- | This will return `Nothing` once it has reached the end of the current mempool. +mempoolSnapshotNextTx + :: MempoolSnapshotAcquired -> Contract (Maybe MempoolTransaction) +mempoolSnapshotNextTx = wrapQueryM <<< QM.mempoolSnapshotNextTx + +-- | The acquired snapshot’s size (in bytes), number of transactions, and +-- | capacity (in bytes). +mempoolSnapshotSizeAndCapacity + :: MempoolSnapshotAcquired -> Contract MempoolSizeAndCapacity +mempoolSnapshotSizeAndCapacity = wrapQueryM <<< + QM.mempoolSnapshotSizeAndCapacity + +-- | Release the connection to the Local TX Monitor. +releaseMempool :: MempoolSnapshotAcquired -> Contract MempoolReleased +releaseMempool = wrapQueryM <<< QM.releaseMempool + +-- | Recursively request the next TX in the mempool until Ogmios does not +-- | respond with a new TX. +fetchMempoolTXs + :: MempoolSnapshotAcquired -> Contract (Array MempoolTransaction) +fetchMempoolTXs ms = do + nextTX <- mempoolSnapshotNextTx ms + case nextTX of + Just tx -> do + txs <- fetchMempoolTXs ms + pure $ tx : txs + Nothing -> pure mempty + +-- | Convert the UTxOs in the `MempoolTransaction` type into a `UtxoMap`. +mempoolTxToUtxoMap :: MempoolTransaction -> UtxoMap +mempoolTxToUtxoMap (MempoolTransaction { id, body }) = + Map.fromFoldable $ Array.catMaybes $ uncurry tupleMaybes + <$> bimap txOutRefToTransactionInput + (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) + <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) + (0 .. (length outputs - 1)) + outputs + + where + outputs = (unwrap body).outputs + + -- | Combine two `Maybe`s into a `Maybe Tuple`. + tupleMaybes :: forall a b. Maybe a -> Maybe b -> Maybe (Tuple a b) + tupleMaybes ma mb = (ma # map Tuple) <*> mb diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index d81654b02..9d7f43913 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -17,6 +17,7 @@ module Ctl.Internal.QueryM , QueryRuntime , SubmitTxListenerSet , WebSocket(WebSocket) + , acquireMempoolSnapshot , acquireMempoolSnapshotAff , evaluateTxOgmios , getChainTip @@ -28,14 +29,18 @@ module Ctl.Internal.QueryM , postAeson , mkListenerSet , defaultMessageListener + , mempoolSnapshotHasTx , mempoolSnapshotHasTxAff + , mempoolSnapshotNextTx , mempoolSnapshotNextTxAff + , mempoolSnapshotSizeAndCapacity , mempoolSnapshotSizeAndCapacityAff , mkOgmiosRequest , mkOgmiosRequestAff , mkOgmiosWebSocketAff , mkRequest , mkRequestAff + , releaseMempool , releaseMempoolAff , scriptToAeson , submitTxOgmios @@ -391,6 +396,50 @@ mempoolSnapshotNextTxAff ogmiosWs logger ms = _.mempoolNextTx unit +acquireMempoolSnapshot + :: QueryM Ogmios.MempoolSnapshotAcquired +acquireMempoolSnapshot = + mkOgmiosRequest + Ogmios.acquireMempoolSnapshotCall + _.acquireMempool + unit + +mempoolSnapshotHasTx + :: Ogmios.MempoolSnapshotAcquired + -> TxHash + -> QueryM Boolean +mempoolSnapshotHasTx ms = + mkOgmiosRequest + (Ogmios.mempoolSnapshotHasTxCall ms) + _.mempoolHasTx + +mempoolSnapshotSizeAndCapacity + :: Ogmios.MempoolSnapshotAcquired + -> QueryM Ogmios.MempoolSizeAndCapacity +mempoolSnapshotSizeAndCapacity ms = + mkOgmiosRequest + (Ogmios.mempoolSnpashotSizeAndCapacityCall ms) + _.mempoolSizeAndCapcity + unit + +releaseMempool + :: Ogmios.MempoolSnapshotAcquired + -> QueryM Ogmios.MempoolReleased +releaseMempool ms = + mkOgmiosRequest + (Ogmios.releaseMempoolCall ms) + _.releaseMempool + unit + +mempoolSnapshotNextTx + :: Ogmios.MempoolSnapshotAcquired + -> QueryM (Maybe Ogmios.MempoolTransaction) +mempoolSnapshotNextTx ms = + mkOgmiosRequest + (Ogmios.mempoolSnapshotNextTxCall ms) + _.mempoolNextTx + unit + -------------------------------------------------------------------------------- -- Affjax -------------------------------------------------------------------------------- diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 3233e54e8..b743f73ed 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -537,6 +537,7 @@ newtype OgmiosWitnessSet = OgmiosWitnessSet } derive instance Generic OgmiosWitnessSet _ +derive instance Newtype OgmiosWitnessSet _ instance Show OgmiosWitnessSet where show = genericShow @@ -579,6 +580,7 @@ newtype OgmiosRedeemer = OgmiosRedeemer { redeemer :: String, executionUnits :: ExUnits } derive instance Generic OgmiosRedeemer _ +derive instance Newtype OgmiosRedeemer _ instance Show OgmiosRedeemer where show = genericShow @@ -600,6 +602,7 @@ newtype OgmiosBootstrapWitness = OgmiosBootstrapWitness } derive instance Generic OgmiosBootstrapWitness _ +derive instance Newtype OgmiosBootstrapWitness _ instance Show OgmiosBootstrapWitness where show = genericShow @@ -704,6 +707,7 @@ type DigestBlake2BCredential = String newtype Rewards = Rewards (Map String LovelaceDelta) derive instance Generic Rewards _ +derive instance Newtype Rewards _ instance Show Rewards where show = genericShow @@ -737,6 +741,7 @@ instance DecodeAeson RewardPot where newtype OgmiosWithdrawls = OgmiosWithdrawls (Map OgmiosRewardAddress Coin) derive instance Generic OgmiosWithdrawls _ +derive instance Newtype OgmiosWithdrawls _ instance Show OgmiosWithdrawls where show = genericShow @@ -763,6 +768,7 @@ newtype OgmiosAuxiliaryData = OgmiosAuxiliaryData } derive instance Generic OgmiosAuxiliaryData _ +derive instance Newtype OgmiosAuxiliaryData _ instance Show OgmiosAuxiliaryData where show = genericShow @@ -850,6 +856,7 @@ newtype Update = Update } derive instance Generic Update _ +derive instance Newtype Update _ instance Show Update where show = genericShow @@ -862,6 +869,7 @@ instance DecodeAeson Update where newtype Proposal = Proposal (Map String OgmiosProtocolParameters) derive instance Generic Proposal _ +derive instance Newtype Proposal _ instance Show Proposal where show = genericShow @@ -888,6 +896,7 @@ newtype ProtocolVersion = ProtocolVersion } derive instance Generic ProtocolVersion _ +derive instance Newtype ProtocolVersion _ instance Show ProtocolVersion where show = genericShow From b54ff43fa6348fda1b0f1ea744fe185db3174674 Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Tue, 4 Apr 2023 17:24:27 -0400 Subject: [PATCH 135/478] Change types for Genesis Keys --- src/Internal/QueryM/Ogmios.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index b743f73ed..9523782fa 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -664,8 +664,8 @@ type PoolRetirement = } type GenesisDelegation = - { delegateKeyHash :: VRFKeyHash - , verificationKeyHash :: VRFKeyHash + { delegateKeyHash :: VerificationKey + , verificationKeyHash :: VerificationKey , vrfVerificationKeyHash :: VRFKeyHash } @@ -689,8 +689,8 @@ parsePoolRetirement = aesonObject $ \o -> do parseGenesisDelegation :: Aeson -> Either JsonDecodeError GenesisDelegation parseGenesisDelegation = aesonObject $ \o -> do - delegateKeyHash <- decodeVRFKeyHash =<< o .: "delegateKeyHash" - verificationKeyHash <- decodeVRFKeyHash =<< o .: "verificationKeyHash" + delegateKeyHash <- o .: "delegateKeyHash" + verificationKeyHash <- o .: "verificationKeyHash" vrfVerificationKeyHash <- decodeVRFKeyHash =<< o .: "vrfVerificationKeyHash" pure { delegateKeyHash, verificationKeyHash, vrfVerificationKeyHash } From 3d8533708363e12eba248c27109b74b71ca03b14 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 5 Apr 2023 13:32:52 +0300 Subject: [PATCH 136/478] Add demo video for Blockfrost backend --- doc/video-intro.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/video-intro.md b/doc/video-intro.md index 9259d13dc..395b1d6ba 100644 --- a/doc/video-intro.md +++ b/doc/video-intro.md @@ -16,3 +16,7 @@ Timecodes: - 00:55:50 - how plutip test suite machinery manages local clusters - 01:06:50 - Babbage features (explaining) - 01:16:03 - Running E2E tests for Babbage features with Gero wallet + +# Blockfrost backend demo + +Here is [another video](https://drive.google.com/file/d/1cU7vsHlq0-rdybMn2_doBd8XDWA_MHwO/view?usp=share_link) with a walkthrough for CTL with [Blockfrost backend](./blockfrost.md) setup. From 83ea36ab35dd8145ad68c21cbca940ce2d59d9dd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 5 Apr 2023 15:02:27 +0300 Subject: [PATCH 137/478] Add an overview video for Blockfrost backend --- doc/video-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/video-intro.md b/doc/video-intro.md index 395b1d6ba..b78665d91 100644 --- a/doc/video-intro.md +++ b/doc/video-intro.md @@ -19,4 +19,4 @@ Timecodes: # Blockfrost backend demo -Here is [another video](https://drive.google.com/file/d/1cU7vsHlq0-rdybMn2_doBd8XDWA_MHwO/view?usp=share_link) with a walkthrough for CTL with [Blockfrost backend](./blockfrost.md) setup. +Here is [another video](https://drive.google.com/file/d/1cU7vsHlq0-rdybMn2_doBd8XDWA_MHwO/view?usp=share_link) with a walkthrough for CTL with [Blockfrost backend](./blockfrost.md) setup. A [presentation video](https://drive.google.com/file/d/1p-WT8L3x3iKYtNPjujo1JgmZZQ403GNS/view?usp=share_link) is also available - it gives a quick overview in under 5 minutes. From e9c0c808660241a9100088a91f3fc456a91fafcd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 5 Apr 2023 16:24:11 +0400 Subject: [PATCH 138/478] Add preprod wallets to ByUrl example, update Lace E2E automation (WIP) --- Makefile | 5 ++++ examples/ByUrl.purs | 39 ++++++++++++++++++++++++++++++ src/Internal/Test/E2E/Wallets.purs | 19 +++++++++++---- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 7411277c7..c0d17da31 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ js-sources := $(shell fd --no-ignore-parent -ejs) ps-entrypoint := Ctl.Examples.ByUrl # points to one of the example PureScript modules in examples/ ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') +preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') run-dev: @${ps-bundle} && BROWSER_RUNTIME=1 webpack-dev-server --progress @@ -50,6 +51,10 @@ query-preview-testnet-tip: CARDANO_NODE_SOCKET_PATH=${preview-node-ipc}/node.socket cardano-cli query tip \ --testnet-magic 2 +query-preprod-testnet-tip: + CARDANO_NODE_SOCKET_PATH=${preprod-node-ipc}/node.socket cardano-cli query tip \ + --testnet-magic 1 + run-ci-actions: nix build -L .#checks.x86_64-linux.formatting-check nix build -L .#checks.x86_64-linux.template-deps-json diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index bfce2834d..e8d06bbdd 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -13,6 +13,7 @@ import Contract.Config , ConnectToNuFi , ConnectToLace ) + , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig , mainnetFlintConfig , mainnetGeroConfig @@ -104,6 +105,34 @@ main = do /\ (mkBlockfrostPreviewConfig mbApiKey) { walletSpec = Just ConnectToLace } /\ Nothing + , "blockfrost-nami-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToNami } + /\ Nothing + , "blockfrost-gero-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToGero } + /\ Nothing + , "blockfrost-eternl-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToEternl } + /\ Nothing + , "blockfrost-lode-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToLode } + /\ Nothing + , "blockfrost-flint-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToFlint } + /\ Nothing + , "blockfrost-nufi-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToNuFi } + /\ Nothing + , "blockfrost-lace-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToLace } + /\ Nothing ] addLinks walletsWithBlockfrost examples route walletsWithBlockfrost examples @@ -150,6 +179,16 @@ mkBlockfrostPreviewConfig apiKey = } } +mkBlockfrostPreprodConfig :: Maybe String -> ContractParams +mkBlockfrostPreprodConfig apiKey = + testnetConfig + { backendParams = mkBlockfrostBackendParams + { blockfrostConfig: blockfrostPublicPreprodServerConfig + , blockfrostApiKey: apiKey + , confirmTxDelay: Just (Seconds 30.0) + } + } + examples :: Map E2ETestName (Contract Unit) examples = Map.fromFoldable [ "AlwaysMints" /\ AlwaysMints.contract diff --git a/src/Internal/Test/E2E/Wallets.purs b/src/Internal/Test/E2E/Wallets.purs index 7ee2c3296..c7e91d463 100644 --- a/src/Internal/Test/E2E/Wallets.purs +++ b/src/Internal/Test/E2E/Wallets.purs @@ -231,27 +231,36 @@ laceConfirmAccess extId re = do void $ Toppokki.pageWaitForSelector (wrap $ "button") {} page + delaySec 1.0 void $ doJQ (buttonWithText "Authorize") click page delaySec 0.1 void $ doJQ (buttonWithText "Always") click page when wasInPage do waitForWalletPageClose pattern 10.0 re.browser + -- Toppokki.newPage re.browser >>= + -- Toppokki.goto (wrap $ "chrome-extension://" <> unExtensionId extId <> "/app.html#/assets") where pattern :: Pattern - pattern = wrap $ unExtensionId extId <> "/dappConnector.html#/dapp/connect" + pattern = wrap $ unExtensionId extId <> "/dappConnector.html" -- Not implemented yet laceSign :: ExtensionId -> WalletPassword -> RunningE2ETest -> Aff Unit -laceSign extId _password re = do - void $ liftEffect $ throw "Lace support is not implemented" +laceSign extId password re = do inWalletPage pattern re signTimeout \page -> do void $ Toppokki.pageWaitForSelector (wrap $ "button") {} page - void $ doJQ (buttonWithText "Confirm") click page + delaySec 0.1 + clickButton "Confirm" page + delaySec 0.1 + typeInto (inputType "password") password page + delaySec 0.1 + clickButton "Confirm" page + delaySec 1.0 + clickButton "Close" page -- TODO: continue from here where - pattern = Pattern $ unExtensionId extId <> "/index.html?#/swap?tx=" + pattern = Pattern $ unExtensionId extId <> "/dappConnector.html#/dapp/sign-tx" -- Not implemented yet flintConfirmAccess :: ExtensionId -> RunningE2ETest -> Aff Unit From e9db33feca3627c044c21f530e240a1d94057dcd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 5 Apr 2023 19:42:55 +0300 Subject: [PATCH 139/478] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e27a68d63..496a39499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,7 +93,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Test.Assert`: handle exceptions coming from callbacks that calculate expected values (in `checkLovelaceDeltaAtAddress`, `checkTokenDeltaAtAddress`, `checkLovelaceDeltaInWallet` and `checkTokenDeltaInWallet`), propagate original error messages correctly ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Fixed collateral selection - sort the UTxOs by ADA value in descending order, before selecting them for collateral, to ensure that if a combination that satisfies the requirements is possible, it will be selected. The bug affected CIP-30 wallets. ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Output correct reward address in CIP-30 mock ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) -- Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs +- Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ([#1470](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1470)) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) ### Removed From 4e15bbce5241e6eba71777d5e743ed8ab3667b38 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 6 Apr 2023 12:55:01 +0400 Subject: [PATCH 140/478] Add a script for key generation - useful for wallet testing on other networks --- doc/blockfrost.md | 4 ++-- scripts/generate-keys.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100755 scripts/generate-keys.sh diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 781fe9a5c..8239f4fa1 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -47,9 +47,9 @@ Go to https://blockfrost.io to generate a new API key and specify it as `BLOCKFR ### Generating private keys -Follow https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ to generate a private payment key (and, optionally, a stake key). +Follow https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ to generate a private payment key (and, optionally, a stake key). You can use [this script](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/scripts/generate-keys.sh) for convenience instead of following instructions in this section manually. -It should look like this: +The generated keys should look like this: ```json { diff --git a/scripts/generate-keys.sh b/scripts/generate-keys.sh new file mode 100755 index 000000000..d5e5b0259 --- /dev/null +++ b/scripts/generate-keys.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +# This script can be used to generate two private keys and print the address. +# It is based on this guide: +# https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ + +if [[ -e payment.skey ]]; then echo 'payment.skey already exists!'; exit 1; fi +if [[ -e stake.skey ]]; then echo 'stake.skey already exists!'; exit 1; fi + +# Generate a payment key +cardano-cli address key-gen \ + --verification-key-file payment.vkey \ + --signing-key-file payment.skey + +# Generate a stake key +cardano-cli stake-address key-gen \ + --verification-key-file stake.vkey \ + --signing-key-file stake.skey + +# Build an address +cardano-cli address build \ + --payment-verification-key-file payment.vkey \ + --stake-verification-key-file stake.vkey \ + --out-file payment.addr \ + --testnet-magic 1 # preview network, use 2 for preprod or `--mainnet` for mainnet + +# Print info +echo "Created: payment.skey, payment.vkey, stake.skey, stake.vkey" +echo "Your address:" +cat payment.addr +echo +echo "Open https://docs.cardano.org/cardano-testnet/tools/faucet/ to fund it" From 12d0e1c8034bb0058658b7b91bf9dcbfc41f412d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 6 Apr 2023 13:14:00 +0400 Subject: [PATCH 141/478] Throw early in E2E automation for Lace (WIP) --- src/Internal/Test/E2E/Wallets.purs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Internal/Test/E2E/Wallets.purs b/src/Internal/Test/E2E/Wallets.purs index c7e91d463..1d036819e 100644 --- a/src/Internal/Test/E2E/Wallets.purs +++ b/src/Internal/Test/E2E/Wallets.purs @@ -225,6 +225,7 @@ geroSign extId password re = laceConfirmAccess :: ExtensionId -> RunningE2ETest -> Aff Unit laceConfirmAccess extId re = do + void $ liftEffect $ throw "Lace support is not implemented" wasInPage <- isJust <$> inWalletPageOptional extId pattern re confirmAccessTimeout \page -> do @@ -237,6 +238,10 @@ laceConfirmAccess extId re = do void $ doJQ (buttonWithText "Always") click page when wasInPage do waitForWalletPageClose pattern 10.0 re.browser + -- Trigger wallet page opening. + -- Lace has a glitch that prevents CIP-30 API promises from resolving until + -- the wallet is interacted with at least once after browser startup. + -- https://discord.com/channels/826816523368005654/1050085066056925195/1091336339250749511 -- Toppokki.newPage re.browser >>= -- Toppokki.goto (wrap $ "chrome-extension://" <> unExtensionId extId <> "/app.html#/assets") where @@ -246,6 +251,7 @@ laceConfirmAccess extId re = do -- Not implemented yet laceSign :: ExtensionId -> WalletPassword -> RunningE2ETest -> Aff Unit laceSign extId password re = do + void $ liftEffect $ throw "Lace support is not implemented" inWalletPage pattern re signTimeout \page -> do void $ Toppokki.pageWaitForSelector (wrap $ "button") {} From 767a43cdc298d3cc5e9258ebf88c51d645fa6877 Mon Sep 17 00:00:00 2001 From: Emily Martins Date: Wed, 5 Apr 2023 16:01:53 +0200 Subject: [PATCH 142/478] add FromBytes for Vkeywitness and Vkeywitnesses --- src/Internal/Deserialization/FromBytes.purs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Internal/Deserialization/FromBytes.purs b/src/Internal/Deserialization/FromBytes.purs index 64619dbfb..5406e8d56 100644 --- a/src/Internal/Deserialization/FromBytes.purs +++ b/src/Internal/Deserialization/FromBytes.purs @@ -38,6 +38,8 @@ import Ctl.Internal.Serialization.Types , TransactionUnspentOutput , TransactionWitnessSet , Value + , Vkeywitness + , Vkeywitnesses ) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) @@ -133,6 +135,12 @@ instance FromBytes Value where instance FromBytes VRFKeyHash where fromBytes' = fromBytesImpl "VRFKeyHash" +instance FromBytes Vkeywitness where + fromBytes' = fromBytesImpl "Vkeywitness" + +instance FromBytes Vkeywitnesses where + fromBytes' = fromBytesImpl "Vkeywitnesses" + -- for backward compatibility until `Maybe` is abandoned. Then to be renamed. fromBytes :: forall (a :: Type). FromBytes a => CborBytes -> Maybe a fromBytes = unwrap >>> fromBytes' >>> hush From 6aca8163a4d08ed6fe43976bf872e9d9640ac5e1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 6 Apr 2023 18:02:45 +0400 Subject: [PATCH 143/478] Move wallet-related stuff around, add Lace stuff to public API re-exports --- CHANGELOG.md | 2 + examples/AlwaysSucceeds.purs | 7 +- examples/BalanceTxConstraints.purs | 13 +- examples/ContractTestUtils.purs | 12 +- examples/DropTokens.purs | 2 +- examples/Lose7Ada.purs | 3 +- examples/NativeScriptMints.purs | 12 +- examples/PaysWithDatum.purs | 12 +- examples/Pkh2Pkh.purs | 6 +- examples/PlutusV2/ReferenceInputs.purs | 11 +- .../PlutusV2/ReferenceInputsAndScripts.purs | 12 +- examples/PlutusV2/ReferenceScripts.purs | 7 +- examples/SendsToken.purs | 6 +- examples/SignMultiple.purs | 15 +- examples/TxChaining.purs | 5 +- examples/Utxos.purs | 8 +- examples/Wallet.purs | 8 +- src/Contract/Address.purs | 138 +---------- src/Contract/Test/Assert.purs | 4 +- src/Contract/Utxos.purs | 65 +----- src/Contract/Wallet.purs | 220 ++++++++++++++++-- src/Internal/Contract/Wallet.purs | 7 +- src/Internal/Test/KeyDir.purs | 14 +- src/Internal/Test/UtxoDistribution.purs | 17 +- src/Internal/Types/PaymentPubKey.purs | 36 +++ src/Internal/Types/ScriptLookups.purs | 2 +- src/Internal/Types/UnbalancedTransaction.purs | 55 ----- src/Internal/Wallet/KeyFile.purs | 4 + templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/src/Scaffold.purs | 4 +- .../GenerateFixtures/NativeScript.purs | 3 +- .../GenerateFixtures/ScriptInfo.purs | 3 +- test/Deserialization.purs | 2 +- test/Plutip/Contract.purs | 87 +++---- test/Plutip/Contract/Assert.purs | 23 +- test/Plutip/Staking.purs | 36 +-- test/Plutip/UtxoDistribution.purs | 15 +- test/Utils/DrainWallets.purs | 10 +- 38 files changed, 458 insertions(+), 430 deletions(-) create mode 100644 src/Internal/Types/PaymentPubKey.purs delete mode 100644 src/Internal/Types/UnbalancedTransaction.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d02de241..c650fc898 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `UnattachedUnbalancedTx` has been renamed and moved to `Contract.UnbalancedTx.UnbalancedTx`, the old `UnbalancedTx` type has been removed as not needed. `mkUnbalancedTx` function has been moved to `Contract.UnbalancedTx` ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Default NodeJS stable version is now v18 ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - Do not require light wallet collateral for all interactions ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) +- Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) +- `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) ### Fixed diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index 1f3d7d405..a0e137e11 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -13,7 +13,7 @@ module Ctl.Examples.AlwaysSucceeds import Contract.Prelude -import Contract.Address (ownStakePubKeysHashes, scriptHashAddress) +import Contract.Address (scriptHashAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') @@ -33,6 +33,7 @@ import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value +import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) import Data.BigInt as BigInt @@ -60,7 +61,7 @@ example cfg = launchAff_ do payToAlwaysSucceeds :: ValidatorHash -> Contract TransactionHash payToAlwaysSucceeds vhash = do -- Send to own stake credential. This is used to test mustPayToScriptAddress. - mbStakeKeyHash <- join <<< head <$> ownStakePubKeysHashes + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let constraints :: TxConstraints Unit Unit constraints = @@ -90,7 +91,7 @@ spendFromAlwaysSucceeds -> Contract Unit spendFromAlwaysSucceeds vhash validator txId = do -- Use own stake credential if available - mbStakeKeyHash <- join <<< head <$> ownStakePubKeysHashes + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let scriptAddress = scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 3346d92fa..e8532c83b 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -7,8 +7,6 @@ import Contract.Prelude import Contract.Address ( Address - , getWalletAddressesWithNetworkTag - , ownPaymentPubKeysHashes ) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder @@ -41,7 +39,12 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) import Contract.Value (singleton, valueOf) as Value -import Contract.Wallet (KeyWallet, withKeyWallet) +import Contract.Wallet + ( KeyWallet + , getWalletAddressesWithNetworkTag + , ownPaymentPubKeyHashes + , withKeyWallet + ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers @@ -117,12 +120,12 @@ contract (ContractParams p) = do logInfo' "Examples.BalanceTxConstraints" alicePubKeyHash <- - liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes bobPubKeyHash <- liftedM "Failed to get Bob's PKH" $ head - <$> (withKeyWallet p.bobKeyWallet ownPaymentPubKeysHashes) + <$> (withKeyWallet p.bobKeyWallet ownPaymentPubKeyHashes) bobAddress <- liftedM "Failed to get Bob's address" diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 4f46965a9..4b514e2df 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -16,9 +16,6 @@ import Contract.Address , PaymentPubKeyHash , StakePubKeyHash , getNetworkId - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes , payPubKeyHashBaseAddress , payPubKeyHashEnterpriseAddress ) @@ -60,6 +57,11 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) import Contract.Value (lovelaceValueOf, singleton) as Value +import Contract.Wallet + ( getWalletAddresses + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) import Data.BigInt (BigInt) @@ -128,8 +130,8 @@ mkChecks p = do mkContract :: ContractParams -> Contract ContractResult mkContract p = do logInfo' "Running Examples.ContractTestUtils" - ownPkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes - ownSkh <- join <<< head <$> ownStakePubKeysHashes + ownPkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes + ownSkh <- join <<< head <$> ownStakePubKeyHashes let mustPayToPubKeyStakeAddressWithDatumAndScriptRef = ownSkh # maybe Constraints.mustPayToPubKeyWithDatumAndScriptRef diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs index c1fcb6d9b..4cdaf29c3 100644 --- a/examples/DropTokens.purs +++ b/examples/DropTokens.purs @@ -11,7 +11,6 @@ import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.TxConstraints as Helpers -import Contract.Utxos (getWalletBalance) import Contract.Value ( coinToValue , flattenNonAdaAssets @@ -19,6 +18,7 @@ import Contract.Value , singleton , valueToCoin ) +import Contract.Wallet (getWalletBalance) import Data.Array as Array import Test.Ctl.Fixtures (nullPaymentPubKeyHash) diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index f705f0a78..b2e959125 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -32,8 +32,9 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints -import Contract.Utxos (getWalletBalance, utxosAt) +import Contract.Utxos (utxosAt) import Contract.Value as Value +import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) import Data.BigInt as BigInt import Data.Foldable (fold) diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index 8bbe3be46..b193756ed 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -6,8 +6,6 @@ import Contract.Prelude import Contract.Address ( PaymentPubKeyHash - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes ) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') @@ -21,6 +19,10 @@ import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value (CurrencySymbol, TokenName) import Contract.Value as Value +import Contract.Wallet + ( ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName @@ -37,7 +39,7 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.NativeScriptMints" - pkh <- liftedM "Couldn't get own pkh" $ head <$> ownPaymentPubKeysHashes + pkh <- liftedM "Couldn't get own pkh" $ head <$> ownPaymentPubKeyHashes mp /\ cs <- Helpers.mkCurrencySymbol <<< pure $ pkhPolicy pkh tn <- Helpers.mkTokenName "NSToken" @@ -61,8 +63,8 @@ contract = do toSelfContract :: CurrencySymbol -> TokenName -> BigInt -> Contract Unit toSelfContract cs tn amount = do - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes - skh <- join <<< head <$> ownStakePubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes + skh <- join <<< head <$> ownStakePubKeyHashes let constraints :: Constraints.TxConstraints Void Void diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index a254da3ac..460c54124 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -10,9 +10,6 @@ import Contract.Prelude import Contract.Address ( Address - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes ) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Hashing (datumHash) @@ -44,6 +41,11 @@ import Contract.TxConstraints (DatumPresence(DatumInline, DatumWitness)) import Contract.TxConstraints as Constraints import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet + ( getWalletAddresses + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddressWithDatum) import Data.Array (head) @@ -66,8 +68,8 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.PaysWithDatum" - pkh <- liftedM "Could not get own PKH" (head <$> ownPaymentPubKeysHashes) - skh <- join <<< head <$> ownStakePubKeysHashes + pkh <- liftedM "Could not get own PKH" (head <$> ownPaymentPubKeyHashes) + skh <- join <<< head <$> ownStakePubKeyHashes address <- liftedM "Could not get own address" (head <$> getWalletAddresses) let diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 81f8e3ef4..8a5d0d7a9 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -5,7 +5,6 @@ module Ctl.Examples.Pkh2Pkh (main, contract, example) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -16,6 +15,7 @@ import Contract.Transaction ) import Contract.TxConstraints as Constraints import Contract.Value as Value +import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Data.Array (head) import Data.BigInt as BigInt @@ -25,9 +25,9 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.Pkh2Pkh" - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- liftedM "Failed to get own SKH" $ join <<< head <$> - ownStakePubKeysHashes + ownStakePubKeyHashes let constraints :: Constraints.TxConstraints Void Void diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 2de3abc72..a28900dc8 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -2,7 +2,6 @@ module Ctl.Examples.PlutusV2.ReferenceInputs (contract, example, main) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -33,7 +32,11 @@ import Contract.Transaction ) import Contract.TxConstraints as Constraints import Contract.Value (lovelaceValueOf) as Value -import Contract.Wallet (getWalletUtxos) +import Contract.Wallet + ( getWalletUtxos + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) as Array @@ -53,8 +56,8 @@ contract = do logInfo' "Running Examples.PlutusV2.ReferenceInputs" pkh <- liftedM "Failed to get own PKH" - (Array.head <$> ownPaymentPubKeysHashes) - skh <- join <<< Array.head <$> ownStakePubKeysHashes + (Array.head <$> ownPaymentPubKeyHashes) + skh <- join <<< Array.head <$> ownStakePubKeyHashes utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos oref <- diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 833d2d291..00a4a2c8c 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -10,9 +10,6 @@ import Contract.Prelude import Contract.Address ( PaymentPubKeyHash , StakePubKeyHash - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes , scriptHashAddress ) import Contract.Config (ContractParams, testnetNamiConfig) @@ -53,6 +50,11 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (TokenName, Value) import Contract.Value as Value +import Contract.Wallet + ( getWalletAddresses + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Ctl.Examples.Helpers (mkTokenName) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints ( alwaysMintsPolicyScriptV2 @@ -96,8 +98,8 @@ contract = do payToAlwaysSucceedsAndCreateScriptRefOutput :: ValidatorHash -> ScriptRef -> ScriptRef -> Contract TransactionHash payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef = do - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes - skh <- join <<< head <$> ownStakePubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes + skh <- join <<< head <$> ownStakePubKeyHashes let value :: Value value = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index eae1f8278..cb1641f82 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -6,7 +6,7 @@ module Ctl.Examples.PlutusV2.ReferenceScripts import Contract.Prelude -import Contract.Address (ownStakePubKeysHashes, scriptHashAddress) +import Contract.Address (scriptHashAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') @@ -30,6 +30,7 @@ import Contract.TxConstraints import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet (ownStakePubKeyHashes) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) import Data.BigInt (fromInt) as BigInt @@ -64,7 +65,7 @@ payWithScriptRefToAlwaysSucceeds payWithScriptRefToAlwaysSucceeds vhash scriptRef = do -- Send to own stake credential. This is used to test -- `mustPayToScriptAddressWithScriptRef` - mbStakeKeyHash <- join <<< head <$> ownStakePubKeysHashes + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let constraints :: TxConstraints Unit Unit constraints = @@ -91,7 +92,7 @@ spendFromAlwaysSucceeds :: ValidatorHash -> TransactionHash -> Contract Unit spendFromAlwaysSucceeds vhash txId = do -- Send to own stake credential. This is used to test -- `mustPayToScriptAddressWithScriptRef` - mbStakeKeyHash <- join <<< head <$> ownStakePubKeysHashes + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let scriptAddress = scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index cc213902f..45917da69 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -6,7 +6,6 @@ module Ctl.Examples.SendsToken (main, example, contract) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -20,6 +19,7 @@ import Contract.Transaction import Contract.TxConstraints as Constraints import Contract.Value (Value) import Contract.Value as Value +import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers ( mkCurrencySymbol @@ -59,8 +59,8 @@ mintToken = do sendToken :: Contract TransactionHash sendToken = do - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes - skh <- join <<< head <$> ownStakePubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes + skh <- join <<< head <$> ownStakePubKeyHashes _ /\ value <- tokenValue let constraints :: Constraints.TxConstraints Void Void diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 7a8efbc8a..bfa102b3c 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -5,7 +5,6 @@ module Ctl.Examples.SignMultiple (example, contract, main) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo', logWarn') import Contract.Monad @@ -28,9 +27,13 @@ import Contract.Transaction , withBalancedTxs ) import Contract.TxConstraints as Constraints -import Contract.Utxos (getWalletUtxos) import Contract.Value (leq) import Contract.Value as Value +import Contract.Wallet + ( getWalletUtxos + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) import Control.Monad.Reader (asks) import Data.Array (head) import Data.BigInt as BigInt @@ -51,9 +54,9 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.SignMultiple" - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- liftedM "Failed to get own SKH" $ join <<< head <$> - ownStakePubKeysHashes + ownStakePubKeyHashes -- Early fail if not enough utxos present for 2 transactions unlessM hasSufficientUtxos do @@ -114,9 +117,9 @@ contract = do createAdditionalUtxos :: Contract Unit createAdditionalUtxos = do logInfo' "Creating additional UTxOs for SignMultiple example" - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- liftedM "Failed to get own SKH" $ join <<< head <$> - ownStakePubKeysHashes + ownStakePubKeyHashes let constraints :: Constraints.TxConstraints Void Void diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index dfb68f9d2..14048ddbc 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -10,7 +10,6 @@ module Ctl.Examples.TxChaining import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos @@ -31,6 +30,7 @@ import Contract.Transaction import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value +import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) import Data.BigInt as BigInt @@ -43,7 +43,7 @@ example cfg = launchAff_ do contract :: Contract Unit contract = do - pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeysHashes + pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeyHashes let constraints :: TxConstraints Unit Unit constraints = @@ -79,4 +79,3 @@ contract = do awaitTxConfirmed txId0 awaitTxConfirmed txId1 - diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 6644d0c1d..94143c98a 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -5,8 +5,6 @@ import Contract.Prelude import Contract.Address ( PaymentPubKeyHash , StakePubKeyHash - , ownPaymentPubKeyHash - , ownStakePubKeyHash ) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo, logInfo') @@ -29,7 +27,11 @@ import Contract.TxConstraints (DatumPresence(DatumInline, DatumWitness)) import Contract.TxConstraints as Constraints import Contract.Value (Value) import Contract.Value (lovelaceValueOf, singleton) as Value -import Contract.Wallet (getWalletUtxos) +import Contract.Wallet + ( getWalletUtxos + , ownPaymentPubKeyHash + , ownStakePubKeyHash + ) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array diff --git a/examples/Wallet.purs b/examples/Wallet.purs index 18e7a072d..fa1e95beb 100644 --- a/examples/Wallet.purs +++ b/examples/Wallet.purs @@ -2,10 +2,14 @@ module Ctl.Examples.Wallet (example, contract) where import Contract.Prelude -import Contract.Address (getWalletAddresses, getWalletCollateral) import Contract.Config (ContractParams) import Contract.Monad (Contract, launchAff_, runContract) -import Contract.Utxos (getWalletBalance, getWalletUtxos) +import Contract.Wallet + ( getWalletAddresses + , getWalletBalance + , getWalletCollateral + , getWalletUtxos + ) contract :: Contract Unit contract = do diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index c8e53cece..c07f022db 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -1,4 +1,4 @@ --- | A module for Address-related functionality and querying own wallet. +-- | A module for Address-related functionality. module Contract.Address ( addressPaymentValidatorHash , addressStakeValidatorHash @@ -7,22 +7,8 @@ module Contract.Address , addressWithNetworkTagToBech32 , addressFromBech32 , addressToBech32 - , getWalletAddress - , getWalletAddresses - , getWalletAddressWithNetworkTag - , getWalletAddressesWithNetworkTag - , getWalletCollateral - , module ByteArray - , module ExportAddress - , module ExportPubKeyHash - , module ExportUnbalancedTransaction - , module Hash - , module SerializationAddress + , module X , module TypeAliases - , ownPaymentPubKeyHash - , ownPaymentPubKeysHashes - , ownStakePubKeyHash - , ownStakePubKeysHashes , payPubKeyHashBaseAddress , payPubKeyHashEnterpriseAddress , payPubKeyHashRewardAddress @@ -38,28 +24,17 @@ module Contract.Address import Prelude -import Contract.Log (logTrace') -import Contract.Monad (Contract, liftContractM, liftedM) -import Contract.Prelude (liftM) +import Contract.Monad (Contract, liftContractM) import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Class (asks) import Ctl.Internal.Address ( addressPaymentValidatorHash , addressStakeValidatorHash ) as Address -import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) -import Ctl.Internal.Contract.Wallet - ( getWalletAddresses - , getWalletCollateral - , ownPaymentPubKeyHashes - , ownStakePubKeysHashes - ) as Contract import Ctl.Internal.Plutus.Conversion ( fromPlutusAddress , fromPlutusAddressWithNetworkTag , toPlutusAddress - , toPlutusAddressWithNetworkTag - , toPlutusTxUnspentOutput ) import Ctl.Internal.Plutus.Types.Address ( Address @@ -73,10 +48,7 @@ import Ctl.Internal.Plutus.Types.Address , toPubKeyHash , toStakingCredential , toValidatorHash - ) as ExportAddress -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) + ) as X import Ctl.Internal.Scripts ( typedValidatorBaseAddress , typedValidatorEnterpriseAddress @@ -91,17 +63,17 @@ import Ctl.Internal.Serialization.Address , Pointer , Slot(Slot) , TransactionIndex(TransactionIndex) - ) as SerializationAddress + ) as X import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId) , addressBech32 , addressNetworkId ) import Ctl.Internal.Serialization.Address (addressFromBech32) as SA -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as Hash +import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as X import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.Aliases (Bech32String) as TypeAliases -import Ctl.Internal.Types.ByteArray (ByteArray) as ByteArray +import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey(PaymentPubKey)) as X import Ctl.Internal.Types.PubKeyHash ( PaymentPubKeyHash , PubKeyHash @@ -111,7 +83,7 @@ import Ctl.Internal.Types.PubKeyHash ( PaymentPubKeyHash(PaymentPubKeyHash) , PubKeyHash(PubKeyHash) , StakePubKeyHash(StakePubKeyHash) - ) as ExportPubKeyHash + ) as X import Ctl.Internal.Types.PubKeyHash ( payPubKeyHashBaseAddress , payPubKeyHashEnterpriseAddress @@ -123,102 +95,8 @@ import Ctl.Internal.Types.PubKeyHash ) as PubKeyHash import Ctl.Internal.Types.Scripts (StakeValidatorHash, ValidatorHash) import Ctl.Internal.Types.TypedValidator (TypedValidator) -import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey(PaymentPubKey)) as ExportUnbalancedTransaction -import Data.Array (head) import Data.Maybe (Maybe) -import Data.Traversable (for, traverse) import Effect.Exception (error) -import Prim.TypeError (class Warn, Text) - --- | Get an `Address` of the browser wallet. -getWalletAddress - :: Warn - ( Text - "This function returns only one `Adress` even in case multiple `Adress`es are available. Use `getWalletAdresses` instead" - ) - => Contract (Maybe Address) -getWalletAddress = head <$> getWalletAddresses - --- | Get all the `Address`es of the browser wallet. -getWalletAddresses :: Contract (Array Address) -getWalletAddresses = do - addresses <- Contract.getWalletAddresses - traverse - ( liftM - (error "getWalletAddresses: failed to deserialize `Address`") - <<< toPlutusAddress - ) - addresses - --- | Get an `AddressWithNetworkTag` of the browser wallet. -getWalletAddressWithNetworkTag - :: Warn - ( Text - "This function returns only one `AddressWithNetworkTag` even in case multiple `AddressWithNetworkTag` are available. Use `getWalletAddressesWithNetworkTag` instead" - ) - => Contract (Maybe AddressWithNetworkTag) -getWalletAddressWithNetworkTag = head <$> getWalletAddressesWithNetworkTag - --- | Get all the `AddressWithNetworkTag`s of the browser wallet discarding errors. -getWalletAddressesWithNetworkTag :: Contract (Array AddressWithNetworkTag) -getWalletAddressesWithNetworkTag = do - addresses <- Contract.getWalletAddresses - traverse - ( liftM - ( error - "getWalletAddressesWithNetworkTag: failed to deserialize `Address`" - ) - <<< toPlutusAddressWithNetworkTag - ) - addresses - --- | Get the collateral of the browser wallet. This collateral will vary --- | depending on the wallet. --- | E.g. Nami creates a hard-coded 5 Ada collateral. --- | Throws on `Promise` rejection by wallet, returns `Nothing` if no collateral --- | is available. -getWalletCollateral - :: Contract (Maybe (Array TransactionUnspentOutput)) -getWalletCollateral = do - logTrace' "getWalletCollateral" - whenM - ( asks - ( _.synchronizationParams - >>> _.syncBackendWithWallet - >>> _.beforeCip30Methods - ) - ) - syncBackendWithWallet - mtxUnspentOutput <- Contract.getWalletCollateral - for mtxUnspentOutput $ traverse $ - liftedM - "getWalletCollateral: failed to deserialize TransactionUnspentOutput" - <<< pure - <<< toPlutusTxUnspentOutput - --- | Gets a wallet `PaymentPubKeyHash` via `getWalletAddresses`. -ownPaymentPubKeyHash - :: Warn - ( Text - "This function returns only one `PaymentPubKeyHash` even in case multiple `PaymentPubKeysHash`es are available. Use `ownPaymentPubKeysHashes` instead" - ) - => Contract (Maybe PaymentPubKeyHash) -ownPaymentPubKeyHash = head <$> ownPaymentPubKeysHashes - --- | Gets all wallet `PaymentPubKeyHash`es via `getWalletAddresses`. -ownPaymentPubKeysHashes :: Contract (Array PaymentPubKeyHash) -ownPaymentPubKeysHashes = Contract.ownPaymentPubKeyHashes - -ownStakePubKeyHash - :: Warn - ( Text - "This function returns only one `StakePubKeyHash` even in case multiple `StakePubKeysHash`es are available. Use `ownStakePubKeysHashes` instead" - ) - => Contract (Maybe StakePubKeyHash) -ownStakePubKeyHash = join <<< head <$> ownStakePubKeysHashes - -ownStakePubKeysHashes :: Contract (Array (Maybe StakePubKeyHash)) -ownStakePubKeysHashes = Contract.ownStakePubKeysHashes getNetworkId :: Contract NetworkId getNetworkId = asks _.networkId diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 136e37112..3cf104e40 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -75,9 +75,9 @@ import Contract.Transaction , TransactionOutputWithRefScript , getTxMetadata ) -import Contract.Utxos (getWalletBalance, utxosAt) +import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value, valueOf, valueToCoin') -import Contract.Wallet (getWalletUtxos) +import Contract.Wallet (getWalletBalance, getWalletUtxos) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.Error.Class as E import Control.Monad.Reader (ReaderT, ask, local, mapReaderT, runReaderT) diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 6947f1f31..6064192d1 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -3,28 +3,18 @@ -- | a given `Address` is defined. module Contract.Utxos ( getUtxo - , getWalletBalance - , getWalletUtxos , utxosAt , module X ) where import Prelude -import Contract.Address (getWalletCollateral) -import Contract.Log (logTrace', logWarn') +import Contract.Log (logWarn') import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) -import Contract.Value as Value import Control.Monad.Reader.Class (asks) -import Ctl.Internal.BalanceTx.Sync - ( getControlledAddresses - , isCip30Wallet - , syncBackendWithWallet - , withoutSync - ) +import Ctl.Internal.BalanceTx.Sync (getControlledAddresses, isCip30Wallet) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet import Ctl.Internal.Plutus.Conversion ( fromPlutusAddress , toPlutusTxOutput @@ -33,14 +23,9 @@ import Ctl.Internal.Plutus.Conversion import Ctl.Internal.Plutus.Types.Address (class PlutusAddress, getAddress) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X -import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.Foldable (fold, foldr) -import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe) -import Data.Newtype (unwrap) +import Data.Maybe (Maybe) import Data.Set (member) as Set -import Data.Tuple.Nested ((/\)) import Effect.Aff.Class (liftAff) -- | Queries for UTxOs at the given `Address`. @@ -85,47 +70,3 @@ getUtxo oref = do cardanoTxOutput <- liftedE $ liftAff $ queryHandle.getUtxoByOref oref for cardanoTxOutput (liftContractM "getUtxo: failed to convert tx output" <<< toPlutusTxOutput) - -getWalletBalance - :: Contract (Maybe Value) -getWalletBalance = do - logTrace' "getWalletBalance" - whenM - ( asks $ _.synchronizationParams - >>> _.syncBackendWithWallet - >>> _.beforeCip30Methods - ) - syncBackendWithWallet - let - getUtxoValue = unwrap >>> _.output >>> unwrap >>> _.amount - sumValues = foldr (Value.unionWith add) mempty - -- include both spendable UTxOs and collateral - utxos <- getWalletUtxos <#> fromMaybe Map.empty - collateralUtxos <- withoutSync getWalletCollateral <#> fold >>> toUtxoMap - let allUtxos = Map.union utxos collateralUtxos - pure $ pure $ sumValues $ map getUtxoValue $ Map.values allUtxos - where - toUtxoMap = Map.fromFoldable <<< map - (unwrap >>> \({ input, output }) -> input /\ output) - --- | Similar to `utxosAt` called on own address, except that it uses CIP-30 --- | wallet state and not query layer state. --- | The user should not expect these states to be in sync. --- | When active wallet is `KeyWallet`, query layer state is used. --- | This function is expected to be more performant than `utxosAt` when there --- | is a large number of assets. -getWalletUtxos - :: Contract (Maybe UtxoMap) -getWalletUtxos = do - logTrace' "getWalletUtxos" - whenM - ( asks $ - _.synchronizationParams - >>> _.syncBackendWithWallet - >>> _.beforeCip30Methods - ) - syncBackendWithWallet - mCardanoUtxos <- Wallet.getWalletUtxos - for mCardanoUtxos $ - liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< - toPlutusUtxoMap diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 2713746e7..37037d798 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -2,32 +2,70 @@ module Contract.Wallet ( mkKeyWalletFromPrivateKeys , withKeyWallet - , module Contract.Address + , ownStakePubKeyHash + , ownPaymentPubKeyHash + , getWalletBalance + , getWalletUtxos + , getWalletCollateral + , getWalletAddress + , getWalletAddresses + , getWalletAddressWithNetworkTag + , getWalletAddressesWithNetworkTag , module X - , module Deserialization.Keys - , module Wallet - , module Ctl.Internal.Wallet.Key - , module Ctl.Internal.Wallet.KeyFile - , module Ctl.Internal.Wallet.Spec ) where import Prelude -import Contract.Address (getWalletAddress, getWalletCollateral) -import Contract.Monad (Contract) -import Contract.Utxos (getWalletUtxos) as X -import Control.Monad.Reader (local) +import Contract.Address + ( Address + , AddressWithNetworkTag + , PaymentPubKeyHash + , StakePubKeyHash + ) +import Contract.Config (PrivatePaymentKey, PrivateStakeKey) +import Contract.Log (logTrace') +import Contract.Monad (Contract, liftContractM, liftedM) +import Contract.Sync (syncBackendWithWallet, withoutSync) +import Contract.Transaction (TransactionUnspentOutput) +import Contract.Utxos (UtxoMap) +import Contract.Value (Value) +import Contract.Value as Value +import Contract.Wallet.Key (KeyWallet, privateKeysToKeyWallet) +import Control.Monad.Reader (asks, local) import Ctl.Internal.Contract.Wallet ( getChangeAddress , getRewardAddresses , getUnusedAddresses , getWallet + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes , signData ) as X -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) as Deserialization.Keys +import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet +import Ctl.Internal.Contract.Wallet + ( ownPaymentPubKeyHashes + , ownStakePubKeyHashes + ) +import Ctl.Internal.Contract.Wallet as Contract +import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) as X +import Ctl.Internal.Helpers (liftM) +import Ctl.Internal.Plutus.Conversion + ( toPlutusAddress + , toPlutusTxUnspentOutput + , toPlutusUtxoMap + ) +import Ctl.Internal.Plutus.Conversion.Address (toPlutusAddressWithNetworkTag) import Ctl.Internal.Wallet - ( Wallet(Gero, Nami, Flint, Lode, Eternl, KeyWallet) + ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) , WalletExtension + ( NamiWallet + , GeroWallet + , FlintWallet + , EternlWallet + , LodeWallet + , LaceWallet + , NuFiWallet + ) , apiVersion , icon , isEnabled @@ -39,15 +77,15 @@ import Ctl.Internal.Wallet , isWalletAvailable , name , walletToWalletExtension - ) as Wallet -import Ctl.Internal.Wallet (Wallet(KeyWallet)) -import Ctl.Internal.Wallet.Key (KeyWallet, privateKeysToKeyWallet) as Wallet + ) as X +import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet.Key - ( PrivatePaymentKey(PrivatePaymentKey) + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) , privateKeysToKeyWallet - ) -import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) + ) as X +import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) as X import Ctl.Internal.Wallet.Spec ( PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) @@ -57,21 +95,157 @@ import Ctl.Internal.Wallet.Spec , ConnectToGero , ConnectToFlint , ConnectToLode + , ConnectToLace , ConnectToEternl , ConnectToNuFi ) - ) -import Data.Maybe (Maybe(Just)) + ) as X +import Data.Array (head) +import Data.Foldable (fold, foldr) +import Data.Map as Map +import Data.Maybe (Maybe(Just), fromMaybe) +import Data.Newtype (unwrap) +import Data.Traversable (for, traverse) +import Data.Tuple.Nested ((/\)) +import Effect.Exception (error) +import Prim.TypeError (class Warn, Text) withKeyWallet :: forall (a :: Type) - . Wallet.KeyWallet + . KeyWallet -> Contract a -> Contract a withKeyWallet wallet = - local _ { wallet = Just $ KeyWallet wallet } + local _ { wallet = Just $ Wallet.KeyWallet wallet } mkKeyWalletFromPrivateKeys - :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Wallet.KeyWallet + :: PrivatePaymentKey -> Maybe PrivateStakeKey -> KeyWallet mkKeyWalletFromPrivateKeys payment mbStake = privateKeysToKeyWallet payment mbStake + +-- | Get an `Address` of the browser wallet. +getWalletAddress + :: Warn + ( Text + "This function returns only one `Adress` even in case multiple `Adress`es are available. Use `getWalletAdresses` instead" + ) + => Contract (Maybe Address) +getWalletAddress = head <$> getWalletAddresses + +-- | Get all the `Address`es of the browser wallet. +getWalletAddresses :: Contract (Array Address) +getWalletAddresses = do + addresses <- Contract.getWalletAddresses + traverse + ( liftM + (error "getWalletAddresses: failed to deserialize `Address`") + <<< toPlutusAddress + ) + addresses + +-- | Get an `AddressWithNetworkTag` of the browser wallet. +getWalletAddressWithNetworkTag + :: Warn + ( Text + "This function returns only one `AddressWithNetworkTag` even in case multiple `AddressWithNetworkTag` are available. Use `getWalletAddressesWithNetworkTag` instead" + ) + => Contract (Maybe AddressWithNetworkTag) +getWalletAddressWithNetworkTag = head <$> getWalletAddressesWithNetworkTag + +-- | Get all the `AddressWithNetworkTag`s of the browser wallet discarding errors. +getWalletAddressesWithNetworkTag :: Contract (Array AddressWithNetworkTag) +getWalletAddressesWithNetworkTag = do + addresses <- Contract.getWalletAddresses + traverse + ( liftM + ( error + "getWalletAddressesWithNetworkTag: failed to deserialize `Address`" + ) + <<< toPlutusAddressWithNetworkTag + ) + addresses + +-- | Gets a wallet `PaymentPubKeyHash` via `getWalletAddresses`. +ownPaymentPubKeyHash + :: Warn + ( Text + "This function returns only one `PaymentPubKeyHash` even in case multiple `PaymentPubKeysHash`es are available. Use `ownPaymentPubKeyHashes` instead" + ) + => Contract (Maybe PaymentPubKeyHash) +ownPaymentPubKeyHash = head <$> ownPaymentPubKeyHashes + +ownStakePubKeyHash + :: Warn + ( Text + "This function returns only one `StakePubKeyHash` even in case multiple `StakePubKeysHash`es are available. Use `ownStakePubKeyHashes` instead" + ) + => Contract (Maybe StakePubKeyHash) +ownStakePubKeyHash = join <<< head <$> ownStakePubKeyHashes + +-- | Similar to `utxosAt` called on own address, except that it uses CIP-30 +-- | wallet state and not query layer state. +-- | The user should not expect these states to be in sync. +-- | When active wallet is `KeyWallet`, query layer state is used. +-- | This function is expected to be more performant than `utxosAt` when there +-- | is a large number of assets. +getWalletUtxos + :: Contract (Maybe UtxoMap) +getWalletUtxos = do + logTrace' "getWalletUtxos" + whenM + ( asks $ + _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + syncBackendWithWallet + mCardanoUtxos <- Wallet.getWalletUtxos + for mCardanoUtxos $ + liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< + toPlutusUtxoMap + +getWalletBalance + :: Contract (Maybe Value) +getWalletBalance = do + logTrace' "getWalletBalance" + whenM + ( asks $ _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + syncBackendWithWallet + let + getUtxoValue = unwrap >>> _.output >>> unwrap >>> _.amount + sumValues = foldr (Value.unionWith add) mempty + -- include both spendable UTxOs and collateral + utxos <- getWalletUtxos <#> fromMaybe Map.empty + collateralUtxos <- withoutSync getWalletCollateral <#> fold >>> toUtxoMap + let allUtxos = Map.union utxos collateralUtxos + pure $ pure $ sumValues $ map getUtxoValue $ Map.values allUtxos + where + toUtxoMap = Map.fromFoldable <<< map + (unwrap >>> \({ input, output }) -> input /\ output) + +-- | Get the collateral of the browser wallet. This collateral will vary +-- | depending on the wallet. +-- | E.g. Nami creates a hard-coded 5 Ada collateral. +-- | Throws on `Promise` rejection by wallet, returns `Nothing` if no collateral +-- | is available. +getWalletCollateral + :: Contract (Maybe (Array TransactionUnspentOutput)) +getWalletCollateral = do + logTrace' "getWalletCollateral" + whenM + ( asks + ( _.synchronizationParams + >>> _.syncBackendWithWallet + >>> _.beforeCip30Methods + ) + ) + syncBackendWithWallet + mtxUnspentOutput <- Contract.getWalletCollateral + for mtxUnspentOutput $ traverse $ + liftedM + "getWalletCollateral: failed to deserialize TransactionUnspentOutput" + <<< pure + <<< toPlutusTxUnspentOutput diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 103457bc9..f9651c496 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -7,7 +7,7 @@ module Ctl.Internal.Contract.Wallet , getWallet , ownPubKeyHashes , ownPaymentPubKeyHashes - , ownStakePubKeysHashes + , ownStakePubKeyHashes , withWallet , getWalletCollateral , getWalletBalance @@ -108,11 +108,12 @@ ownPubKeyHashes = do liftM (error "Impossible happened: CIP-30 method returned script address") $ stakeCredentialToKeyHash paymentCred <#> wrap +-- | Gets all wallet `PaymentPubKeyHash`es via `getWalletAddresses`. ownPaymentPubKeyHashes :: Contract (Array PaymentPubKeyHash) ownPaymentPubKeyHashes = map wrap <$> ownPubKeyHashes -ownStakePubKeysHashes :: Contract (Array (Maybe StakePubKeyHash)) -ownStakePubKeysHashes = do +ownStakePubKeyHashes :: Contract (Array (Maybe StakePubKeyHash)) +ownStakePubKeyHashes = do addresses <- getWalletAddresses pure $ addressToMStakePubKeyHash <$> addresses where diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 7354d06ab..5b471652e 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -6,8 +6,6 @@ import Prelude import Contract.Address ( addressToBech32 - , getWalletAddresses - , ownPaymentPubKeysHashes ) import Contract.Config (ContractParams) import Contract.Hashing (publicKeyHash) @@ -28,9 +26,15 @@ import Contract.Transaction , submit , submitTxFromConstraints ) -import Contract.Utxos (getWalletBalance, utxosAt) +import Contract.Utxos (utxosAt) import Contract.Value (valueToCoin') -import Contract.Wallet (privateKeysToKeyWallet, withKeyWallet) +import Contract.Wallet + ( getWalletAddresses + , getWalletBalance + , ownPaymentPubKeyHashes + , privateKeysToKeyWallet + , withKeyWallet + ) import Contract.Wallet.Key ( keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey @@ -375,7 +379,7 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = let utxos = nonEmptyWallets # map fst # Map.unions pkhs <- fold <$> for nonEmptyWallets - (snd >>> flip withKeyWallet ownPaymentPubKeysHashes) + (snd >>> flip withKeyWallet ownPaymentPubKeyHashes) let constraints = flip foldMap (Map.keys utxos) mustSpendPubKeyOutput diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 630691349..7e4df4c5c 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -18,9 +18,6 @@ import Contract.Address ( PaymentPubKeyHash , StakePubKeyHash , getNetworkId - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes , payPubKeyHashEnterpriseAddress ) import Contract.Monad (Contract, liftContractM, liftedE, liftedM) @@ -35,7 +32,13 @@ import Contract.Transaction ) import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) -import Contract.Wallet (mkKeyWalletFromPrivateKeys, withKeyWallet) +import Contract.Wallet + ( getWalletAddresses + , mkKeyWalletFromPrivateKeys + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Control.Alternative (guard) import Control.Monad.Reader (asks) import Control.Monad.State.Trans (StateT(StateT), runStateT) @@ -200,7 +203,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do head <$> withKeyWallet ourWallet getWalletAddresses ourUtxos <- utxosAt ourAddr ourPkh <- liftedM "Could not get our payment pkh" $ - head <$> withKeyWallet ourWallet ownPaymentPubKeysHashes + head <$> withKeyWallet ourWallet ownPaymentPubKeyHashes let lookups :: Lookups.ScriptLookups Void lookups = Lookups.unspentOutputs ourUtxos @@ -244,11 +247,11 @@ transferFundsFromEnterpriseToBase ourKey wallets = do -> KeyWallet -> Contract (List WalletInfo) addStakeKeyWalletInfo walletsInfo wallet = withKeyWallet wallet $ - join <<< head <$> ownStakePubKeysHashes >>= case _ of + join <<< head <$> ownStakePubKeyHashes >>= case _ of Nothing -> pure walletsInfo Just stakePkh -> do payPkh <- liftedM "Could not get payment pubkeyhash" $ - head <$> ownPaymentPubKeysHashes + head <$> ownPaymentPubKeyHashes networkId <- getNetworkId addr <- liftContractM "Could not get wallet address" $ payPubKeyHashEnterpriseAddress networkId payPkh diff --git a/src/Internal/Types/PaymentPubKey.purs b/src/Internal/Types/PaymentPubKey.purs new file mode 100644 index 000000000..c1c53669b --- /dev/null +++ b/src/Internal/Types/PaymentPubKey.purs @@ -0,0 +1,36 @@ +module Ctl.Internal.Types.PaymentPubKey + ( PaymentPubKey(PaymentPubKey) + , paymentPubKeyToRequiredSigner + , paymentPubKeyToVkey + ) where + +import Prelude + +import Ctl.Internal.Cardano.Types.Transaction + ( PublicKey + , RequiredSigner(RequiredSigner) + , Vkey(Vkey) + , convertPubKey + ) +import Ctl.Internal.Serialization (publicKeyHash) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +-- Plutus has a type called `PubKey` which we replace with `PublicKey` +newtype PaymentPubKey = PaymentPubKey PublicKey + +derive instance Generic PaymentPubKey _ +derive instance Newtype PaymentPubKey _ +derive newtype instance Eq PaymentPubKey +derive newtype instance Ord PaymentPubKey + +instance Show PaymentPubKey where + show = genericShow + +paymentPubKeyToVkey :: PaymentPubKey -> Vkey +paymentPubKeyToVkey (PaymentPubKey pk) = Vkey pk + +paymentPubKeyToRequiredSigner :: PaymentPubKey -> RequiredSigner +paymentPubKeyToRequiredSigner (PaymentPubKey pk) = + RequiredSigner <<< publicKeyHash $ convertPubKey pk diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 7cde7e1fd..d6fe1e15a 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -23,12 +23,12 @@ import Ctl.Internal.Helpers ((<\>)) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus import Ctl.Internal.Types.Any (Any) import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey) import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) import Ctl.Internal.Types.Scripts (MintingPolicy, Validator) import Ctl.Internal.Types.Transaction (TransactionInput) import Ctl.Internal.Types.TypedValidator (TypedValidator(TypedValidator)) import Ctl.Internal.Types.TypedValidator (generalise) as TV -import Ctl.Internal.Types.UnbalancedTransaction (PaymentPubKey) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) diff --git a/src/Internal/Types/UnbalancedTransaction.purs b/src/Internal/Types/UnbalancedTransaction.purs deleted file mode 100644 index 55138aecd..000000000 --- a/src/Internal/Types/UnbalancedTransaction.purs +++ /dev/null @@ -1,55 +0,0 @@ -module Ctl.Internal.Types.UnbalancedTransaction - ( PaymentPubKey(PaymentPubKey) - , ScriptDatum(ScriptDatum, ScriptDatumHash) - , payPubKeyRequiredSigner - , payPubKeyVkey - ) where - -import Prelude - -import Aeson (class EncodeAeson) -import Ctl.Internal.Cardano.Types.Transaction - ( PublicKey - , RequiredSigner(RequiredSigner) - , Vkey(Vkey) - , convertPubKey - ) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Serialization (publicKeyHash) -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - --- Plutus has a type called `PubKey` which we replace with `PublicKey` -newtype PaymentPubKey = PaymentPubKey PublicKey - -derive instance Generic PaymentPubKey _ -derive instance Newtype PaymentPubKey _ -derive newtype instance Eq PaymentPubKey -derive newtype instance Ord PaymentPubKey - -instance Show PaymentPubKey where - show = genericShow - -data ScriptDatum - = ScriptDatum Datum - | ScriptDatumHash DataHash - -derive instance Eq ScriptDatum -derive instance Generic ScriptDatum _ - -instance EncodeAeson ScriptDatum where - encodeAeson = case _ of - ScriptDatum r -> encodeTagged' "ScriptDatum" r - ScriptDatumHash r -> encodeTagged' "ScriptDatumHash" r - -instance Show ScriptDatum where - show = genericShow - -payPubKeyVkey :: PaymentPubKey -> Vkey -payPubKeyVkey (PaymentPubKey pk) = Vkey pk - -payPubKeyRequiredSigner :: PaymentPubKey -> RequiredSigner -payPubKeyRequiredSigner (PaymentPubKey pk) = - RequiredSigner <<< publicKeyHash $ convertPubKey pk diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index 4da77b7dd..b51afcec8 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -86,14 +86,17 @@ privateStakeKeyFromFile filePath = do liftM (error "Unable to decode private stake key") $ PrivateStakeKey <$> privateKeyFromBytes (wrap bytes) +-- | Write private payment key to file in cardano-cli envelope format privatePaymentKeyToFile :: FilePath -> PrivatePaymentKey -> Aff Unit privatePaymentKeyToFile filePath key = liftEffect <<< (writeTextFile Encoding.UTF8 filePath) $ formatPaymentKey key +-- | Write private stake key to file in cardano-cli envelope format privateStakeKeyToFile :: FilePath -> PrivateStakeKey -> Aff Unit privateStakeKeyToFile filePath key = liftEffect <<< (writeTextFile Encoding.UTF8 filePath) $ formatStakeKey key +-- | Convert private payment key to cardano-cli envelope format. formatPaymentKey :: PrivatePaymentKey -> String formatPaymentKey (PrivatePaymentKey key) = encodeAeson >>> show $ @@ -102,6 +105,7 @@ formatPaymentKey (PrivatePaymentKey key) = encodeAeson >>> show , cborHex: keyToCbor key } +-- | Convert private stake key to cardano-cli envelope format. formatStakeKey :: PrivateStakeKey -> String formatStakeKey (PrivateStakeKey key) = encodeAeson >>> show $ diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 60ed32f85..adf201ea6 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -353,7 +353,7 @@ let additions = , "web-html" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "f46247826949b752638e86b0e1e75fac3f4c08ec" + , version = "12d0e1c8034bb0058658b7b91bf9dcbfc41f412d" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/src/Scaffold.purs b/templates/ctl-scaffold/src/Scaffold.purs index befbc7c43..f3153ea82 100644 --- a/templates/ctl-scaffold/src/Scaffold.purs +++ b/templates/ctl-scaffold/src/Scaffold.purs @@ -4,11 +4,11 @@ module Scaffold (contract) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeysHashes) import Contract.Log (logInfo') import Contract.Monad (Contract) +import Contract.Wallet (ownPaymentPubKeyHashes) contract :: Contract Unit contract = do logInfo' "Welcome to CTL! Your wallet's payment PubKey hashes are:" - logInfo' <<< show =<< ownPaymentPubKeysHashes + logInfo' <<< show =<< ownPaymentPubKeyHashes diff --git a/test/Blockfrost/GenerateFixtures/NativeScript.purs b/test/Blockfrost/GenerateFixtures/NativeScript.purs index 533a3e9b5..5b0b42b0e 100644 --- a/test/Blockfrost/GenerateFixtures/NativeScript.purs +++ b/test/Blockfrost/GenerateFixtures/NativeScript.purs @@ -2,7 +2,6 @@ module Test.Ctl.Blockfrost.GenerateFixtures.NativeScript (main) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeyHash, ownStakePubKeyHash) import Contract.Config ( ContractParams , PrivatePaymentKeySource(PrivatePaymentKeyFile) @@ -23,6 +22,7 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) as Constraints import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet (ownPaymentPubKeyHash, ownStakePubKeyHash) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddressWithScriptRef) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) import Ctl.Internal.Service.Blockfrost @@ -121,4 +121,3 @@ generateFixtures numFixtures = do NativeScriptByHash h | h == nativeScriptHash -> storeBlockfrostFixture i "getNativeScriptByHash" rawResponse _ -> pure unit - diff --git a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs index 4f07847f6..d749bd3ea 100644 --- a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs +++ b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs @@ -2,7 +2,6 @@ module Test.Ctl.Blockfrost.GenerateFixtures.ScriptInfo (main) where import Contract.Prelude -import Contract.Address (ownPaymentPubKeyHash, ownStakePubKeyHash) import Contract.Config ( ContractParams , PrivatePaymentKeySource(PrivatePaymentKeyFile) @@ -24,6 +23,7 @@ import Contract.Transaction import Contract.TxConstraints (TxConstraints) as Constraints import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet (ownPaymentPubKeyHash, ownStakePubKeyHash) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddressWithScriptRef) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) @@ -126,4 +126,3 @@ generateFixtures = do ScriptInfo h | h == scriptHash -> storeBlockfrostFixture i "getScriptInfo" rawResponse _ -> pure unit - diff --git a/test/Deserialization.purs b/test/Deserialization.purs index fe15d425f..d6d9fde5a 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -2,7 +2,7 @@ module Test.Ctl.Deserialization (suite) where import Prelude -import Contract.Address (ByteArray) +import Contract.Prim.ByteArray (ByteArray) import Contract.TextEnvelope ( TextEnvelope(TextEnvelope) , TextEnvelopeType(Other) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 925ecf671..12b1bf2f0 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -9,10 +9,6 @@ import Contract.Address , PubKeyHash(PubKeyHash) , StakePubKeyHash , getNetworkId - , getWalletAddresses - , getWalletCollateral - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes , scriptHashAddress ) import Contract.AuxiliaryData (setGeneralTxMetadata) @@ -81,10 +77,19 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints -import Contract.Utxos (UtxoMap, getWalletBalance, utxosAt) +import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value -import Contract.Wallet (getWalletUtxos, isWalletAvailable, withKeyWallet) +import Contract.Wallet + ( getWalletAddresses + , getWalletBalance + , getWalletCollateral + , getWalletUtxos + , isWalletAvailable + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Control.Monad.Error.Class (try) import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) @@ -226,8 +231,8 @@ suite = do withWallets distribution \alice -> do checkUtxoDistribution distribution alice pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeysHashes - stakePkh <- join <<< head <$> withKeyWallet alice ownStakePubKeysHashes + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> withKeyWallet alice ownStakePubKeyHashes withKeyWallet alice $ pkh2PkhContract pkh stakePkh test @@ -243,9 +248,9 @@ suite = do withWallets distribution \alice -> do checkUtxoDistribution distribution alice pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet alice - ownStakePubKeysHashes + ownStakePubKeyHashes stakePkh `shouldSatisfy` isJust withKeyWallet alice $ pkh2PkhContract pkh stakePkh @@ -270,15 +275,15 @@ suite = do sequential ado parallel $ withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet bob - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet bob - ownStakePubKeysHashes + ownStakePubKeyHashes pkh2PkhContract pkh stakePkh parallel $ withKeyWallet bob do pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet alice - ownStakePubKeysHashes + ownStakePubKeyHashes pkh2PkhContract pkh stakePkh in unit @@ -303,16 +308,16 @@ suite = do sequential ado parallel $ withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet bob - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet bob - ownStakePubKeysHashes + ownStakePubKeyHashes pkh2PkhContract pkh stakePkh parallel $ withKeyWallet bob do pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet alice - ownStakePubKeysHashes + ownStakePubKeyHashes pkh2PkhContract pkh stakePkh in unit @@ -346,14 +351,14 @@ suite = do withWallets distribution \(alice /\ bob /\ charlie /\ dan) -> do alicePaymentPKH <- liftedM "Unable to get Alice's PKH" $ - (coerce <<< head) <$> withKeyWallet alice ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet alice ownPaymentPubKeyHashes bobPaymentPKH <- liftedM "Unable to get Bob's PKH" $ - (coerce <<< head) <$> withKeyWallet bob ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet bob ownPaymentPubKeyHashes charliePaymentPKH <- liftedM "Unable to get Charlie's PKH" $ (coerce <<< head) <$> withKeyWallet charlie - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes danPaymentPKH <- liftedM "Unable to get Dan's PKH" $ - (coerce <<< head) <$> withKeyWallet dan ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet dan ownPaymentPubKeyHashes let nativeScript = ScriptAll [ ScriptPubkey alicePaymentPKH @@ -443,14 +448,14 @@ suite = do withWallets distribution \(alice /\ bob /\ charlie /\ dan) -> do alicePaymentPKH <- liftedM "Unable to get Alice's PKH" $ - (coerce <<< head) <$> withKeyWallet alice ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet alice ownPaymentPubKeyHashes bobPaymentPKH <- liftedM "Unable to get Bob's PKH" $ - (coerce <<< head) <$> withKeyWallet bob ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet bob ownPaymentPubKeyHashes charliePaymentPKH <- liftedM "Unable to get Charlie's PKH" $ (coerce <<< head) <$> withKeyWallet charlie - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes danPaymentPKH <- liftedM "Unable to get Dan's PKH" $ - (coerce <<< head) <$> withKeyWallet dan ownPaymentPubKeysHashes + (coerce <<< head) <$> withKeyWallet dan ownPaymentPubKeyHashes let nativeScript = ScriptNOfK 2 [ ScriptPubkey alicePaymentPKH @@ -567,7 +572,7 @@ suite = do -- Spending same amount pkh <- - liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let constraints' :: Constraints.TxConstraints Void Void @@ -609,7 +614,7 @@ suite = do -- Spending more than minted amount pkh <- - liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let constraints' :: Constraints.TxConstraints Void Void @@ -652,7 +657,7 @@ suite = do -- Spending same amount pkh <- - liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let constraints' :: Constraints.TxConstraints Void Void @@ -694,7 +699,7 @@ suite = do -- Spending more than minted amount pkh <- - liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes + liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let constraints' :: Constraints.TxConstraints Void Void @@ -1018,7 +1023,7 @@ suite = do withWallets distribution \alice -> do alicePkh <- withKeyWallet alice do - liftedM "Could not get own PKH" (head <$> ownPaymentPubKeysHashes) + liftedM "Could not get own PKH" (head <$> ownPaymentPubKeyHashes) validator <- AlwaysSucceeds.alwaysSucceedsScript @@ -1291,8 +1296,8 @@ suite = do withWallets distribution \(alice /\ seed) -> do alicePkh /\ aliceStakePkh <- withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> - ownPaymentPubKeysHashes - stakePkh <- join <<< head <$> ownStakePubKeysHashes + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> ownStakePubKeyHashes pure $ pkh /\ stakePkh mp <- alwaysMintsPolicy @@ -1410,8 +1415,8 @@ suite = do withWallets distribution \(alice /\ bob) -> do receiverPkh <- liftedM "Unable to get Bob's PKH" $ - head <$> withKeyWallet bob ownPaymentPubKeysHashes - receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeysHashes + head <$> withKeyWallet bob ownPaymentPubKeyHashes + receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 @@ -1471,7 +1476,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes let constraints0 :: TxConstraints Unit Unit @@ -1566,7 +1571,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> - ownPaymentPubKeysHashes + ownPaymentPubKeyHashes wUtxos0 <- liftedM "Failed to get wallet UTXOs" getWalletUtxos logInfo' $ "wUtxos0 " <> show wUtxos0 @@ -1804,8 +1809,8 @@ suite = do withWallets distribution \alice -> do withCip30Mock alice MockNami do pkh <- liftedM "Failed to get PKH" $ head <$> - ownPaymentPubKeysHashes - stakePkh <- join <<< head <$> ownStakePubKeysHashes + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> ownStakePubKeyHashes pkh2PkhContract pkh stakePkh test "getWalletBalance works" do @@ -1884,8 +1889,8 @@ suite = do signMultipleContract :: Contract Unit signMultipleContract = do - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeysHashes - stakePkh <- join <<< head <$> ownStakePubKeysHashes + pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> ownStakePubKeyHashes let constraints :: Constraints.TxConstraints Void Void constraints = mustPayToPubKeyStakeAddress pkh stakePkh diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index c0735e095..708b4461f 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -3,7 +3,6 @@ module Test.Ctl.Plutip.Contract.Assert (suite) where import Prelude -import Contract.Address (ownPaymentPubKeysHashes, ownStakePubKeysHashes) import Contract.Monad (liftedM) import Contract.PlutusData (PlutusData(Integer)) import Contract.Test (ContractTest) @@ -14,7 +13,11 @@ import Contract.Test.Assert ) import Contract.Test.Mote (TestPlanM) import Contract.Test.Plutip (InitialUTxOs, withWallets) -import Contract.Wallet (withKeyWallet) +import Contract.Wallet + ( ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.ContractTestUtils as ContractTestUtils import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) @@ -45,8 +48,8 @@ suite = do withWallets distribution \(alice /\ bob) -> do receiverPkh <- liftedM "Unable to get Bob's PKH" $ - head <$> withKeyWallet bob ownPaymentPubKeysHashes - receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeysHashes + head <$> withKeyWallet bob ownPaymentPubKeyHashes + receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 @@ -74,8 +77,8 @@ suite = do withWallets distribution \(alice /\ bob) -> do receiverPkh <- liftedM "Unable to get Bob's PKH" $ - head <$> withKeyWallet bob ownPaymentPubKeysHashes - receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeysHashes + head <$> withKeyWallet bob ownPaymentPubKeyHashes + receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 @@ -105,8 +108,8 @@ suite = do withWallets distribution \(alice /\ bob) -> do receiverPkh <- liftedM "Unable to get Bob's PKH" $ - head <$> withKeyWallet bob ownPaymentPubKeysHashes - receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeysHashes + head <$> withKeyWallet bob ownPaymentPubKeyHashes + receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 @@ -140,8 +143,8 @@ suite = do withWallets distribution \(alice /\ bob) -> do receiverPkh <- liftedM "Unable to get Bob's PKH" $ - head <$> withKeyWallet bob ownPaymentPubKeysHashes - receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeysHashes + head <$> withKeyWallet bob ownPaymentPubKeyHashes + receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index da9f88bdc..cc86b9944 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -8,8 +8,6 @@ import Prelude import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , getNetworkId - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes ) import Contract.Backend.Ogmios (getPoolParameters) import Contract.Credential (Credential(ScriptCredential)) @@ -66,7 +64,11 @@ import Contract.TxConstraints , mustWithdrawStakePubKey ) import Contract.Value (lovelaceValueOf) -import Contract.Wallet (withKeyWallet) +import Contract.Wallet + ( ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.IncludeDatum (only42Script) @@ -140,10 +142,10 @@ suite = do runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) -- Register do @@ -180,10 +182,10 @@ suite = do runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) validator1 <- alwaysSucceedsScript <#> unwrap >>> PlutusScriptStakeValidator validator2 <- only42Script <#> unwrap >>> @@ -232,10 +234,10 @@ suite = do runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) let nativeScript = ScriptAny [ ScriptPubkey $ unwrap $ unwrap alicePkh ] @@ -277,9 +279,9 @@ suite = do ] runPlutipContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) -- Register stake key do @@ -397,9 +399,9 @@ suite = do runPlutipContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) validator <- alwaysSucceedsScript <#> unwrap >>> PlutusScriptStakeValidator let @@ -507,9 +509,9 @@ suite = do runPlutipContract config distribution \(alice /\ bob) -> do bobPkh /\ bobStakePkh <- withKeyWallet bob do Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) let nativeScript = ScriptAny [ ScriptPubkey $ unwrap $ unwrap bobStakePkh ] @@ -620,9 +622,9 @@ suite = do runPlutipContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeysHashes) + <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeysHashes) + (join <<< head <$> ownStakePubKeyHashes) -- Register stake key do diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index 19bcab669..8596de608 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -17,9 +17,6 @@ import Prelude import Contract.Address ( Address , getNetworkId - , getWalletAddresses - , ownPaymentPubKeysHashes - , ownStakePubKeysHashes , payPubKeyHashEnterpriseAddress ) import Contract.Monad (Contract, liftedM) @@ -36,7 +33,13 @@ import Contract.Transaction ) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Value, lovelaceValueOf) -import Contract.Wallet (KeyWallet, withKeyWallet) +import Contract.Wallet + ( KeyWallet + , getWalletAddresses + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Control.Lazy (fix) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) @@ -196,7 +199,7 @@ assertContract msg cond = if cond then pure unit else liftEffect $ throw msg assertUtxosAtPlutipWalletAddress :: KeyWallet -> Contract Unit assertUtxosAtPlutipWalletAddress wallet = withKeyWallet wallet do - maybeStake <- join <<< head <$> ownStakePubKeysHashes + maybeStake <- join <<< head <$> ownStakePubKeyHashes when (isJust maybeStake) $ assertNoUtxosAtEnterpriseAddress wallet assertNoUtxosAtEnterpriseAddress @@ -206,7 +209,7 @@ assertNoUtxosAtEnterpriseAddress wallet = withKeyWallet wallet $ ( payPubKeyHashEnterpriseAddress <$> getNetworkId <*> liftedM "Could not get payment pubkeyhash" - (head <$> ownPaymentPubKeysHashes) + (head <$> ownPaymentPubKeyHashes) ) assertNoUtxosAtAddress :: Address -> Contract Unit diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index c52521b21..5ae6b367e 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -2,7 +2,6 @@ module Test.Ctl.Utils.DrainWallets (main) where import Prelude -import Contract.Address (getWalletAddresses, ownPaymentPubKeysHashes) import Contract.Config ( PrivatePaymentKeySource(PrivatePaymentKeyFile) , WalletSpec(UseKeys) @@ -20,7 +19,12 @@ import Contract.Transaction ) import Contract.TxConstraints (mustBeSignedBy, mustSpendPubKeyOutput) import Contract.Utxos (utxosAt) -import Contract.Wallet (privateKeysToKeyWallet, withKeyWallet) +import Contract.Wallet + ( getWalletAddresses + , ownPaymentPubKeyHashes + , privateKeysToKeyWallet + , withKeyWallet + ) import Contract.Wallet.KeyFile ( privatePaymentKeyFromFile , privateStakeKeyFromFile @@ -88,7 +92,7 @@ run privateKey walletsDir = runContract config do do address <- getWalletAddresses >>= head >>> liftMaybe (error "no addresses") - pkh <- ownPaymentPubKeysHashes >>= head >>> liftMaybe (error "no PKH") + pkh <- ownPaymentPubKeyHashes >>= head >>> liftMaybe (error "no PKH") utxos <- utxosAt address pure { utxos From 3a4e0341daee3b388fbb792f1e07cf76581f4e8b Mon Sep 17 00:00:00 2001 From: Mitch Notarnicola Date: Sun, 9 Apr 2023 19:53:14 -0400 Subject: [PATCH 144/478] apply PR comments --- src/Contract/Backend/Ogmios.purs | 97 +------------- src/Contract/Backend/Ogmios/Mempool.purs | 104 +++++++++++++++ src/Internal/QueryM/Ogmios.purs | 158 ++++++++++++----------- 3 files changed, 190 insertions(+), 169 deletions(-) create mode 100644 src/Contract/Backend/Ogmios/Mempool.purs diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index d18c4dcf9..db6811516 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -1,49 +1,15 @@ -- | Module for backend-specific functions that only work with Ogmios/Kupo backends module Contract.Backend.Ogmios - ( acquireMempoolSnapshot - , fetchMempoolTXs - , getPoolParameters - , mempoolSnapshotHasTx - , mempoolSnapshotNextTx - , mempoolSnapshotSizeAndCapacity - , mempoolTxToUtxoMap - , releaseMempool + ( getPoolParameters ) where import Contract.Prelude import Contract.Monad (Contract) import Contract.Transaction (PoolPubKeyHash) -import Contract.Utxos (UtxoMap) import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Plutus.Conversion (toPlutusTxOutputWithRefScript) -import Ctl.Internal.QueryM - ( acquireMempoolSnapshot - , mempoolSnapshotHasTx - , mempoolSnapshotNextTx - , mempoolSnapshotSizeAndCapacity - , releaseMempool - ) as QM -import Ctl.Internal.QueryM.Ogmios - ( MempoolReleased - , MempoolSizeAndCapacity - , MempoolSnapshotAcquired - , MempoolTransaction(MempoolTransaction) - , TxHash - ) import Ctl.Internal.QueryM.Pools as QueryM -import Ctl.Internal.TxOutput - ( ogmiosTxOutToTransactionOutput - , txOutRefToTransactionInput - ) -import Data.Array ((..), (:)) -import Data.Array as Array -import Data.Bifunctor (bimap) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.UInt as UInt -- | **This function can only run with Ogmios backend** -- | @@ -53,64 +19,3 @@ getPoolParameters :: PoolPubKeyHash -> Contract PoolRegistrationParams getPoolParameters = wrapQueryM <<< QueryM.getPoolParameters - --------------------------------------------------------------------------------- --- Local Tx Monitor --------------------------------------------------------------------------------- - --- | Establish a connection with the Local TX Monitor. --- | Instantly accquires the current mempool snapshot, and will wait for the next --- | mempool snapshot if used again before using `releaseMempool`. -acquireMempoolSnapshot :: Contract MempoolSnapshotAcquired -acquireMempoolSnapshot = wrapQueryM QM.acquireMempoolSnapshot - --- | Check to see if a TxHash is present in the current mempool snapshot. -mempoolSnapshotHasTx :: MempoolSnapshotAcquired -> TxHash -> Contract Boolean -mempoolSnapshotHasTx ms = wrapQueryM <<< QM.mempoolSnapshotHasTx ms - --- | Get the first received TX in the current mempool snapshot. This function can --- | be recursively called to traverse the finger-tree of the mempool data set. --- | This will return `Nothing` once it has reached the end of the current mempool. -mempoolSnapshotNextTx - :: MempoolSnapshotAcquired -> Contract (Maybe MempoolTransaction) -mempoolSnapshotNextTx = wrapQueryM <<< QM.mempoolSnapshotNextTx - --- | The acquired snapshot’s size (in bytes), number of transactions, and --- | capacity (in bytes). -mempoolSnapshotSizeAndCapacity - :: MempoolSnapshotAcquired -> Contract MempoolSizeAndCapacity -mempoolSnapshotSizeAndCapacity = wrapQueryM <<< - QM.mempoolSnapshotSizeAndCapacity - --- | Release the connection to the Local TX Monitor. -releaseMempool :: MempoolSnapshotAcquired -> Contract MempoolReleased -releaseMempool = wrapQueryM <<< QM.releaseMempool - --- | Recursively request the next TX in the mempool until Ogmios does not --- | respond with a new TX. -fetchMempoolTXs - :: MempoolSnapshotAcquired -> Contract (Array MempoolTransaction) -fetchMempoolTXs ms = do - nextTX <- mempoolSnapshotNextTx ms - case nextTX of - Just tx -> do - txs <- fetchMempoolTXs ms - pure $ tx : txs - Nothing -> pure mempty - --- | Convert the UTxOs in the `MempoolTransaction` type into a `UtxoMap`. -mempoolTxToUtxoMap :: MempoolTransaction -> UtxoMap -mempoolTxToUtxoMap (MempoolTransaction { id, body }) = - Map.fromFoldable $ Array.catMaybes $ uncurry tupleMaybes - <$> bimap txOutRefToTransactionInput - (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) - <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) - (0 .. (length outputs - 1)) - outputs - - where - outputs = (unwrap body).outputs - - -- | Combine two `Maybe`s into a `Maybe Tuple`. - tupleMaybes :: forall a b. Maybe a -> Maybe b -> Maybe (Tuple a b) - tupleMaybes ma mb = (ma # map Tuple) <*> mb diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs new file mode 100644 index 000000000..87b53cdc0 --- /dev/null +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -0,0 +1,104 @@ +-- A module for interacting with Ogmios' Local TX Monitor +module Contract.Backend.Ogmios.Mempool + ( module Ogmios + , acquireMempoolSnapshot + , fetchMempoolTXs + , mempoolSnapshotHasTx + , mempoolSnapshotNextTx + , mempoolSnapshotSizeAndCapacity + , mempoolTxToUtxoMap + , releaseMempool + ) where + +import Contract.Prelude + +import Contract.Monad (Contract) +import Contract.Utxos (UtxoMap) +import Ctl.Internal.Contract.Monad (wrapQueryM) +import Ctl.Internal.Plutus.Conversion (toPlutusTxOutputWithRefScript) +import Ctl.Internal.QueryM + ( acquireMempoolSnapshot + , mempoolSnapshotHasTx + , mempoolSnapshotNextTx + , mempoolSnapshotSizeAndCapacity + , releaseMempool + ) as QueryM +import Ctl.Internal.QueryM.Ogmios + ( MempoolReleased(Released) + , MempoolSizeAndCapacity(MempoolSizeAndCapacity) + , MempoolSnapshotAcquired + , MempoolTransaction(MempoolTransaction) + , TxHash + ) as Ogmios +import Ctl.Internal.TxOutput + ( ogmiosTxOutToTransactionOutput + , txOutRefToTransactionInput + ) +import Data.Array ((..), (:)) +import Data.Array as Array +import Data.Bifunctor (bimap) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) +import Data.UInt as UInt + +-- | Establish a connection with the Local TX Monitor. +-- | Instantly accquires the current mempool snapshot, and will wait for the next +-- | mempool snapshot if used again before using `releaseMempool`. +acquireMempoolSnapshot :: Contract Ogmios.MempoolSnapshotAcquired +acquireMempoolSnapshot = wrapQueryM QueryM.acquireMempoolSnapshot + +-- | Check to see if a TxHash is present in the current mempool snapshot. +mempoolSnapshotHasTx + :: Ogmios.MempoolSnapshotAcquired -> Ogmios.TxHash -> Contract Boolean +mempoolSnapshotHasTx ms = wrapQueryM <<< QueryM.mempoolSnapshotHasTx ms + +-- | Get the first received TX in the current mempool snapshot. This function can +-- | be recursively called to traverse the finger-tree of the mempool data set. +-- | This will return `Nothing` once it has reached the end of the current mempool. +mempoolSnapshotNextTx + :: Ogmios.MempoolSnapshotAcquired + -> Contract (Maybe Ogmios.MempoolTransaction) +mempoolSnapshotNextTx = wrapQueryM <<< QueryM.mempoolSnapshotNextTx + +-- | The acquired snapshot’s size (in bytes), number of transactions, and +-- | capacity (in bytes). +mempoolSnapshotSizeAndCapacity + :: Ogmios.MempoolSnapshotAcquired -> Contract Ogmios.MempoolSizeAndCapacity +mempoolSnapshotSizeAndCapacity = wrapQueryM <<< + QueryM.mempoolSnapshotSizeAndCapacity + +-- | Release the connection to the Local TX Monitor. +releaseMempool + :: Ogmios.MempoolSnapshotAcquired -> Contract Ogmios.MempoolReleased +releaseMempool = wrapQueryM <<< QueryM.releaseMempool + +-- | Recursively request the next TX in the mempool until Ogmios does not +-- | respond with a new TX. +fetchMempoolTXs + :: Ogmios.MempoolSnapshotAcquired + -> Contract (Array Ogmios.MempoolTransaction) +fetchMempoolTXs ms = do + nextTX <- mempoolSnapshotNextTx ms + case nextTX of + Just tx -> do + txs <- fetchMempoolTXs ms + pure $ tx : txs + Nothing -> pure mempty + +-- | Convert the UTxOs in the `MempoolTransaction` type into a `UtxoMap`. +mempoolTxToUtxoMap :: Ogmios.MempoolTransaction -> UtxoMap +mempoolTxToUtxoMap (Ogmios.MempoolTransaction { id, body }) = + Map.fromFoldable $ Array.catMaybes $ uncurry tupleMaybes + <$> bimap txOutRefToTransactionInput + (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) + <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) + (0 .. (length outputs - 1)) + outputs + + where + outputs = (unwrap body).outputs + + -- | Combine two `Maybe`s into a `Maybe Tuple`. + tupleMaybes :: forall a b. Maybe a -> Maybe b -> Maybe (Tuple a b) + tupleMaybes ma mb = (ma # map Tuple) <*> mb diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 9523782fa..073d33d17 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -235,6 +235,7 @@ import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt +import Data.Bitraversable (bitraverse) import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) @@ -405,18 +406,19 @@ instance DecodeAeson MempoolSnapshotAcquired where -- | The acquired snapshot’s size (in bytes), number of transactions, and capacity -- | (in bytes). newtype MempoolSizeAndCapacity = MempoolSizeAndCapacity - { capacity :: BigInt - , currentSize :: BigInt - , numberOfTxs :: BigInt + { capacity :: Int + , currentSize :: Int + , numberOfTxs :: Int } derive instance Generic MempoolSizeAndCapacity _ derive instance Newtype MempoolSizeAndCapacity _ + instance Show MempoolSizeAndCapacity where show = genericShow instance DecodeAeson MempoolSizeAndCapacity where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do capacity <- getField o "capacity" currentSize <- getField o "currentSize" numberOfTxs <- getField o "numberOfTxs" @@ -428,9 +430,9 @@ data MempoolReleased = Released -- Ogmios only has a single response for releasing the mempool -- https://github.com/CardanoSolutions/ogmios/blob/d326d8839d50ff628f7be1b5552f7cd22b2f094e/server/src/Ogmios/Data/Protocol/StateQuery.hs#L231 instance DecodeAeson MempoolReleased where - decodeAeson = aesonString $ \a -> case a of + decodeAeson = aesonString \a -> case a of "Released" -> Right Released - _ -> Left $ UnexpectedValue $ JSON.fromString a + _ -> unexpectedValueError a instance Show MempoolReleased where show Released = "Mempool Released" @@ -446,11 +448,12 @@ newtype MempoolTransaction = MempoolTransaction derive instance Generic MempoolTransaction _ derive instance Newtype MempoolTransaction _ + instance Show MempoolTransaction where show = genericShow instance DecodeAeson MempoolTransaction where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do id <- o .: "id" inputSource <- o .: "inputSource" body <- o .: "body" @@ -480,7 +483,7 @@ instance Show MempoolTxBody where show = genericShow instance DecodeAeson MempoolTxBody where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do inputs <- aesonArray (traverse parseTxOutRef) =<< o .: "inputs" collaterals <- aesonArray (traverse parseTxOutRef) =<< o .: "collaterals" outputs <- aesonArray (traverse parseTxOut) =<< o .: "outputs" @@ -516,18 +519,21 @@ instance DecodeAeson MempoolTxBody where data InputSource = Inputs | Collaterals derive instance Generic InputSource _ + instance Show InputSource where show = genericShow instance DecodeAeson InputSource where - decodeAeson = aesonString $ \inputSource -> + decodeAeson = aesonString \inputSource -> case inputSource of "inputs" -> Right Inputs "outputs" -> Right Collaterals _ -> unexpectedValueError inputSource type OgmiosRewardAddress = String + type OgmiosRequiredSigner = String + newtype OgmiosWitnessSet = OgmiosWitnessSet { signatures :: Map String Signature , scripts :: Map String ScriptRef @@ -538,35 +544,30 @@ newtype OgmiosWitnessSet = OgmiosWitnessSet derive instance Generic OgmiosWitnessSet _ derive instance Newtype OgmiosWitnessSet _ + instance Show OgmiosWitnessSet where show = genericShow instance DecodeAeson OgmiosWitnessSet where - decodeAeson = aesonObject $ \o -> do - signatureList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o - .: "signatures" - scriptList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: - "scripts" - bootstrap <- aesonArray (traverse decodeAeson) =<< o .: "bootstrap" - datumList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o .: - "datums" - redeemerList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> o - .: "redeemers" - - signatures <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) - signatureList - scripts <- Map.fromFoldable <$> traverse - (decodeValue $ aesonObject parseScript) - scriptList - datums <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) datumList - redeemers <- Map.fromFoldable <$> traverse (decodeValue decodeAeson) - redeemerList + decodeAeson = aesonObject \o -> do + signatures <- flattenAesonObject <$> o .: "signatures" >>= + traverse (decodeValue decodeAeson) >>> map Map.fromFoldable + scripts <- flattenAesonObject <$> o .: "scripts" >>= + traverse (decodeValue $ aesonObject parseScript) >>> map Map.fromFoldable + bootstrap <- o .: "bootstrap" >>= aesonArray (traverse decodeAeson) + datums <- flattenAesonObject <$> o .: "datums" >>= + traverse (decodeValue decodeAeson) >>> map Map.fromFoldable + redeemers <- flattenAesonObject <$> o .: "redeemers" >>= + traverse (decodeValue decodeAeson) >>> map Map.fromFoldable pure $ OgmiosWitnessSet { signatures, scripts, bootstrap, datums, redeemers } where + flattenAesonObject :: Object Aeson -> Array (Tuple String Aeson) + flattenAesonObject = ForeignObject.toUnfoldable + decodeValue :: forall a . (Aeson -> Either JsonDecodeError a) @@ -581,14 +582,15 @@ newtype OgmiosRedeemer = OgmiosRedeemer derive instance Generic OgmiosRedeemer _ derive instance Newtype OgmiosRedeemer _ + instance Show OgmiosRedeemer where show = genericShow instance DecodeAeson OgmiosRedeemer where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do redeemer <- o .: "redeemer" execUnitsAeson <- o .: "executionUnits" - executionUnits <- flip aesonObject execUnitsAeson $ \obj -> do + executionUnits <- flip aesonObject execUnitsAeson \obj -> do mem <- obj .: "memory" steps <- obj .: "steps" pure { mem, steps } @@ -603,11 +605,12 @@ newtype OgmiosBootstrapWitness = OgmiosBootstrapWitness derive instance Generic OgmiosBootstrapWitness _ derive instance Newtype OgmiosBootstrapWitness _ + instance Show OgmiosBootstrapWitness where show = genericShow instance DecodeAeson OgmiosBootstrapWitness where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do signature <- o .: "signature" chainCode <- o .:? "chainCode" addressAttributes <- o .:? "addressAttributes" @@ -616,8 +619,11 @@ instance DecodeAeson OgmiosBootstrapWitness where { signature, chainCode, addressAttributes, key } type Signature = String + type ChainCode = String + type AddressAttributes = String + type VerificationKey = String data OgmiosCertificate @@ -630,27 +636,28 @@ data OgmiosCertificate | MoveInstantaneousRewards MoveInstantaneousRewards derive instance Generic OgmiosCertificate _ + instance Show OgmiosCertificate where show = genericShow instance DecodeAeson OgmiosCertificate where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do case (Array.head $ ForeignObject.toUnfoldable o) of - Just ("stakeDelegation" /\ certificate) -> map StakeDelegation $ + Just ("stakeDelegation" /\ certificate) -> StakeDelegation <$> parseStakeDelegation certificate - Just ("stakeKeyRegistration" /\ certificate) -> map StakeKeyRegistration $ + Just ("stakeKeyRegistration" /\ certificate) -> StakeKeyRegistration <$> decodeAeson certificate Just ("stakeKeyDeregistration" /\ certificate) -> - map StakeKeyDeregistration $ decodeAeson certificate + StakeKeyDeregistration <$> decodeAeson certificate Just ("poolRegistration" /\ certificate) -> aesonObject (map PoolRegistration <<< decodePoolParameters) certificate - Just ("poolRetirement" /\ certificate) -> map PoolRetirement $ + Just ("poolRetirement" /\ certificate) -> PoolRetirement <$> parsePoolRetirement certificate - Just ("GenesisDelegation" /\ certificate) -> map GenesisDelegation $ + Just ("genesisDelegation" /\ certificate) -> GenesisDelegation <$> parseGenesisDelegation certificate Just ("moveInstantaneousRewards" /\ certificate) -> - map MoveInstantaneousRewards $ parseMoveInstantaneousRewards certificate + MoveInstantaneousRewards <$> parseMoveInstantaneousRewards certificate _ -> Left $ TypeMismatch "Expected a Certificate" type StakeDelegation = @@ -676,19 +683,19 @@ type MoveInstantaneousRewards = } parseStakeDelegation :: Aeson -> Either JsonDecodeError StakeDelegation -parseStakeDelegation = aesonObject $ \o -> do +parseStakeDelegation = aesonObject \o -> do delegator <- o .: "delegator" delegatee <- o .: "delegatee" pure { delegator, delegatee } parsePoolRetirement :: Aeson -> Either JsonDecodeError PoolRetirement -parsePoolRetirement = aesonObject $ \o -> do +parsePoolRetirement = aesonObject \o -> do retirementEpoch <- o .: "retirementEpoch" poolId <- o .: "poolId" pure { retirementEpoch, poolId } parseGenesisDelegation :: Aeson -> Either JsonDecodeError GenesisDelegation -parseGenesisDelegation = aesonObject $ \o -> do +parseGenesisDelegation = aesonObject \o -> do delegateKeyHash <- o .: "delegateKeyHash" verificationKeyHash <- o .: "verificationKeyHash" vrfVerificationKeyHash <- decodeVRFKeyHash =<< o .: "vrfVerificationKeyHash" @@ -696,23 +703,26 @@ parseGenesisDelegation = aesonObject $ \o -> do parseMoveInstantaneousRewards :: Aeson -> Either JsonDecodeError MoveInstantaneousRewards -parseMoveInstantaneousRewards = aesonObject $ \o -> do +parseMoveInstantaneousRewards = aesonObject \o -> do rewards <- o .:? "rewards" value <- o .:? "value" pot <- o .: "pot" pure { rewards, value, pot } type PoolId = String + type DigestBlake2BCredential = String + newtype Rewards = Rewards (Map String LovelaceDelta) derive instance Generic Rewards _ derive instance Newtype Rewards _ + instance Show Rewards where show = genericShow instance DecodeAeson Rewards where - decodeAeson = aesonObject $ \obj -> do + decodeAeson = aesonObject \obj -> do let rewardsList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) Rewards <<< Map.fromFoldable <$> traverse decodeRewardAmount rewardsList @@ -725,14 +735,16 @@ instance DecodeAeson Rewards where pure $ rewardAddress /\ Coin coin type LovelaceDelta = Coin + data RewardPot = Reserves | Treasury derive instance Generic RewardPot _ + instance Show RewardPot where show = genericShow instance DecodeAeson RewardPot where - decodeAeson = aesonString $ \rewardPot -> + decodeAeson = aesonString \rewardPot -> case rewardPot of "reserves" -> Right Reserves "treasury" -> Right Treasury @@ -742,11 +754,12 @@ newtype OgmiosWithdrawls = OgmiosWithdrawls (Map OgmiosRewardAddress Coin) derive instance Generic OgmiosWithdrawls _ derive instance Newtype OgmiosWithdrawls _ + instance Show OgmiosWithdrawls where show = genericShow instance DecodeAeson OgmiosWithdrawls where - decodeAeson = aesonObject $ \obj -> do + decodeAeson = aesonObject \obj -> do let withdrawlList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) OgmiosWithdrawls <<< Map.fromFoldable <$> @@ -773,7 +786,7 @@ instance Show OgmiosAuxiliaryData where show = genericShow instance DecodeAeson OgmiosAuxiliaryData where - decodeAeson = aesonObject $ \o -> do + decodeAeson = aesonObject \o -> do hash <- o .: "hash" body <- o .: "body" >>= ( aesonObject $ \obj -> do @@ -789,7 +802,7 @@ instance DecodeAeson OgmiosAuxiliaryData where pure $ OgmiosAuxiliaryData { hash, body } parseMetadata :: Aeson -> Either JsonDecodeError GeneralTransactionMetadata -parseMetadata = aesonObject $ \o -> do +parseMetadata = aesonObject \o -> do let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) GeneralTransactionMetadata <<< Map.fromFoldable <$> traverse decodeMetadata metadata @@ -805,24 +818,22 @@ parseMetadata = aesonObject $ \o -> do pure $ label /\ metadatum decodeMetadatum :: Aeson -> Either JsonDecodeError TransactionMetadatum - decodeMetadatum = aesonObject $ \o -> do + decodeMetadatum = aesonObject \o -> do case (Array.head $ ForeignObject.toUnfoldable o) of Just ("MetadataMap" /\ metadatum) -> decodeMetadataMap metadatum - Just ("MetadataList" /\ metadatum) -> map MetadataList $ aesonArray + Just ("MetadataList" /\ metadatum) -> MetadataList <$> aesonArray (traverse decodeMetadatum) metadatum - Just ("Int" /\ metadatum) -> map Int $ decodeAeson metadatum - Just ("Bytes" /\ metadatum) -> map Bytes $ decodeAeson metadatum - Just ("Text" /\ metadatum) -> map Text $ decodeAeson metadatum + Just ("Int" /\ metadatum) -> Int <$> decodeAeson metadatum + Just ("Bytes" /\ metadatum) -> Bytes <$> decodeAeson metadatum + Just ("Text" /\ metadatum) -> Text <$> decodeAeson metadatum _ -> Left $ TypeMismatch "Expected a TransactionMetadatum" decodeMetadataMap :: Aeson -> Either JsonDecodeError TransactionMetadatum - decodeMetadataMap = aesonObject $ \o -> do - let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) - MetadataMap <<< Map.fromFoldable <$> - ( for metadata \(Tuple k v) -> - Tuple <$> (decodeMetadatum $ fromString k) <*> decodeMetadatum v - ) + decodeMetadataMap = aesonObject \o -> do + MetadataMap <<< Map.fromFoldable <$> traverse + (bitraverse (decodeMetadatum <<< fromString) decodeMetadatum) + (ForeignObject.toUnfoldable o :: Array (String /\ Aeson)) type ValidityInterval = { invalidBefore :: Maybe BigInt @@ -836,18 +847,16 @@ instance Show Network where show = genericShow instance DecodeAeson Network where - decodeAeson = aesonObject $ \o -> do - network <- getField o "network" + decodeAeson = aesonString \network -> case network of "mainnet" -> Right Mainnet "testnet" -> Right Testnet _ -> unexpectedValueError network --- parser for ValidityInterval parseValidityInterval :: Aeson -> Either JsonDecodeError ValidityInterval -parseValidityInterval = aesonObject $ \o -> do - invalidBefore <- getFieldOptional o "invalidBefore" - invalidHereafter <- getFieldOptional o "invalidHereafter" +parseValidityInterval = aesonObject \o -> do + invalidBefore <- o .:? "invalidBefore" + invalidHereafter <- o .:? "invalidHereafter" pure { invalidBefore, invalidHereafter } newtype Update = Update @@ -861,15 +870,16 @@ instance Show Update where show = genericShow instance DecodeAeson Update where - decodeAeson = aesonObject $ \o -> do - epoch <- getField o "epoch" - proposal <- getField o "proposal" + decodeAeson = aesonObject \o -> do + epoch <- o .: "epoch" + proposal <- o .: "proposal" pure $ Update { epoch, proposal } newtype Proposal = Proposal (Map String OgmiosProtocolParameters) derive instance Generic Proposal _ derive instance Newtype Proposal _ + instance Show Proposal where show = genericShow @@ -887,6 +897,7 @@ instance DecodeAeson Proposal where pure $ string /\ opp type Nonce = String + type Ratio = String newtype ProtocolVersion = ProtocolVersion @@ -897,14 +908,15 @@ newtype ProtocolVersion = ProtocolVersion derive instance Generic ProtocolVersion _ derive instance Newtype ProtocolVersion _ + instance Show ProtocolVersion where show = genericShow instance DecodeAeson ProtocolVersion where decodeAeson = aesonObject $ \o -> do - major <- getField o "major" - minor <- getField o "minor" - patch <- getFieldOptional' o "patch" + major <- o .: "major" + minor <- o .: "minor" + patch <- o .:? "patch" pure $ ProtocolVersion { major, minor, patch } unexpectedValueError :: forall a. String -> Either JsonDecodeError a @@ -1096,7 +1108,7 @@ instance DecodeAeson PoolParametersR where pure $ PoolParametersR $ Map.fromFoldable kvs decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters -decodePoolParameters = \objParams -> do +decodePoolParameters objParams = do vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrf" pledge <- objParams .: "pledge" cost <- objParams .: "cost" @@ -1704,7 +1716,7 @@ aesonArray -> Either JsonDecodeError a aesonArray = caseAesonArray (Left (TypeMismatch "Expected Array")) --- helper for assuming we get an string +-- Helper that decodes a string aesonString :: forall (a :: Type) . (String -> Either JsonDecodeError a) @@ -1743,7 +1755,7 @@ parseTxOut = aesonObject $ \o -> do parseScript :: Object Aeson -> Either JsonDecodeError ScriptRef parseScript script = - case (Array.head $ ForeignObject.toUnfoldable script) of + case Array.head $ ForeignObject.toUnfoldable script of Just ("plutus:v1" /\ plutusScript) -> parsePlutusScriptWithLang PlutusV1 plutusScript From 6fa2ad10e96c3b8969afdb9c5d869dd600a73510 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 11 Apr 2023 14:51:56 +0300 Subject: [PATCH 145/478] Fix typo --- doc/contract-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contract-environment.md b/doc/contract-environment.md index 58d17ec75..3c549e351 100644 --- a/doc/contract-environment.md +++ b/doc/contract-environment.md @@ -27,7 +27,7 @@ If only one `Contract` is ever executed, just using `runContract` is perfectly f ### Following the bracket pattern -[Bracket pattern](https://wiki.haskell.org/Bracket_pattern) in functional programming world is commonly used to safely manage resources. In our case, `withContractEnv` should be used to initialize and finalize a `ContractEnv`. `withContractEnv` should be used to run a `Contract` within the environment: +[Bracket pattern](https://wiki.haskell.org/Bracket_pattern) in functional programming world is commonly used to safely manage resources. In our case, `withContractEnv` should be used to initialize and finalize a `ContractEnv`. `runContractEnv` should be used to run a `Contract` within the environment: ```purescript withContractEnv :: forall (a :: Type). ContractParams -> (ContractEnv -> Aff a) -> Aff a From 572d6bae46e8a53c8fd4349a7ad7b4d6245c8e61 Mon Sep 17 00:00:00 2001 From: Renegatto <46404781+Renegatto@users.noreply.github.com> Date: Sat, 15 Apr 2023 00:53:03 +0200 Subject: [PATCH 146/478] Derive Ring-like numeric instances for Coin --- src/Internal/Cardano/Types/Value.purs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 5c56bdd4c..ace38f689 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -131,7 +131,7 @@ import Test.QuickCheck.Gen (Gen, chooseInt, suchThat, vectorOf) -- to `split` and `negate` (it's just 6 functions) in total without the need of -- a somewhat meaningless typeclass. --- We could write a Ring instance to get `negate` but I'm not sure this would +-- We could write a Group instance to get `negate` but I'm not sure this would -- make much sense for Value. Plutus uses a custom AdditiveGroup. -- We could define a Data.Group although zero-valued tokens don't degenerate -- from our map currently - I don't think we'd want this behaviour. @@ -160,6 +160,10 @@ derive newtype instance Ord Coin derive newtype instance DecodeAeson Coin derive newtype instance EncodeAeson Coin derive newtype instance Equipartition Coin +derive newtype instance Semiring Coin +derive newtype instance Ring Coin +derive newtype instance CommutativeRing Coin +derive newtype instance EuclideanRing Coin instance Arbitrary Coin where arbitrary = Coin <<< fromInt <$> suchThat arbitrary (_ >= zero) From bdef6ce1e2ac0fdd505dae0e930d8e6ca8fafd47 Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 15 Apr 2023 01:04:37 +0200 Subject: [PATCH 147/478] Make CHANGELOG entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4ed85d2f..f4b5524b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,7 +55,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] ### Added - +- Added several `Ring`-like numeric instances for `Coin` ([#1485](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1485)) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) - **Lace wallet support** - ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) From 9b0992db688f01124670b75065c37b773d06bcfe Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 15 Apr 2023 01:10:05 +0200 Subject: [PATCH 148/478] Derive ToData and FromData for PoolPubKeyHash newtype --- src/Internal/Cardano/Types/Transaction.purs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index d118568db..ced2e3b82 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -622,6 +622,8 @@ derive instance Newtype PoolPubKeyHash _ derive instance Eq PoolPubKeyHash derive instance Ord PoolPubKeyHash derive instance Generic PoolPubKeyHash _ +derive newtype instance ToData PoolPubKeyHash +derive newtype instance FromData PoolPubKeyHash instance EncodeAeson PoolPubKeyHash where encodeAeson (PoolPubKeyHash kh) = From a3a40485b16358cb38056615397cbe6f9193d7c1 Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 15 Apr 2023 01:10:19 +0200 Subject: [PATCH 149/478] Make CHANGELOG entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4ed85d2f..2bb82852e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,7 +55,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] ### Added - +- Added `ToData` and `FromData` instances for `PoolPubKeyHash` ([#1483](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1483)) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) - **Lace wallet support** - ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) From ed610ea60ec78f5ce645ff7c4b4de89dff6a14b1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 16 Apr 2023 15:06:19 +0400 Subject: [PATCH 150/478] Remove the use of Effect from slot/time functions --- src/Internal/Contract/WaitUntilSlot.purs | 25 ++++++------- src/Internal/ProcessConstraints.purs | 10 +++--- src/Internal/Types/Interval.purs | 45 +++++++++++------------- test/BalanceTx/Time.purs | 7 ++-- test/Plutip/Contract.purs | 13 +++++-- test/Types/Interval.purs | 13 ++++--- 6 files changed, 57 insertions(+), 56 deletions(-) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index 3ec3acb4c..62c331798 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -8,7 +8,6 @@ module Ctl.Internal.Contract.WaitUntilSlot import Prelude import Contract.Log (logTrace') -import Contract.Monad (liftContractE) import Control.Monad.Error.Class (liftEither) import Control.Monad.Reader (asks) import Ctl.Internal.Contract (getChainTip) @@ -30,7 +29,7 @@ import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Bifunctor (lmap) import Data.BigInt as BigInt import Data.DateTime.Instant (unInstant) -import Data.Either (either, hush) +import Data.Either (either) import Data.Int as Int import Data.Newtype (unwrap, wrap) import Data.Time.Duration (Milliseconds(Milliseconds), Seconds) @@ -57,11 +56,12 @@ waitUntilSlot futureSlot = do $ lmap (const $ error "Unable to get current Era summary") $ findSlotEraSummary eraSummaries slot getLag eraSummaries systemStart slot >>= logLag slotLengthMs - futureTime <- - liftEffect - (slotToPosixTime eraSummaries systemStart futureSlot) - >>= lmap (show >>> append "Unable to convert Slot to POSIXTime: ") - >>> liftContractE + futureTime <- slotToPosixTime eraSummaries systemStart futureSlot + # lmap + ( show >>> append "Unable to convert Slot to POSIXTime: " >>> + error + ) + # liftEither delayTime <- estimateDelayUntil futureTime liftAff $ delay delayTime let @@ -100,8 +100,9 @@ getLag -> Slot -> Contract Milliseconds getLag eraSummaries sysStart nowSlot = do - nowPosixTime <- liftEffect (slotToPosixTime eraSummaries sysStart nowSlot) >>= - hush >>> liftM (error "Unable to convert Slot to POSIXTime") + nowPosixTime <- slotToPosixTime eraSummaries sysStart nowSlot + # lmap (error <<< append "Unable to convert Slot to POSIXTime: " <<< show) + # liftEither nowMs <- unwrap <<< unInstant <$> liftEffect now logTrace' $ "getLag: current slot: " <> BigNum.toString (unwrap nowSlot) @@ -178,9 +179,9 @@ slotToEndPOSIXTime slot = do eraSummaries <- liftAff $ queryHandle.getEraSummaries >>= either (liftEffect <<< throw <<< show) pure - futureTime <- liftEffect $ - slotToPosixTime eraSummaries systemStart futureSlot - >>= hush >>> liftM (error "Unable to convert Slot to POSIXTime") + futureTime <- slotToPosixTime eraSummaries systemStart futureSlot + # lmap (error <<< append "Unable to convert Slot to POSIXTime: " <<< show) + # liftEither -- We assume that a slot is 1000 milliseconds here. -- TODO Don't pure ((wrap <<< BigInt.fromInt $ -1) + futureTime) diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 99424caf1..31729f998 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -51,7 +51,7 @@ import Ctl.Internal.Cardano.Types.Value import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.Helpers (liftM) +import Ctl.Internal.Helpers (liftEither, liftM) import Ctl.Internal.IsData (class IsData) import Ctl.Internal.NativeScripts (nativeScriptHash) import Ctl.Internal.Plutus.Conversion @@ -607,11 +607,9 @@ processConstraint mpsMap osMap c = do queryHandle.getEraSummaries >>= either (liftEffect <<< throw <<< show) pure runExceptT do - ({ timeToLive, validityStartInterval }) <- ExceptT $ liftEffect $ - posixTimeRangeToTransactionValidity eraSummaries - systemStart - posixTimeRange - <#> lmap (CannotConvertPOSIXTimeRange posixTimeRange) + ({ timeToLive, validityStartInterval }) <- liftEither $ + posixTimeRangeToTransactionValidity eraSummaries systemStart + posixTimeRange # lmap (CannotConvertPOSIXTimeRange posixTimeRange) _cpsTransaction <<< _body <<< _Newtype %= _ { ttl = timeToLive diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 2b72ffc87..6f13edd7c 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -79,7 +79,7 @@ import Aeson , (.:) ) import Control.Monad.Error.Class (throwError) -import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) +import Control.Monad.Except (runExcept) import Ctl.Internal.FromData (class FromData, fromData, genericFromData) import Ctl.Internal.Helpers ( contentsProp @@ -135,7 +135,6 @@ import Data.NonEmpty ((:|)) import Data.Show.Generic (genericShow) import Data.Tuple (uncurry) import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) import Foreign.Object (Object) import Math (trunc, (%)) as Math import Partial.Unsafe (unsafePartial) @@ -703,8 +702,8 @@ slotToPosixTime :: EraSummaries -> SystemStart -> Slot - -> Effect (Either SlotToPosixTimeError POSIXTime) -slotToPosixTime eraSummaries sysStart slot = runExceptT do + -> Either SlotToPosixTimeError POSIXTime +slotToPosixTime eraSummaries sysStart slot = runExcept do -- Find current era: currentEra <- liftEither $ findSlotEraSummary eraSummaries slot -- Convert absolute slot (relative to System start) to relative slot of era @@ -940,8 +939,8 @@ posixTimeToSlot :: EraSummaries -> SystemStart -> POSIXTime - -> Effect (Either PosixTimeToSlotError Slot) -posixTimeToSlot eraSummaries sysStart pt'@(POSIXTime pt) = runExceptT do + -> Either PosixTimeToSlotError Slot +posixTimeToSlot eraSummaries sysStart pt'@(POSIXTime pt) = runExcept do -- Get POSIX time for system start: sysStartPosix <- liftM CannotGetBigIntFromNumber' $ sysStartUnixTime sysStart -- Ensure the time we are converting is after the system start, otherwise @@ -1057,12 +1056,11 @@ posixTimeRangeToSlotRange :: EraSummaries -> SystemStart -> POSIXTimeRange - -> Effect (Either PosixTimeToSlotError SlotRange) + -> Either PosixTimeToSlotError SlotRange posixTimeRangeToSlotRange eraSummaries sysStart - range = sequenceInterval <$> - sequenceInterval (posixTimeToSlot eraSummaries sysStart <$> range) + range = sequenceInterval (posixTimeToSlot eraSummaries sysStart <$> range) -- | Converts a `SlotRange` to `POSIXTimeRange` given an `EraSummaries` and -- | `SystemStart` queried from Ogmios. @@ -1070,12 +1068,11 @@ slotRangeToPosixTimeRange :: EraSummaries -> SystemStart -> SlotRange - -> Effect (Either SlotToPosixTimeError POSIXTimeRange) + -> Either SlotToPosixTimeError POSIXTimeRange slotRangeToPosixTimeRange eraSummaries sysStart - range = sequenceInterval <$> - sequenceInterval (slotToPosixTime eraSummaries sysStart <$> range) + range = sequenceInterval (slotToPosixTime eraSummaries sysStart <$> range) type TransactionValiditySlot = { validityStartInterval :: Maybe Slot, timeToLive :: Maybe Slot } @@ -1110,9 +1107,9 @@ posixTimeRangeToTransactionValidity :: EraSummaries -> SystemStart -> POSIXTimeRange - -> Effect (Either PosixTimeToSlotError TransactionValiditySlot) + -> Either PosixTimeToSlotError TransactionValiditySlot posixTimeRangeToTransactionValidity es ss = - map (map slotRangeToTransactionValidity) <<< posixTimeRangeToSlotRange es ss + map slotRangeToTransactionValidity <<< posixTimeRangeToSlotRange es ss data ToOnChainPosixTimeRangeError = PosixTimeToSlotError' PosixTimeToSlotError @@ -1262,18 +1259,18 @@ toOnchainPosixTimeRange :: EraSummaries -> SystemStart -> POSIXTimeRange - -> Effect (Either ToOnChainPosixTimeRangeError OnchainPOSIXTimeRange) -toOnchainPosixTimeRange es ss ptr = runExceptT do + -> Either ToOnChainPosixTimeRangeError OnchainPOSIXTimeRange +toOnchainPosixTimeRange es ss ptr = runExcept do { validityStartInterval, timeToLive } <- - ExceptT $ posixTimeRangeToTransactionValidity es ss ptr - <#> lmap PosixTimeToSlotError' + liftEither $ posixTimeRangeToTransactionValidity es ss ptr + # lmap PosixTimeToSlotError' case validityStartInterval, timeToLive of Nothing, Nothing -> liftEither $ Right $ wrap always - Just s, Nothing -> ExceptT $ slotToPosixTime es ss s - <#> bimap SlotToPosixTimeError' (from >>> wrap) - Nothing, Just s -> ExceptT $ slotToPosixTime es ss s - <#> bimap SlotToPosixTimeError' (to >>> wrap) + Just s, Nothing -> liftEither $ slotToPosixTime es ss s + # bimap SlotToPosixTimeError' (from >>> wrap) + Nothing, Just s -> liftEither $ slotToPosixTime es ss s + # bimap SlotToPosixTimeError' (to >>> wrap) Just s1, Just s2 -> do - t1 <- ExceptT $ slotToPosixTime es ss s1 <#> lmap SlotToPosixTimeError' - t2 <- ExceptT $ slotToPosixTime es ss s2 <#> lmap SlotToPosixTimeError' + t1 <- liftEither $ slotToPosixTime es ss s1 # lmap SlotToPosixTimeError' + t2 <- liftEither $ slotToPosixTime es ss s2 # lmap SlotToPosixTimeError' liftEither $ Right $ wrap $ mkFiniteInterval t1 t2 diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 7a00a92a8..e537fdf9f 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -155,8 +155,7 @@ toPosixTime :: Slot -> Contract POSIXTime toPosixTime time = do eraSummaries <- getEraSummaries systemStart <- getSystemStart - eitherTime <- liftEffect $ slotToPosixTime eraSummaries systemStart time - case eitherTime of + case slotToPosixTime eraSummaries systemStart time of Left e -> (throwError <<< error <<< show) e Right value -> pure value @@ -164,9 +163,7 @@ toPosixTimeRange :: Interval Slot -> Contract (Interval POSIXTime) toPosixTimeRange range = do eraSummaries <- getEraSummaries systemStart <- getSystemStart - eitherRange <- liftEffect $ - slotRangeToPosixTimeRange eraSummaries systemStart range - case eitherRange of + case slotRangeToPosixTimeRange eraSummaries systemStart range of Left e -> (throwError <<< error <<< show) e Right value -> pure value diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index dcf973a89..9f57592b7 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -16,7 +16,7 @@ import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos ) as BalanceTxConstraints -import Contract.Chain (currentTime) +import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Log (logInfo') import Contract.Metadata @@ -25,6 +25,7 @@ import Contract.Metadata , TransactionMetadatumLabel(TransactionMetadatumLabel) ) import Contract.Monad (Contract, liftContractE, liftContractM, liftedE, liftedM) +import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( Datum(Datum) , PlutusData(Bytes, Integer, List) @@ -57,7 +58,7 @@ import Contract.Test.Plutip , withStakeKey , withWallets ) -import Contract.Time (getEraSummaries) +import Contract.Time (Slot(Slot), getEraSummaries) import Contract.Transaction ( BalanceTxError(BalanceInsufficientError) , DataHash @@ -190,6 +191,14 @@ import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit suite = do + group "WaitUntilSlot" do + test "wait for slot far in the future" do + withWallets unit \_ -> do + -- Plutip increases last known slot by 80 at a time + void $ waitUntilSlot $ Slot $ BigNum.fromInt 10 + void $ waitUntilSlot $ Slot $ BigNum.fromInt 160 + void $ waitUntilSlot $ Slot $ BigNum.fromInt 161 + void $ waitUntilSlot $ Slot $ BigNum.fromInt 241 group "Regressions" do skip $ test "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index c06af813e..727e1d521 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -164,12 +164,11 @@ testPosixTimeToSlot eraSummaries sysStart = do -> POSIXTime -> Effect Unit idTest es ss transf posixTime = do - posixTimeToSlot es ss posixTime >>= case _ of + case posixTimeToSlot es ss posixTime of Left err -> throwError $ error $ show err Right slot -> do - ePosixTime <- slotToPosixTime es ss slot either (throwError <<< error <<< show) (shouldEqual $ transf posixTime) - ePosixTime + $ slotToPosixTime es ss slot testSlotToPosixTime :: EraSummaries -> SystemStart -> Effect Unit testSlotToPosixTime eraSummaries sysStart = do @@ -190,11 +189,11 @@ testSlotToPosixTime eraSummaries sysStart = do where idTest :: EraSummaries -> SystemStart -> Slot -> Effect Unit idTest es ss slot = do - slotToPosixTime es ss slot >>= case _ of + case slotToPosixTime es ss slot of Left err -> throwError $ error $ show err Right posixTime -> do - eSlot <- posixTimeToSlot es ss posixTime - either (throwError <<< error <<< show) (shouldEqual slot) eSlot + either (throwError <<< error <<< show) (shouldEqual slot) + $ posixTimeToSlot es ss posixTime mkSlot :: Int -> Slot mkSlot = Slot <<< BigNum.fromInt @@ -215,7 +214,7 @@ testPosixTimeToSlotError eraSummaries sysStart = do -> PosixTimeToSlotError -> Effect Unit errTest es ss posixTime expectedErr = do - posixTimeToSlot es ss posixTime >>= case _ of + case posixTimeToSlot es ss posixTime of Left err -> err `shouldEqual` expectedErr Right _ -> throwError $ error $ "Test should have failed giving: " <> show From 7dadb6dd9446bf04b9c87ef34d61b7ef9702432b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 16 Apr 2023 15:18:50 +0400 Subject: [PATCH 151/478] Make it possible to use waitUntilSlot with a slot far in the future --- src/Internal/Contract/WaitUntilSlot.purs | 101 +++++++++++++++-------- 1 file changed, 66 insertions(+), 35 deletions(-) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index 62c331798..b52778dcd 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -8,7 +8,7 @@ module Ctl.Internal.Contract.WaitUntilSlot import Prelude import Contract.Log (logTrace') -import Control.Monad.Error.Class (liftEither) +import Control.Monad.Error.Class (liftEither, liftMaybe) import Control.Monad.Reader (asks) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) @@ -16,9 +16,10 @@ import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Chain as Chain -import Ctl.Internal.Types.EraSummaries (EraSummaries) +import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries)) import Ctl.Internal.Types.Interval ( POSIXTime(POSIXTime) + , SlotToPosixTimeError(CannotFindSlotInEraSummaries) , findSlotEraSummary , getSlotLength , slotToPosixTime @@ -26,11 +27,14 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural as Natural import Ctl.Internal.Types.SystemStart (SystemStart) +import Data.Array (length, mapMaybe) import Data.Bifunctor (lmap) import Data.BigInt as BigInt import Data.DateTime.Instant (unInstant) -import Data.Either (either) +import Data.Either (Either(Right, Left), either) +import Data.Foldable (maximum) import Data.Int as Int +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) import Data.Time.Duration (Milliseconds(Milliseconds), Seconds) import Effect.Aff (Milliseconds, delay) @@ -41,12 +45,12 @@ import Effect.Now (now) -- | The returned slot will be no less than the slot provided as argument. waitUntilSlot :: Slot -> Contract Chain.Tip -waitUntilSlot futureSlot = do +waitUntilSlot targetSlot = do queryHandle <- getQueryHandle { delay: retryDelay } <- asks $ _.timeParams >>> _.waitUntilSlot getChainTip >>= case _ of tip@(Chain.Tip (Chain.ChainTip { slot })) - | slot >= futureSlot -> pure tip + | slot >= targetSlot -> pure tip | otherwise -> do { systemStart } <- asks _.ledgerConstants eraSummaries <- liftAff $ @@ -56,34 +60,52 @@ waitUntilSlot futureSlot = do $ lmap (const $ error "Unable to get current Era summary") $ findSlotEraSummary eraSummaries slot getLag eraSummaries systemStart slot >>= logLag slotLengthMs - futureTime <- slotToPosixTime eraSummaries systemStart futureSlot - # lmap - ( show >>> append "Unable to convert Slot to POSIXTime: " >>> - error - ) - # liftEither - delayTime <- estimateDelayUntil futureTime - liftAff $ delay delayTime - let - -- Repeatedly check current slot until it's greater than or equal to futureAbsSlot - fetchRepeatedly :: Contract Chain.Tip - fetchRepeatedly = - getChainTip >>= case _ of - currentTip@(Chain.Tip (Chain.ChainTip { slot: currentSlot_ })) - | currentSlot_ >= futureSlot -> pure currentTip - | otherwise -> do - liftAff $ delay $ Milliseconds slotLengthMs - getLag eraSummaries systemStart currentSlot_ - >>= logLag slotLengthMs + case slotToPosixTime eraSummaries systemStart targetSlot of + Left err@(CannotFindSlotInEraSummaries _) -> do + case latestEndSlotInEraSummaries eraSummaries of + Nothing -> liftEffect $ throw $ + "Unable to convert Slot to POSIXTime: " <> show err + Just latest -> do + logTrace' $ + "waitUntilSlot: Target slot is too far in the future, waiting for this slot first: " + <> show latest + -- latest - 1 + prevLatest <- + liftMaybe + ( error + "waitUntilSlot: Impossible happened: negative slot" + ) $ + wrap <$> BigNum.fromBigInt + (BigNum.toBigInt (unwrap latest) - one) + void $ waitUntilSlot prevLatest + waitUntilSlot targetSlot + Left err -> do + liftEffect $ throw $ "Unable to convert Slot to POSIXTime: " <> + show err + Right futureTime -> do + delayTime <- estimateDelayUntil futureTime + liftAff $ delay delayTime + let + -- Repeatedly check current slot until it's greater than or equal to futureAbsSlo t + fetchRepeatedly :: Contract Chain.Tip + fetchRepeatedly = + getChainTip >>= case _ of + currentTip@ + (Chain.Tip (Chain.ChainTip { slot: currentSlot_ })) + | currentSlot_ >= targetSlot -> pure currentTip + | otherwise -> do + liftAff $ delay $ Milliseconds slotLengthMs + getLag eraSummaries systemStart currentSlot_ + >>= logLag slotLengthMs + fetchRepeatedly + Chain.TipAtGenesis -> do + liftAff $ delay retryDelay fetchRepeatedly - Chain.TipAtGenesis -> do - liftAff $ delay retryDelay - fetchRepeatedly - fetchRepeatedly + fetchRepeatedly Chain.TipAtGenesis -> do -- We just retry until the tip moves from genesis liftAff $ delay retryDelay - waitUntilSlot futureSlot + waitUntilSlot targetSlot where logLag :: Number -> Milliseconds -> Contract Unit logLag slotLengthMs (Milliseconds lag) = do @@ -100,9 +122,8 @@ getLag -> Slot -> Contract Milliseconds getLag eraSummaries sysStart nowSlot = do - nowPosixTime <- slotToPosixTime eraSummaries sysStart nowSlot + nowPosixTime <- liftEither $ slotToPosixTime eraSummaries sysStart nowSlot # lmap (error <<< append "Unable to convert Slot to POSIXTime: " <<< show) - # liftEither nowMs <- unwrap <<< unInstant <$> liftEffect now logTrace' $ "getLag: current slot: " <> BigNum.toString (unwrap nowSlot) @@ -172,16 +193,26 @@ currentTime = currentSlot >>= slotToEndPOSIXTime -- see https://github.com/input-output-hk/plutus-apps/blob/fb8a39645e532841b6e38d42ecb957f1945833a5/plutus-ledger/src/Ledger/TimeSlot.hs slotToEndPOSIXTime :: Slot -> Contract POSIXTime slotToEndPOSIXTime slot = do - futureSlot <- liftM (error "Unable to advance slot") + targetSlot <- liftM (error "Unable to advance slot") $ wrap <$> BigNum.add (unwrap slot) (BigNum.fromInt 1) { systemStart } <- asks _.ledgerConstants queryHandle <- getQueryHandle eraSummaries <- liftAff $ queryHandle.getEraSummaries >>= either (liftEffect <<< throw <<< show) pure - futureTime <- slotToPosixTime eraSummaries systemStart futureSlot - # lmap (error <<< append "Unable to convert Slot to POSIXTime: " <<< show) - # liftEither + futureTime <- liftEither $ + slotToPosixTime eraSummaries systemStart targetSlot + # lmap (error <<< append "Unable to convert Slot to POSIXTime: " <<< show) -- We assume that a slot is 1000 milliseconds here. -- TODO Don't pure ((wrap <<< BigInt.fromInt $ -1) + futureTime) + +-- | Finds the latest end slot in `EraSummaries` (if any). +latestEndSlotInEraSummaries + :: EraSummaries + -> Maybe Slot +latestEndSlotInEraSummaries (EraSummaries sums) + | length sums == 0 = Nothing + | otherwise = sums + # mapMaybe (unwrap >>> _.end >>> map (unwrap >>> _.slot)) + # maximum From 4eaf6435178bb022c049a440eab5efb142f44791 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 16 Apr 2023 15:25:36 +0400 Subject: [PATCH 152/478] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4ed85d2f..5898bb4a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) +- Slot to/from POSIXTime conversion functions now live outside of `Effect` ([#1490](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1490)) - All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): - `checkNewUtxosAtAddress` -> `assertNewUtxosAtAddress` @@ -88,6 +89,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- `waitUntilSlot` can now be used with a slot far in the future ([#1490](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1490)) - `Unable to convert Slot to POSIXTime` error of `waitUntilSlot` doesn't omit important error details anymore ([#1458](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1458)) - Performance issues when using Eternl in multi-address mode ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `ConnectToNuFi` now reexported in `Contract.Wallet` ([#1435](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1435)) From d9ef85a964a49ea8c9d1898599aceb45a341db65 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 16 Apr 2023 15:06:10 +0300 Subject: [PATCH 153/478] Update tx-chaining.md --- doc/tx-chaining.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/tx-chaining.md b/doc/tx-chaining.md index bab932953..1655a889f 100644 --- a/doc/tx-chaining.md +++ b/doc/tx-chaining.md @@ -6,4 +6,5 @@ Transaction chaining on Cardano is the ability to send transactions that depend In case the transactions come from multiple actors, some off-chain data delivery mechanism should be used - it's up to the application developers to implement it. -The only piece of data that is actually needed is the additional UTxOs that the CTL query layer is not (yet) aware of. `mustUseAdditionalUtxos` [balancer constraint](./balancing.md) can be used for that, as shown in the [transaction chaining example](../examples/TxChaining.purs). +The only piece of data that is actually needed is the additional UTxOs that the CTL query layer is not (yet) aware of. `mustUseAdditionalUtxos` [balancer constraint](./balancing.md) can be used for that, as shown in the [transaction chaining example](../examples/TxChaining.purs). Additionally, `mustNotSpendUtxosWithOutRefs` can be used to forbid spending UTxOs that have been consumed. + From 5cd6f5fd9571ba4a176b2d33c02822b95bee67f2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 20 Apr 2023 16:09:03 +0400 Subject: [PATCH 154/478] Add serialization/deserialization roundtrip test for Vkeywitness --- src/Internal/Serialization/ToBytes.purs | 4 ++++ test/Deserialization.purs | 27 +++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Internal/Serialization/ToBytes.purs b/src/Internal/Serialization/ToBytes.purs index 56f6a6f10..f46868ccd 100644 --- a/src/Internal/Serialization/ToBytes.purs +++ b/src/Internal/Serialization/ToBytes.purs @@ -29,6 +29,8 @@ import Ctl.Internal.Serialization.Types , TransactionUnspentOutput , TransactionWitnessSet , Value + , Vkeywitness + , Vkeywitnesses ) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) @@ -59,6 +61,8 @@ type SerializableData = Address |+| TransactionWitnessSet |+| Value |+| VRFKeyHash + |+| Vkeywitness + |+| Vkeywitnesses -- Add more as needed diff --git a/test/Deserialization.purs b/test/Deserialization.purs index fe15d425f..c8c56c8cf 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -2,7 +2,7 @@ module Test.Ctl.Deserialization (suite) where import Prelude -import Contract.Address (ByteArray) +import Contract.Prim.ByteArray (ByteArray) import Contract.TextEnvelope ( TextEnvelope(TextEnvelope) , TextEnvelopeType(Other) @@ -12,11 +12,12 @@ import Control.Monad.Error.Class (class MonadThrow, liftMaybe) import Ctl.Examples.OtherTypeTextEnvelope (otherTypeTextEnvelope) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T +import Ctl.Internal.Cardano.Types.Transaction (Vkeywitness) import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) as T import Ctl.Internal.Deserialization.BigInt as DB -import Ctl.Internal.Deserialization.FromBytes (fromBytes) +import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.NativeScript as NSD import Ctl.Internal.Deserialization.PlutusData as DPD import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD @@ -30,8 +31,11 @@ import Ctl.Internal.Serialization (convertTxInput, convertTxOutput) as Serializa import Ctl.Internal.Serialization.BigInt as SB import Ctl.Internal.Serialization.NativeScript (convertNativeScript) as NSS import Ctl.Internal.Serialization.PlutusData as SPD +import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.ToBytes (toBytes) as Serialization import Ctl.Internal.Serialization.Types (TransactionUnspentOutput) +import Ctl.Internal.Serialization.Types (Vkeywitness) as Serialization +import Ctl.Internal.Serialization.WitnessSet (convertVkeywitness) as Serialization import Ctl.Internal.Serialization.WitnessSet as SW import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (fromBigInt, toBigInt) as BigNum @@ -39,8 +43,10 @@ import Ctl.Internal.Types.Transaction (TransactionInput) as T import Data.Array as Array import Data.BigInt as BigInt import Data.Either (hush) +import Data.Foldable (fold) import Data.Maybe (isJust, isNothing) import Data.Newtype (unwrap, wrap) +import Data.Traversable (traverse) import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (class MonadEffect, liftEffect) @@ -203,6 +209,21 @@ suite = do liftEffect $ testNativeScript longNativeScript group "WitnessSet - deserialization is inverse to serialization" do let + vkeyWitnessesRoundtrip + :: ∀ (m :: Type -> Type) + . MonadEffect m + => MonadThrow Error m + => Array Vkeywitness + -> m Unit + vkeyWitnessesRoundtrip vks = do + cslVks <- traverse (liftEffect <<< Serialization.convertVkeywitness) + vks + let cslVksBytes = toBytes <$> cslVks + (_ :: Array Serialization.Vkeywitness) <- traverse + (liftEffect <<< fromBytesEffect) + cslVksBytes + pure unit + witnessSetRoundTrip :: ∀ (m :: Type -> Type) . MonadEffect m @@ -214,6 +235,8 @@ suite = do fromBytes (wrap fixture) >>= convertWitnessSet ws1 <- liftEffect $ SW.convertWitnessSet ws0 ws2 <- errMaybe "Failed deserialization" $ convertWitnessSet ws1 + let vkeys = fold (unwrap ws2).vkeys + vkeyWitnessesRoundtrip vkeys ws0 `shouldEqual` ws2 -- value representation let wsBytes = unwrap $ Serialization.toBytes ws1 wsBytes `shouldEqual` fixture -- byte representation From 187af3667988109bc5712918303e27e52d05a08b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 May 2023 12:16:50 +0400 Subject: [PATCH 155/478] WIP: add options to plutip-server --- flake.lock | 8 +-- flake.nix | 2 +- src/Contract/Test/Plutip.purs | 50 +++++++++++++++---- src/Internal/Plutip/Server.purs | 61 ++++------------------- src/Internal/Plutip/Types.purs | 12 ++++- src/Internal/Test/E2E/Runner.purs | 6 ++- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +-- templates/ctl-scaffold/test/Main.purs | 31 +----------- test/Plutip/Common.purs | 32 ++---------- test/Plutip/Contract.purs | 23 ++++++++- test/Plutip/Staking.purs | 6 ++- 12 files changed, 107 insertions(+), 132 deletions(-) diff --git a/flake.lock b/flake.lock index 5aec4a782..69679295f 100644 --- a/flake.lock +++ b/flake.lock @@ -12533,17 +12533,17 @@ ] }, "locked": { - "lastModified": 1678283073, - "narHash": "sha256-eh//MOBA7+Lmzu4fhhqpKBTlgTJxEq36jPQkVYwu6Ts=", + "lastModified": 1682621645, + "narHash": "sha256-JXvTEmGzLDPfzLJxw+jvtOTR9fyIWlqm5a7IjRLBtGQ=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "89cf822c213f6a4278a88c8a8bb982696c649e76", + "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "plutip", - "rev": "89cf822c213f6a4278a88c8a8bb982696c649e76", + "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 54e0fb900..4004c7bf6 100644 --- a/flake.nix +++ b/flake.nix @@ -44,7 +44,7 @@ db-sync.url = "github:input-output-hk/cardano-db-sync/13.1.0.0"; # Plutip server related inputs - plutip.url = "github:mlabs-haskell/plutip/89cf822c213f6a4278a88c8a8bb982696c649e76"; + plutip.url = "github:mlabs-haskell/plutip/1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158"; plutip-nixpkgs.follows = "plutip/nixpkgs"; haskell-nix.url = "github:mlabs-haskell/haskell.nix"; iohk-nix = { diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 9c1371d82..47df5ee5c 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -2,6 +2,7 @@ -- | environment. module Contract.Test.Plutip ( testPlutipContracts + , defaultPlutipConfig , module X , PlutipTest ) where @@ -10,21 +11,14 @@ import Prelude import Contract.Monad (runContractInEnv) as X import Contract.Wallet (withKeyWallet) as X -import Ctl.Internal.Plutip.Server - ( runPlutipContract - , withPlutipContractEnv - ) as X +import Ctl.Internal.Contract.Hooks (emptyHooks) +import Ctl.Internal.Plutip.Server (runPlutipContract, withPlutipContractEnv) as X import Ctl.Internal.Plutip.Server (testPlutipContracts) as Server import Ctl.Internal.Plutip.Types (PlutipConfig) -import Ctl.Internal.Plutip.Types - ( PlutipConfig - ) as X +import Ctl.Internal.Plutip.Types (PlutipConfig) as X import Ctl.Internal.Test.ContractTest (ContractTest) import Ctl.Internal.Test.ContractTest (ContractTest) as Server -import Ctl.Internal.Test.ContractTest - ( noWallet - , withWallets - ) as X +import Ctl.Internal.Test.ContractTest (noWallet, withWallets) as X import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution @@ -33,6 +27,10 @@ import Ctl.Internal.Test.UtxoDistribution , UtxoAmount , withStakeKey ) as X +import Data.Log.Level (LogLevel(Trace)) +import Data.Maybe (Maybe(Nothing)) +import Data.Time.Duration (Seconds(Seconds)) +import Data.UInt as UInt import Effect.Aff (Aff) import Mote (MoteT) @@ -45,3 +43,33 @@ testPlutipContracts = Server.testPlutipContracts -- | Type synonym for backwards compatibility. type PlutipTest = ContractTest + +-- | A default value for `PlutipConfig` type. +defaultPlutipConfig :: PlutipConfig +defaultPlutipConfig = + { host: "127.0.0.1" + , port: UInt.fromInt 8082 + , logLevel: Trace + -- Server configs are used to deploy the corresponding services. + , ogmiosConfig: + { port: UInt.fromInt 1338 + , host: "127.0.0.1" + , secure: false + , path: Nothing + } + , kupoConfig: + { port: UInt.fromInt 1443 + , host: "127.0.0.1" + , secure: false + , path: Nothing + } + , suppressLogs: true + , customLogger: Nothing + , hooks: emptyHooks + , clusterConfig: + { slotLength: Seconds 0.1 + , epochSize: Nothing + , maxTxSize: Nothing + , raiseExUnitsToMax: false + } + } diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index f54048f45..4e4daa6d9 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -25,54 +25,18 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Contract.Monad - ( buildBackend - , getLedgerConstants - , mkQueryHandle - , stopContractEnv - ) +import Ctl.Internal.Contract.Monad (buildBackend, getLedgerConstants, mkQueryHandle, stopContractEnv) import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) import Ctl.Internal.Plutip.PortCheck (isPortAvailable) -import Ctl.Internal.Plutip.Spawn - ( ManagedProcess - , NewOutputAction(Success, NoOp) - , OnSignalRef - , cleanupOnSigint - , cleanupTmpDir - , removeOnSignal - , spawn - , stop - ) -import Ctl.Internal.Plutip.Types - ( ClusterStartupParameters - , ClusterStartupRequest(ClusterStartupRequest) - , PlutipConfig - , PrivateKeyResponse(PrivateKeyResponse) - , StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure) - , StopClusterRequest(StopClusterRequest) - , StopClusterResponse - ) +import Ctl.Internal.Plutip.Spawn (ManagedProcess, NewOutputAction(Success, NoOp), OnSignalRef, cleanupOnSigint, cleanupTmpDir, removeOnSignal, spawn, stop) +import Ctl.Internal.Plutip.Types (ClusterStartupParameters, ClusterStartupRequest(ClusterStartupRequest), PlutipConfig, PrivateKeyResponse(PrivateKeyResponse), StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure), StopClusterRequest(StopClusterRequest), StopClusterResponse) import Ctl.Internal.Plutip.Utils (tmpdir) -import Ctl.Internal.Service.Error - ( ClientError(ClientDecodeJsonError, ClientHttpError) - ) -import Ctl.Internal.Test.ContractTest - ( ContractTest(ContractTest) - , ContractTestPlan(ContractTestPlan) - , ContractTestPlanHandler - ) +import Ctl.Internal.Service.Error (ClientError(ClientDecodeJsonError, ClientHttpError)) +import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest), ContractTestPlan(ContractTestPlan), ContractTestPlanHandler) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Test.UtxoDistribution - ( class UtxoDistribution - , InitialUTxODistribution - , InitialUTxOs - , decodeWallets - , encodeDistribution - , keyWallets - , transferFundsFromEnterpriseToBase - ) +import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution, InitialUTxODistribution, InitialUTxOs, decodeWallets, encodeDistribution, keyWallets, transferFundsFromEnterpriseToBase) import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array @@ -83,7 +47,7 @@ import Data.Foldable (sum) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe(Nothing, Just), maybe) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String @@ -96,12 +60,7 @@ import Data.UInt as UInt import Effect.Aff (Aff, Milliseconds(Milliseconds), try) import Effect.Aff (bracket) as Aff import Effect.Aff.Class (liftAff) -import Effect.Aff.Retry - ( RetryPolicy - , constantDelay - , limitRetriesByCumulativeDelay - , recovering - ) +import Effect.Aff.Retry (RetryPolicy, constantDelay, limitRetriesByCumulativeDelay, recovering) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import Effect.Ref (Ref) @@ -416,8 +375,10 @@ startPlutipCluster cfg keysToGenerate = do $ encodeAeson $ ClusterStartupRequest { keysToGenerate - , slotLength: cfg.clusterConfig.slotLength , epochSize + , slotLength: cfg.clusterConfig.slotLength + , maxTxSize: cfg.clusterConfig.maxTxSize + , raiseExUnitsToMax: cfg.clusterConfig.raiseExUnitsToMax } , responseFormat = Affjax.ResponseFormat.string , headers = [ Header.ContentType (wrap "application/json") ] diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 0d923e0ff..ec90eac27 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -63,7 +63,11 @@ type PlutipConfig = , suppressLogs :: Boolean , hooks :: Hooks , clusterConfig :: - { slotLength :: Seconds } + { slotLength :: Seconds + , epochSize :: Maybe UInt + , maxTxSize :: Maybe UInt + , raiseExUnitsToMax :: Boolean + } } type FilePath = String @@ -74,16 +78,20 @@ newtype ClusterStartupRequest = ClusterStartupRequest { keysToGenerate :: InitialUTxODistribution , epochSize :: UInt , slotLength :: Seconds + , maxTxSize :: Maybe UInt + , raiseExUnitsToMax :: Boolean } instance EncodeAeson ClusterStartupRequest where encodeAeson ( ClusterStartupRequest - { keysToGenerate, epochSize, slotLength: Seconds slotLength } + { keysToGenerate, epochSize, slotLength: Seconds slotLength, maxTxSize, raiseExUnitsToMax } ) = encodeAeson { keysToGenerate , epochSize , slotLength: unsafePartial partialFiniteNumber slotLength + , maxTxSize + , raiseExUnitsToMax } newtype PrivateKeyResponse = PrivateKeyResponse PrivateKey diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 58ac5a54a..c640a1053 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -211,7 +211,11 @@ buildPlutipConfig options = , customLogger: Just \_ _ -> pure unit , hooks: emptyHooks , clusterConfig: - { slotLength: Seconds 0.05 } + { slotLength: Seconds 0.05 + , epochSize: Nothing + , maxTxSize: Nothing + , raiseExUnitsToMax: false + } } -- | Plutip does not generate private stake keys for us, so we make one and diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index adf201ea6..7449fdc85 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -353,7 +353,7 @@ let additions = , "web-html" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "12d0e1c8034bb0058658b7b91bf9dcbfc41f412d" + , version = "10a88faa2e6237aafc90568e3488f3421517af63" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index b8e49d35c..95c87c5a6 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "f46247826949b752638e86b0e1e75fac3f4c08ec"; + version = "10a88faa2e6237aafc90568e3488f3421517af63"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "f46247826949b752638e86b0e1e75fac3f4c08ec"; - sha256 = "1hziwm9p81rgk2xi9afdhwbip0id220ifxl9nrhfpfcnj9br0d4m"; + rev = "10a88faa2e6237aafc90568e3488f3421517af63"; + sha256 = "1k0iwvxx3hznf9zngn9zf44y320yqabmwj3l6zafgwbpxbmv8fdx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index cda7a7fbb..d3f13d060 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -4,12 +4,11 @@ module Test.Scaffold.Main (main, suite) where import Contract.Prelude -import Contract.Config (emptyHooks) import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Plutip ( InitialUTxOs - , PlutipConfig , PlutipTest + , defaultPlutipConfig , testPlutipContracts , withKeyWallet , withWallets @@ -17,8 +16,6 @@ import Contract.Test.Plutip import Contract.Test.Utils (exitCode, interruptOnSignal) import Data.BigInt (fromInt) as BigInt import Data.Posix.Signal (Signal(SIGINT)) -import Data.Time.Duration (Seconds(Seconds)) -import Data.UInt (fromInt) as UInt import Effect.Aff ( Milliseconds(Milliseconds) , cancelWith @@ -35,7 +32,7 @@ main = interruptOnSignal SIGINT =<< launchAff do flip cancelWith (effectCanceler (exitCode 1)) do interpretWithConfig defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } $ - testPlutipContracts config suite + testPlutipContracts defaultPlutipConfig suite suite :: TestPlanM PlutipTest Unit suite = do @@ -50,27 +47,3 @@ suite = do withWallets distribution \wallet -> do withKeyWallet wallet do contract - -config :: PlutipConfig -config = - { host: "127.0.0.1" - , port: UInt.fromInt 8082 - , logLevel: Trace - , ogmiosConfig: - { port: UInt.fromInt 1338 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , kupoConfig: - { port: UInt.fromInt 1443 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , customLogger: Nothing - , suppressLogs: true - , hooks: emptyHooks - , clusterConfig: - { slotLength: Seconds 0.05 } - } diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 1f7c7987e..c4a864b2c 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -5,42 +5,18 @@ module Test.Ctl.Plutip.Common import Prelude -import Contract.Config (emptyHooks) +import Contract.Test.Plutip (defaultPlutipConfig) import Contract.Wallet (privateKeyFromBytes) import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Ctl.Internal.Wallet.Key (PrivateStakeKey) -import Data.Log.Level (LogLevel(Trace)) -import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Maybe (fromJust) import Data.Newtype (wrap) -import Data.Time.Duration (Seconds(Seconds)) -import Data.UInt (fromInt) as UInt +import Data.UInt as UInt import Partial.Unsafe (unsafePartial) config :: PlutipConfig -config = - { host: "127.0.0.1" - , port: UInt.fromInt 8082 - , logLevel: Trace - -- Server configs are used to deploy the corresponding services. - , ogmiosConfig: - { port: UInt.fromInt 1338 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , kupoConfig: - { port: UInt.fromInt 1443 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , suppressLogs: true - , customLogger: Nothing - , hooks: emptyHooks - , clusterConfig: - { slotLength: Seconds 0.1 } - } +config = defaultPlutipConfig { clusterConfig = defaultPlutipConfig.clusterConfig { epochSize = pure $ UInt.fromInt 0, maxTxSize = pure $ UInt.fromInt 15000, raiseExUnitsToMax = true }} privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 9f57592b7..d0682d0d4 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -101,6 +101,7 @@ import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds +import Ctl.Examples.ExUnits as ExUnits import Ctl.Examples.AwaitTxConfirmedWithTimeout as AwaitTxConfirmedWithTimeout import Ctl.Examples.BalanceTxConstraints as BalanceTxConstraintsExample import Ctl.Examples.Cip30 as Cip30 @@ -168,7 +169,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) -import Mote (group, skip, test) +import Mote (group, skip, test, only) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -236,6 +237,26 @@ suite = do withWallets distribution \_ → pure unit + only $ group "Plutip interface" do + test + "ExUnits limits" + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 5_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- ExUnits.exUnitsScript (BigInt.fromInt 1000) + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- ExUnits.payToExUnits vhash + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + ExUnits.spendFromExUnits vhash validator txId + group "Contract interface" do test "Collateral selection: UTxO with lower amount is selected" do let diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index cc86b9944..b5c51dbff 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -699,4 +699,8 @@ suite = do $ getPubKeyHashDelegationsAndRewards aliceStakePkh rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore where - config = Common.config { clusterConfig = { slotLength: Seconds 0.05 } } + config = + Common.config + { clusterConfig = + Common.config.clusterConfig { slotLength = Seconds 0.05 } + } From c0bba01e1aa1ee000b29a6c4a3b7677e3134e284 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 May 2023 12:30:35 +0400 Subject: [PATCH 156/478] Add docs for custom query layers --- README.md | 1 + doc/custom-query-layers.md | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 doc/custom-query-layers.md diff --git a/README.md b/README.md index 9fe30a5b7..82dd94eac 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Transaction chaining](./doc/tx-chaining.md) - [Ada staking support](./doc/staking.md) - [SECP256k1 support (CIP-49)](./doc/secp256k1-support.md) +- [Custom query layers](./doc/custom-query-layers.md) - [FAQs](./doc/faq.md) - [Feature overview video](./doc/video-intro.md) - [Development workflows for CTL](./doc/development.md) diff --git a/doc/custom-query-layers.md b/doc/custom-query-layers.md new file mode 100644 index 000000000..aad710a5b --- /dev/null +++ b/doc/custom-query-layers.md @@ -0,0 +1,17 @@ + + +# Custom query layers in CTL + +## Adding a new backend + +CTL can be extended with custom (user) query layers if needed. At this moment it can be done by forking. + +Every query CTL uses, except of backend-specific ones, goes through a [query handle](https://github.com/Plutonomicon/cardano-transaction-lib/blob/10a88faa2e6237aafc90568e3488f3421517af63/src/Internal/Contract/QueryHandle/Type.purs#L36). + +A new [backend option](https://github.com/Plutonomicon/cardano-transaction-lib/blob/10a88faa2e6237aafc90568e3488f3421517af63/src/Internal/Contract/QueryBackend.purs#L57) should be added, with corresponding [initialization code](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/src/Internal/Contract/QueryHandle.purs) + +## Replacing some queries in existing backend + +Substituting the query layer for a few functions only (assuming the original backend remains available for initial connection) can be done without forking CTL. + +`ContractEnv` contains a QueryHandle (inside a `Reader`), so a [`local`](https://pursuit.purescript.org/packages/purescript-transformers/6.0.0/docs/Control.Monad.Reader.Class#v:local) call with a function that replaces some `QueryHandle` record entries will just work. From 798af01bb9dfd8d799e9a0435648b5aac3de72e9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 18:42:33 +0400 Subject: [PATCH 157/478] Add a test for raiseExUnitsToMax plutip cluster config option --- examples/ExUnits.js | 13 ++++ examples/ExUnits.purs | 131 ++++++++++++++++++++++++++++++++ fixtures/scripts/exunits.plutus | 1 + src/Internal/Plutip/Server.purs | 57 ++++++++++++-- src/Internal/Plutip/Types.purs | 7 +- test/Plutip.purs | 12 ++- test/Plutip/Common.purs | 3 +- test/Plutip/Contract.purs | 23 +----- test/Plutip/ExUnits.purs | 61 +++++++++++++++ 9 files changed, 274 insertions(+), 34 deletions(-) create mode 100644 examples/ExUnits.js create mode 100644 examples/ExUnits.purs create mode 100644 fixtures/scripts/exunits.plutus create mode 100644 test/Plutip/ExUnits.purs diff --git a/examples/ExUnits.js b/examples/ExUnits.js new file mode 100644 index 000000000..466366252 --- /dev/null +++ b/examples/ExUnits.js @@ -0,0 +1,13 @@ +let script; +if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + script = require("Scripts/exunits.plutus"); +} else { + const fs = require("fs"); + const path = require("path"); + script = fs.readFileSync( + path.resolve(__dirname, "../../fixtures/scripts/exunits.plutus"), + "utf8" + ); +} + +exports.exUnits = script; diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs new file mode 100644 index 000000000..a64cc808f --- /dev/null +++ b/examples/ExUnits.purs @@ -0,0 +1,131 @@ +module Ctl.Examples.ExUnits where + +import Contract.Prelude + +import Contract.Address (scriptHashAddress) +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Credential (Credential(PubKeyCredential)) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.PlutusData + ( PlutusData + , Redeemer(Redeemer) + , toData + , unitDatum + ) +import Contract.ScriptLookups as Lookups +import Contract.Scripts + ( Validator(Validator) + , ValidatorHash + , validatorHash + ) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.Transaction + ( TransactionHash + , _input + , awaitTxConfirmed + , lookupTxHash + , submitTxFromConstraints + ) +import Contract.TxConstraints (TxConstraints) +import Contract.TxConstraints as Constraints +import Contract.Utxos (utxosAt) +import Contract.Value as Value +import Contract.Wallet (ownStakePubKeyHashes) +import Control.Monad.Error.Class (liftMaybe) +import Data.Array (head) +import Data.BigInt (BigInt) +import Data.BigInt as BigInt +import Data.Lens (view) +import Effect.Exception (error) + +main :: Effect Unit +main = example testnetNamiConfig + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.ExUnits" + validator <- exUnitsScript + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- payToExUnits vhash + awaitTxConfirmed txId + logInfo' "Tx submitted successfully, Try to spend locked values" + spendFromExUnits (BigInt.fromInt 1000) vhash validator txId + +example :: ContractParams -> Effect Unit +example cfg = launchAff_ do + runContract cfg contract + +payToExUnits :: ValidatorHash -> Contract TransactionHash +payToExUnits vhash = do + -- Send to own stake credential. This is used to test mustPayToScriptAddress. + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes + let + constraints :: TxConstraints Unit Unit + constraints = + case mbStakeKeyHash of + Nothing -> + Constraints.mustPayToScript vhash unitDatum + Constraints.DatumWitness + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + Just stakeKeyHash -> + Constraints.mustPayToScriptAddress vhash + (PubKeyCredential $ unwrap stakeKeyHash) + unitDatum + Constraints.DatumWitness + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + + lookups :: Lookups.ScriptLookups PlutusData + lookups = mempty + + submitTxFromConstraints lookups constraints + +-- | ExUnits script loops a given number of iterations provided as redeemer. +spendFromExUnits + :: BigInt + -> ValidatorHash + -> Validator + -> TransactionHash + -> Contract Unit +spendFromExUnits iters vhash validator txId = do + -- Use own stake credential if available + mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes + let + scriptAddress = + scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) + utxos <- utxosAt scriptAddress + txInput <- + liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + (view _input <$> head (lookupTxHash txId utxos)) + let + lookups :: Lookups.ScriptLookups PlutusData + lookups = Lookups.validator validator + <> Lookups.unspentOutputs utxos + + constraints :: TxConstraints Unit Unit + constraints = + Constraints.mustSpendScriptOutput txInput (Redeemer $ toData iters) + + spendTxId <- submitTxFromConstraints lookups constraints + awaitTxConfirmed spendTxId + logInfo' "Successfully spent locked values." + +foreign import exUnits :: String + +exUnitsScript :: Contract Validator +exUnitsScript = + liftMaybe (error "Error decoding exUnits") do + envelope <- decodeTextEnvelope exUnits + script <- plutusScriptV2FromEnvelope envelope + -- hush $ Validator <$> applyArgs script [ ] + pure $ Validator script diff --git a/fixtures/scripts/exunits.plutus b/fixtures/scripts/exunits.plutus new file mode 100644 index 000000000..7168c1dc1 --- /dev/null +++ b/fixtures/scripts/exunits.plutus @@ -0,0 +1 @@ +{"cborHex":"59079f59079c0100003233223232323232323232323232323233223232323232222323253353232301b0023333573466e1cd55cea801a4000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd405805cd5d0a80619a80b00b9aba1500b33501601835742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02c0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01801781689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03002f02d135573ca00226ea8004d5d09aba2500223263202b33573805805605226aae7940044dd50009aba1500533501675c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c028027025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00660206ae84d5d1280191931900c99ab9c01a019017375a008202e264c6402e66ae712401134661696c656420766572696669636174696f6e00017135573ca00226ea800448c88c008dd6000990009aa80b911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355014223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200923333573466e1d40092000200923263200633573800e00c00800626aae74dd5000a4c24002921035054310032001355003225335333573466e2400520000040031004130023370200290010910010910008891918008009119801980100100081","description":"","type":"PlutusScriptV2"} diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4e4daa6d9..87eea8170 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -25,18 +25,54 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Contract.Monad (buildBackend, getLedgerConstants, mkQueryHandle, stopContractEnv) +import Ctl.Internal.Contract.Monad + ( buildBackend + , getLedgerConstants + , mkQueryHandle + , stopContractEnv + ) import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) import Ctl.Internal.Plutip.PortCheck (isPortAvailable) -import Ctl.Internal.Plutip.Spawn (ManagedProcess, NewOutputAction(Success, NoOp), OnSignalRef, cleanupOnSigint, cleanupTmpDir, removeOnSignal, spawn, stop) -import Ctl.Internal.Plutip.Types (ClusterStartupParameters, ClusterStartupRequest(ClusterStartupRequest), PlutipConfig, PrivateKeyResponse(PrivateKeyResponse), StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure), StopClusterRequest(StopClusterRequest), StopClusterResponse) +import Ctl.Internal.Plutip.Spawn + ( ManagedProcess + , NewOutputAction(Success, NoOp) + , OnSignalRef + , cleanupOnSigint + , cleanupTmpDir + , removeOnSignal + , spawn + , stop + ) +import Ctl.Internal.Plutip.Types + ( ClusterStartupParameters + , ClusterStartupRequest(ClusterStartupRequest) + , PlutipConfig + , PrivateKeyResponse(PrivateKeyResponse) + , StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure) + , StopClusterRequest(StopClusterRequest) + , StopClusterResponse + ) import Ctl.Internal.Plutip.Utils (tmpdir) -import Ctl.Internal.Service.Error (ClientError(ClientDecodeJsonError, ClientHttpError)) -import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest), ContractTestPlan(ContractTestPlan), ContractTestPlanHandler) +import Ctl.Internal.Service.Error + ( ClientError(ClientDecodeJsonError, ClientHttpError) + ) +import Ctl.Internal.Test.ContractTest + ( ContractTest(ContractTest) + , ContractTestPlan(ContractTestPlan) + , ContractTestPlanHandler + ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution, InitialUTxODistribution, InitialUTxOs, decodeWallets, encodeDistribution, keyWallets, transferFundsFromEnterpriseToBase) +import Ctl.Internal.Test.UtxoDistribution + ( class UtxoDistribution + , InitialUTxODistribution + , InitialUTxOs + , decodeWallets + , encodeDistribution + , keyWallets + , transferFundsFromEnterpriseToBase + ) import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array @@ -47,7 +83,7 @@ import Data.Foldable (sum) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) +import Data.Maybe (Maybe(Nothing, Just), maybe) import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String @@ -60,7 +96,12 @@ import Data.UInt as UInt import Effect.Aff (Aff, Milliseconds(Milliseconds), try) import Effect.Aff (bracket) as Aff import Effect.Aff.Class (liftAff) -import Effect.Aff.Retry (RetryPolicy, constantDelay, limitRetriesByCumulativeDelay, recovering) +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import Effect.Ref (Ref) diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index ec90eac27..13a880d5b 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -85,7 +85,12 @@ newtype ClusterStartupRequest = ClusterStartupRequest instance EncodeAeson ClusterStartupRequest where encodeAeson ( ClusterStartupRequest - { keysToGenerate, epochSize, slotLength: Seconds slotLength, maxTxSize, raiseExUnitsToMax } + { keysToGenerate + , epochSize + , slotLength: Seconds slotLength + , maxTxSize + , raiseExUnitsToMax + } ) = encodeAeson { keysToGenerate , epochSize diff --git a/test/Plutip.purs b/test/Plutip.purs index 0fa163606..a4866cf2c 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,7 +4,7 @@ module Test.Ctl.Plutip import Prelude -import Contract.Test.Plutip (noWallet, testPlutipContracts) +import Contract.Test.Plutip (PlutipConfig, noWallet, testPlutipContracts) import Contract.Test.Utils (exitCode, interruptOnSignal) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Plutip.Server @@ -34,6 +34,7 @@ import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert import Test.Ctl.Plutip.Contract.NetworkId as NetworkId +import Test.Ctl.Plutip.ExUnits as ExUnits import Test.Ctl.Plutip.Logging as Logging import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface @@ -47,6 +48,11 @@ main = interruptOnSignal SIGINT =<< launchAff do Utils.interpretWithConfig defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } $ group "Plutip" do + group "ExUnits - normal limits" do + testPlutipContracts config $ ExUnits.mkFailingSuite 3000 + testPlutipContracts config $ ExUnits.mkSuite 2550 + group "ExUnits - relaxed limits" do + testPlutipContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 testPlutipContracts config Assert.suite Logging.suite testStartPlutipCluster @@ -58,6 +64,10 @@ main = interruptOnSignal SIGINT =<< launchAff do Contract.suite UtxoDistribution.suite +configWithMaxExUnits :: PlutipConfig +configWithMaxExUnits = config + { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } + testStartPlutipCluster :: TestPlanM (Aff Unit) Unit testStartPlutipCluster = group "Server" do test "startPlutipCluster / stopPlutipCluster" do diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index c4a864b2c..267dc89a7 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -12,11 +12,10 @@ import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Ctl.Internal.Wallet.Key (PrivateStakeKey) import Data.Maybe (fromJust) import Data.Newtype (wrap) -import Data.UInt as UInt import Partial.Unsafe (unsafePartial) config :: PlutipConfig -config = defaultPlutipConfig { clusterConfig = defaultPlutipConfig.clusterConfig { epochSize = pure $ UInt.fromInt 0, maxTxSize = pure $ UInt.fromInt 15000, raiseExUnitsToMax = true }} +config = defaultPlutipConfig privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index d0682d0d4..9f57592b7 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -101,7 +101,6 @@ import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds -import Ctl.Examples.ExUnits as ExUnits import Ctl.Examples.AwaitTxConfirmedWithTimeout as AwaitTxConfirmedWithTimeout import Ctl.Examples.BalanceTxConstraints as BalanceTxConstraintsExample import Ctl.Examples.Cip30 as Cip30 @@ -169,7 +168,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) -import Mote (group, skip, test, only) +import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -237,26 +236,6 @@ suite = do withWallets distribution \_ → pure unit - only $ group "Plutip interface" do - test - "ExUnits limits" - do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - withKeyWallet alice do - validator <- ExUnits.exUnitsScript (BigInt.fromInt 1000) - let vhash = validatorHash validator - logInfo' "Attempt to lock value" - txId <- ExUnits.payToExUnits vhash - awaitTxConfirmed txId - logInfo' "Try to spend locked values" - ExUnits.spendFromExUnits vhash validator txId - group "Contract interface" do test "Collateral selection: UTxO with lower amount is selected" do let diff --git a/test/Plutip/ExUnits.purs b/test/Plutip/ExUnits.purs new file mode 100644 index 000000000..73c433234 --- /dev/null +++ b/test/Plutip/ExUnits.purs @@ -0,0 +1,61 @@ +module Test.Ctl.Plutip.ExUnits + ( mkSuite + , mkFailingSuite + ) where + +import Prelude + +import Contract.Log (logInfo') +import Contract.Scripts (validatorHash) +import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) +import Contract.Transaction (awaitTxConfirmed) +import Ctl.Examples.ExUnits as ExUnits +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Data.BigInt as BigInt +import Data.Either (isLeft) +import Effect.Aff (try) +import Mote (test) +import Test.Spec.Assertions (shouldSatisfy) + +mkSuite :: Int -> TestPlanM ContractTest Unit +mkSuite n = do + test ("ExUnits.plutus script with " <> show n <> " iterations - must succeed") + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 500_000_000 + , BigInt.fromInt 500_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- ExUnits.exUnitsScript + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- ExUnits.payToExUnits vhash + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + ExUnits.spendFromExUnits (BigInt.fromInt n) vhash validator txId + +mkFailingSuite :: Int -> TestPlanM ContractTest Unit +mkFailingSuite n = do + test ("ExUnits.plutus script with " <> show n <> " iterations - must fail") + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 500_000_000 + , BigInt.fromInt 500_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- ExUnits.exUnitsScript + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- ExUnits.payToExUnits vhash + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + res <- try $ ExUnits.spendFromExUnits (BigInt.fromInt n) vhash + validator + txId + res `shouldSatisfy` isLeft From ab22e5aed3c793c2634fa83c6935d96d8fd3d739 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 19:07:20 +0400 Subject: [PATCH 158/478] Update the docs for plutip integration - add info about cluster options and remove outdated info --- doc/plutip-testing.md | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 08a1db5e2..ea57f3fce 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -1,6 +1,6 @@ # CTL integration with Plutip -[Plutip](https://github.com/mlabs-haskell/plutip) is a tool to run private Cardano testnets. CTL provides integration with Plutip via a [`plutip-server` binary](https://github.com/mlabs-haskell/plutip/pull/79) that exposes an HTTP interface to control local Cardano clusters. +[Plutip](https://github.com/mlabs-haskell/plutip) is a tool to run private Cardano testnets. CTL provides integration with Plutip via [`plutip-server` binary](https://github.com/Plutonomicon/cardano-transaction-lib/tree/develop/plutip-server) that exposes an HTTP interface to control local Cardano clusters. **Table of Contents** @@ -26,15 +26,15 @@ CTL depends on a number of binaries in the `$PATH` to execute Plutip tests: All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them. -The services are NOT run by `docker-compose` as is the case with `launchCtlRuntime`: they are started and stopped on each CTL `Contract` execution by CTL. +The services are NOT run by `docker-compose` as is the case with `launchCtlRuntime`: they are started and stopped on each CTL `ContractTest` execution by CTL itself. ## Testing contracts -There are two entry points to the testing interface: `Contract.Test.Plutip.runPlutipContract` and `Contract.Test.Plutip.testPlutipContracts`. They work similarly, the difference being that `runPlutipContract` accepts a single `Contract` and runs in `Aff`, whereas `testPlutipContracts` transforms a `MoteT` test tree of `PlutipTest` into `Aff`. [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining tests, and combined with `testPlutipContracts` you can use a single plutip instance to run multiple indepedent tests. +There are two entry points to the testing interface: `Contract.Test.Plutip.runPlutipContract` and `Contract.Test.Plutip.testPlutipContracts`. They work similarly, the difference being that `runPlutipContract` accepts a single `Contract` and runs in `Aff`, whereas `testPlutipContracts` interprets a `MoteT` (test tree of `ContractTest`s) into `Aff`. [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining tests, and combined with `testPlutipContracts` you can use a single plutip instance to run multiple indepedent tests. ### Testing in Aff context -`Contract.Test.Plutip.runPlutipContract`'s function type is as follows: +`Contract.Test.Plutip.runPlutipContract`'s function type is defined as follows: ```purescript runPlutipContract @@ -48,7 +48,7 @@ runPlutipContract `distr` is a specification of how many wallets and with how much funds should be created. It should either be a `unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array` of `Array BigInt`, where each element of the `Array BigInt` specifies an UTxO amount in Lovelaces (0.000001 Ada). -The `wallets` argument is either a `Unit`, a tuple of `KeyWallet`s (with the same nesting level as in `distr`, which is guaranteed by `UtxoDistribution`) or an `Array KeyWallet`. +The `wallets` argument of the callback is either a `Unit`, a tuple of `KeyWallet`s (with the same nesting level as in `distr`, which is guaranteed by `UtxoDistribution`) or an `Array KeyWallet`. `wallets` should be pattern-matched on, and its components should be passed to `withKeyWallet`: @@ -75,7 +75,9 @@ An example `Contract` with two actors using `Array`: let distribution :: Array (Array BigInt) distribution = + -- wallet one: twu UTxOs [ [ BigInt.fromInt 1_000_000_000, BigInt.fromInt 2_000_000_000] + -- wallet two: one UTxO , [ BigInt.fromInt 2_000_000_000 ] ] runPlutipContract config distribution \wallets -> do @@ -88,11 +90,9 @@ runPlutipContract config distribution \wallets -> do In most cases at least two UTxOs per wallet are needed (one of which will be used as collateral, so it should exceed `5_000_000` Lovelace). -Note that during execution WebSocket connection errors may occur. However, payloads are re-sent after these errors, so you can ignore them. [These errors will be suppressed in the future.](https://github.com/Plutonomicon/cardano-transaction-lib/issues/670). - ### Testing with Mote -`Contract.Test.Plutip.testPlutipContracts` type is as follows: +`Contract.Test.Plutip.testPlutipContracts` type is defined as follows: ```purescript testPlutipContracts @@ -103,7 +103,7 @@ testPlutipContracts The final `MoteT` type requires the bracket, test and test building type to all be in `Aff`. The brackets cannot be ignored in the `MoteT` test runner, as it is what allows a single plutip instance to persist over multiple tests. -To create tests of type `PlutipTest`, you must either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`, the latter being a helper alias of the first: +To create tests of type `PlutipTest`, the user should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: ```purescript withWallets @@ -172,6 +172,22 @@ You can run Plutip tests via CTL's `purescriptProject` as well. After creating y } ``` +## Cluster configuration options + +`PlutipConfig` type contains `clusterConfig` record with the following options: + +```purescript +{ slotLength :: Seconds +, epochSize :: Maybe UInt +, maxTxSize :: Maybe UInt +, raiseExUnitsToMax :: Boolean +} +``` + +- `slotLength` and `epochSize` define time-related protocol parameters. Epoch size is specified in slots. +- `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive transaction size limits. +- `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling the contract with tracing in development and without it in production). + ## Using addresses with staking key components It's possible to use stake keys with Plutip. `Contract.Test.Plutip.withStakeKey` function can be used to modify the distribution spec: @@ -191,7 +207,7 @@ let Although stake keys serve no real purpose in plutip context, they allow to use base addresses, and thus allow to have the same code for plutip testing, in-browser tests and production. -Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses to base addresses, which requires a few transactions before the test can be run. Plutip can currently handle only enterprise addreses (see [this issue](https://github.com/mlabs-haskell/plutip/issues/103)). +Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses to base addresses, which requires a few transactions before the test can be run. These transactions happen on the CTL side, because Plutip can currently handle only enterprise addreses (see [this issue](https://github.com/mlabs-haskell/plutip/issues/103)). ### See also From b28e2cf52e7fb82282b4e1d4fd044b44f9571328 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 19:12:07 +0400 Subject: [PATCH 159/478] Ignore failing link check for IOHK domain --- .mlc_config.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mlc_config.json b/.mlc_config.json index 92232ab40..b93bc278f 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -2,6 +2,9 @@ "ignorePatterns": [ { "pattern": "^https://gerowallet.io" + }, + { + "pattern": "^https://iohk.io" } ], "aliveStatusCodes": [ From 527eff1891097860d97da7ea861181caef4daacb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 19:19:38 +0400 Subject: [PATCH 160/478] Update CHANGELOG --- CHANGELOG.md | 1 + doc/plutip-testing.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5898bb4a5..40c4eadbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Configuration options for Kupo in `buildCtlRuntime` ([`deferDbIndexes`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-defer-db-indexes) and [`pruneUtxo`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-prune-utxo)) ([#1448](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1448)) - `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) +- Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) ### Changed diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index ea57f3fce..ce0dfbb93 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -12,6 +12,7 @@ - [Testing with Mote](#testing-with-mote) - [Note on SIGINT](#note-on-sigint) - [Testing with Nix](#testing-with-nix) +- [Cluster configuration options](#cluster-configuration-options) - [Using addresses with staking key components](#using-addresses-with-staking-key-components) - [See also](#see-also) From 8d80a2a48c1c233f91fcfd1a8b17d46ad1314930 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 19:24:33 +0400 Subject: [PATCH 161/478] Fix formatting --- examples/ExUnits.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/ExUnits.js b/examples/ExUnits.js index 466366252..b0d16cf90 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -1,3 +1,5 @@ +/* global BROWSER_RUNTIME */ + let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/exunits.plutus"); From 213a8c2ee3c6fbee1fdce7c6f3d1fcc01af3a3ad Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 19:49:33 +0400 Subject: [PATCH 162/478] Update the template --- templates/ctl-scaffold/flake.lock | 1980 ++++++++++----------- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- 4 files changed, 960 insertions(+), 1030 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 30c2ee881..c451171db 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1,6 +1,23 @@ { "nodes": { "CHaP": { + "flake": false, + "locked": { + "lastModified": 1678160279, + "narHash": "sha256-IKbD0uqteVoo4KRcYh/QrLQ/HQJXwgCQS2Mq7grhSdM=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "e20bffc8ac331810efa671a1bb49932595fa21f6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_2": { "flake": false, "locked": { "lastModified": 1669917887, @@ -17,7 +34,7 @@ "type": "github" } }, - "CHaP_2": { + "CHaP_3": { "flake": false, "locked": { "lastModified": 1666726035, @@ -34,7 +51,7 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { "lastModified": 1666726035, @@ -51,14 +68,14 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { "flake": false, "locked": { - "lastModified": 1669289866, - "narHash": "sha256-dnRYWjYZQuNJLXsn5PdcMBPaReDYVARqc8a2grokVZ0=", + "lastModified": 1672829743, + "narHash": "sha256-lM3s0UQDxfipHbEFhmW2d5QcmKIPVsLT2ai6RnHAP84=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "c3cebaddd8b60c0b5bcef6d895adb30a79f495a8", + "rev": "551630b2c90ed9107079ab402534ed3b56db6f04", "type": "github" }, "original": { @@ -196,6 +213,22 @@ "type": "github" } }, + "HTTP_17": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -955,65 +988,22 @@ "type": "github" } }, - "blank_8": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1678211206, - "narHash": "sha256-ywBdK+f8dgcK4M/L1knNMCMDLchi2A7ci5xKzvbLgzs=", + "lastModified": 1678285155, + "narHash": "sha256-GcaiQRZhPYysINnAFPN+IyQu9S/CZA8eb5sTGZ4qfxw=", "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "b5642b01e5174c65cdfaa01460c220e6f1e0de7c", + "rev": "49269a9adb27b370209a61de2f5407945112860a", "type": "github" }, "original": { "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "type": "github" - } - }, - "bot-plutus-interface": { - "inputs": { - "CHaP": "CHaP_4", - "flake-compat": "flake-compat_18", - "haskell-nix": "haskell-nix_6", - "iohk-nix": "iohk-nix_5", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1670496765, - "narHash": "sha256-5feLJXmLFwTnGEoYmRFcGiViYU1egIlzuKbwlilTa7g=", - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "bot-plutus-interface", - "rev": "e80680777a761109eea6d47c8370aa55d318734d", + "rev": "49269a9adb27b370209a61de2f5407945112860a", "type": "github" } }, @@ -1054,10 +1044,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", "type": "github" }, "original": { @@ -1088,10 +1078,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1136,6 +1126,23 @@ } }, "cabal-32_15": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "owner": "haskell", + "repo": "cabal", + "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_16": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1152,7 +1159,7 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-32_17": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1258,10 +1265,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1323,6 +1330,23 @@ } }, "cabal-34_10": { + "flake": false, + "locked": { + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "owner": "haskell", + "repo": "cabal", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_11": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1339,7 +1363,7 @@ "type": "github" } }, - "cabal-34_11": { + "cabal-34_12": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1356,7 +1380,7 @@ "type": "github" } }, - "cabal-34_12": { + "cabal-34_13": { "flake": false, "locked": { "lastModified": 1622475795, @@ -1373,7 +1397,7 @@ "type": "github" } }, - "cabal-34_13": { + "cabal-34_14": { "flake": false, "locked": { "lastModified": 1622475795, @@ -1390,7 +1414,7 @@ "type": "github" } }, - "cabal-34_14": { + "cabal-34_15": { "flake": false, "locked": { "lastModified": 1622475795, @@ -1407,7 +1431,7 @@ "type": "github" } }, - "cabal-34_15": { + "cabal-34_16": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1424,7 +1448,7 @@ "type": "github" } }, - "cabal-34_16": { + "cabal-34_17": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1529,11 +1553,11 @@ "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1612,6 +1636,23 @@ } }, "cabal-36_11": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_12": { "flake": false, "locked": { "lastModified": 1640163203, @@ -1628,7 +1669,7 @@ "type": "github" } }, - "cabal-36_12": { + "cabal-36_13": { "flake": false, "locked": { "lastModified": 1640163203, @@ -1645,7 +1686,7 @@ "type": "github" } }, - "cabal-36_13": { + "cabal-36_14": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1662,7 +1703,7 @@ "type": "github" } }, - "cabal-36_14": { + "cabal-36_15": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1767,11 +1808,11 @@ "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1801,11 +1842,11 @@ "cabal-36_9": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640163203, + "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", "type": "github" }, "original": { @@ -1857,6 +1898,23 @@ "type": "github" } }, + "cardano-addresses": { + "flake": false, + "locked": { + "lastModified": 1664466771, + "narHash": "sha256-m8oidcV9LWU0S+NBw4wH1JdKZVict1EbKBZ6kfdEEf4=", + "owner": "input-output-hk", + "repo": "cardano-addresses", + "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-addresses", + "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "type": "github" + } + }, "cardano-configurations": { "flake": false, "locked": { @@ -1940,7 +1998,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_64" + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1642701714, @@ -1959,7 +2017,7 @@ }, "cardano-mainnet-mirror_2": { "inputs": { - "nixpkgs": "nixpkgs_66" + "nixpkgs": "nixpkgs_67" }, "locked": { "lastModified": 1642701714, @@ -1978,7 +2036,7 @@ }, "cardano-mainnet-mirror_3": { "inputs": { - "nixpkgs": "nixpkgs_67" + "nixpkgs": "nixpkgs_68" }, "locked": { "lastModified": 1642701714, @@ -1997,7 +2055,7 @@ }, "cardano-mainnet-mirror_4": { "inputs": { - "nixpkgs": "nixpkgs_72" + "nixpkgs": "nixpkgs_73" }, "locked": { "lastModified": 1642701714, @@ -2016,7 +2074,7 @@ }, "cardano-mainnet-mirror_5": { "inputs": { - "nixpkgs": "nixpkgs_74" + "nixpkgs": "nixpkgs_75" }, "locked": { "lastModified": 1642701714, @@ -2035,7 +2093,7 @@ }, "cardano-mainnet-mirror_6": { "inputs": { - "nixpkgs": "nixpkgs_75" + "nixpkgs": "nixpkgs_76" }, "locked": { "lastModified": 1642701714, @@ -2137,7 +2195,7 @@ }, "cardano-node_2": { "inputs": { - "CHaP": "CHaP_2", + "CHaP": "CHaP_3", "cardano-mainnet-mirror": "cardano-mainnet-mirror", "cardano-node-workbench": [ "ctl", @@ -2240,6 +2298,23 @@ "type": "github" } }, + "cardano-node_4": { + "flake": false, + "locked": { + "lastModified": 1667644902, + "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "type": "github" + } + }, "cardano-shell": { "flake": false, "locked": { @@ -2368,6 +2443,22 @@ "type": "github" } }, + "cardano-shell_17": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, "cardano-shell_2": { "flake": false, "locked": { @@ -2536,6 +2627,23 @@ "type": "github" } }, + "cardano-wallet_2": { + "flake": false, + "locked": { + "lastModified": 1671029634, + "narHash": "sha256-lz3bi711qORionkcfduC+AXGP6Ii+uWiVHRmRZmvfb8=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "type": "github" + } + }, "cardano-world": { "inputs": { "bitte": "bitte", @@ -2614,6 +2722,7 @@ }, "ctl": { "inputs": { + "CHaP": "CHaP", "blockfrost": "blockfrost", "cardano-configurations": "cardano-configurations", "cardano-node": [ @@ -2624,6 +2733,12 @@ "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", "flake-compat": "flake-compat_8", + "haskell-nix": "haskell-nix_3", + "iohk-nix": [ + "ctl", + "plutip", + "iohk-nix" + ], "iohk-nix-environments": "iohk-nix-environments", "kupo": "kupo", "kupo-nixos": "kupo-nixos", @@ -2634,20 +2749,25 @@ ], "ogmios": "ogmios_2", "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" + "plutip": "plutip", + "plutip-nixpkgs": [ + "ctl", + "plutip", + "nixpkgs" + ] }, "locked": { - "lastModified": 1678217358, - "narHash": "sha256-lTSQV5KWuetgtol2F4EQLYIbF4fNqRS7mC8HdFPl8cM=", + "lastModified": 1683386673, + "narHash": "sha256-Al4ErZKUoLe6GlvvAxResa9qrQNL8gMpyWc4j4IKUHA=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "f46247826949b752638e86b0e1e75fac3f4c08ec", + "rev": "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "f46247826949b752638e86b0e1e75fac3f4c08ec", + "rev": "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930", "type": "github" } }, @@ -3172,42 +3292,7 @@ "type": "github" } }, - "devshell_18": { - "inputs": { - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_2": { + "devshell_2": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3479,41 +3564,6 @@ "type": "github" } }, - "dmerge_5": { - "inputs": { - "nixlib": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, "driver": { "inputs": { "devshell": "devshell_8", @@ -3919,15 +3969,15 @@ "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -3948,54 +3998,6 @@ "type": "github" } }, - "flake-compat_20": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_21": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_22": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_3": { "flake": false, "locked": { @@ -4476,11 +4478,11 @@ }, "flake-utils_30": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4521,11 +4523,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4536,11 +4538,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4551,11 +4553,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4566,11 +4568,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4581,11 +4583,11 @@ }, "flake-utils_37": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4596,11 +4598,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4656,11 +4658,11 @@ }, "flake-utils_41": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4671,11 +4673,11 @@ }, "flake-utils_42": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4685,21 +4687,6 @@ } }, "flake-utils_43": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_44": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4714,13 +4701,13 @@ "type": "github" } }, - "flake-utils_45": { + "flake-utils_44": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4729,7 +4716,7 @@ "type": "github" } }, - "flake-utils_46": { + "flake-utils_45": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4744,28 +4731,13 @@ "type": "github" } }, - "flake-utils_47": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_48": { + "flake-utils_46": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5029,6 +5001,23 @@ "type": "github" } }, + "ghc-8.6.5-iohk_17": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, "ghc-8.6.5-iohk_2": { "flake": false, "locked": { @@ -5167,7 +5156,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_70", "utils": "utils_26" }, "locked": { @@ -5186,7 +5175,7 @@ }, "gomod2nix_2": { "inputs": { - "nixpkgs": "nixpkgs_77", + "nixpkgs": "nixpkgs_78", "utils": "utils_31" }, "locked": { @@ -5203,25 +5192,6 @@ "type": "github" } }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_81", - "utils": "utils_32" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, "hackage": { "flake": false, "locked": { @@ -5273,11 +5243,11 @@ "hackage_10": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", "type": "github" }, "original": { @@ -5305,11 +5275,11 @@ "hackage_12": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", "type": "github" }, "original": { @@ -5321,11 +5291,11 @@ "hackage_13": { "flake": false, "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", "type": "github" }, "original": { @@ -5337,11 +5307,27 @@ "hackage_14": { "flake": false, "locked": { - "lastModified": 1669338728, - "narHash": "sha256-a+/QK3TeSgzLnL1z/EkqROo3cwB6VXV3BmvkvvGPSzM=", - "owner": "input-output-hk", + "lastModified": 1667783503, + "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_15": { + "flake": false, + "locked": { + "lastModified": 1653441966, + "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", + "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "d044e9fd6eb02330eda094e3b7a61d4d23f8544a", + "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", "type": "github" }, "original": { @@ -5401,11 +5387,11 @@ "hackage_5": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1653441966, + "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", "type": "github" }, "original": { @@ -5417,11 +5403,11 @@ "hackage_6": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { @@ -5449,11 +5435,11 @@ "hackage_8": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", "type": "github" }, "original": { @@ -5465,11 +5451,11 @@ "hackage_9": { "flake": false, "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", "type": "github" }, "original": { @@ -5604,7 +5590,6 @@ "nix-tools": "nix-tools_5", "nixpkgs": [ "ctl", - "kupo-nixos", "haskell-nix", "nixpkgs-unstable" ], @@ -5615,6 +5600,46 @@ "old-ghc-nix": "old-ghc-nix_5", "stackage": "stackage_5" }, + "locked": { + "lastModified": 1674575951, + "narHash": "sha256-m1uLB0tMV3nO3O//09gNGmlxlnfwMgAQnM+MliVhofU=", + "owner": "mlabs-haskell", + "repo": "haskell.nix", + "rev": "1eaffea8eee8bc446fbc869288dab9a08f742c06", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "nix-tools": "nix-tools_6", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" + }, "locked": { "lastModified": 1654219238, "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", @@ -5630,33 +5655,33 @@ "type": "github" } }, - "haskell-nix_4": { + "haskell-nix_5": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_10", + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_11", "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_9", + "flake-utils": "flake-utils_34", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_10", "iserv-proxy": "iserv-proxy", "nixpkgs": [ "ctl", "ogmios", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11", "tullia": "tullia_2" }, "locked": { @@ -5673,31 +5698,31 @@ "type": "github" } }, - "haskell-nix_5": { + "haskell-nix_6": { "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_15", + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_16", "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "hackage": "hackage_13", - "hpc-coveralls": "hpc-coveralls_15", - "hydra": "hydra_11", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "hackage": "hackage_14", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_12", "nixpkgs": [ "ctl", "ogmios-nixos", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_15", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_16", "tullia": "tullia_3" }, "locked": { @@ -5714,44 +5739,42 @@ "type": "github" } }, - "haskell-nix_6": { + "haskell-nix_7": { "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_45", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_14", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_12", + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_17", + "flake-utils": "flake-utils_46", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "hackage": "hackage_15", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_13", + "nix-tools": "nix-tools_14", "nixpkgs": [ "ctl", "plutip", - "bot-plutus-interface", - "nixpkgs" + "haskell-nix", + "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16", - "tullia": "tullia_4" + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_17" }, "locked": { - "lastModified": 1669338917, - "narHash": "sha256-jwZ/I4VXGvpDkC/59c3rQPNBpQdTirJwXEu5KejJIHo=", - "owner": "input-output-hk", + "lastModified": 1653486569, + "narHash": "sha256-342b0LPX6kaBuEX8KZV40FwCCFre1lCtjdTQIDEt9kw=", + "owner": "mlabs-haskell", "repo": "haskell.nix", - "rev": "7f8ccbda20e5ab12780162f045656061334b531a", + "rev": "220f8a9cd166e726aea62843bdafa7ecded3375c", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "mlabs-haskell", "repo": "haskell.nix", "type": "github" } @@ -5799,15 +5822,15 @@ }, "haskellNix_10": { "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_40", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "hackage": "hackage_12", - "hpc-coveralls": "hpc-coveralls_14", - "nix-tools": "nix-tools_12", + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cardano-shell": "cardano-shell_15", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "hackage": "hackage_13", + "hpc-coveralls": "hpc-coveralls_15", + "nix-tools": "nix-tools_13", "nixpkgs": [ "ctl", "ogmios-nixos", @@ -5816,12 +5839,12 @@ "plutus-example", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_14" + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_15" }, "locked": { "lastModified": 1639098904, @@ -5878,83 +5901,43 @@ } }, "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": [ - "ctl", - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { "inputs": { "HTTP": "HTTP_7", "cabal-32": "cabal-32_7", "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", + "flake-compat": "flake-compat_10", "flake-utils": "flake-utils_30", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_6", + "hackage": [ + "ctl", + "ogmios", + "cardano-node", + "hackageNix" + ], "hpc-coveralls": "hpc-coveralls_7", - "nix-tools": "nix-tools_6", + "hydra": "hydra_9", "nixpkgs": [ "ctl", "ogmios", "cardano-node", - "node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_7", "nixpkgs-2105": "nixpkgs-2105_7", "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-2205": "nixpkgs-2205_2", "nixpkgs-unstable": "nixpkgs-unstable_9", "old-ghc-nix": "old-ghc-nix_7", "stackage": "stackage_7" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1665882789, + "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "9af167fb4343539ca99465057262f289b44f55da", "type": "github" }, "original": { @@ -5963,7 +5946,7 @@ "type": "github" } }, - "haskellNix_5": { + "haskellNix_4": { "inputs": { "HTTP": "HTTP_8", "cabal-32": "cabal-32_8", @@ -5980,8 +5963,6 @@ "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_8", @@ -6005,11 +5986,12 @@ "type": "github" } }, - "haskellNix_6": { + "haskellNix_5": { "inputs": { "HTTP": "HTTP_9", "cabal-32": "cabal-32_9", "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_9", "flake-utils": "flake-utils_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", @@ -6021,7 +6003,8 @@ "ogmios", "cardano-node", "node-snapshot", - "plutus-example", + "membench", + "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_9", @@ -6032,11 +6015,11 @@ "stackage": "stackage_9" }, "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", "type": "github" }, "original": { @@ -6045,43 +6028,38 @@ "type": "github" } }, - "haskellNix_7": { + "haskellNix_6": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_11", - "flake-utils": "flake-utils_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_10", + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cardano-shell": "cardano-shell_10", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_10", "nix-tools": "nix-tools_9", "nixpkgs": [ "ctl", - "ogmios-nixos", + "ogmios", "cardano-node", + "node-snapshot", + "plutus-example", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11" + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_10" }, "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", "type": "github" }, "original": { @@ -6090,7 +6068,7 @@ "type": "github" } }, - "haskellNix_8": { + "haskellNix_7": { "inputs": { "HTTP": "HTTP_12", "cabal-32": "cabal-32_12", @@ -6099,14 +6077,19 @@ "cardano-shell": "cardano-shell_12", "flake-utils": "flake-utils_38", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": "hackage_10", + "hackage": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "hackageNix" + ], "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_11", "nix-tools": "nix-tools_10", "nixpkgs": [ "ctl", "ogmios-nixos", "cardano-node", - "node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_12", @@ -6117,11 +6100,11 @@ "stackage": "stackage_12" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1656898207, + "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", "type": "github" }, "original": { @@ -6130,7 +6113,7 @@ "type": "github" } }, - "haskellNix_9": { + "haskellNix_8": { "inputs": { "HTTP": "HTTP_13", "cabal-32": "cabal-32_13", @@ -6147,8 +6130,6 @@ "ogmios-nixos", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_13", @@ -6172,6 +6153,48 @@ "type": "github" } }, + "haskellNix_9": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_14", + "flake-utils": "flake-utils_40", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "hackage": "hackage_12", + "hpc-coveralls": "hpc-coveralls_14", + "nix-tools": "nix-tools_12", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "cardano-node", + "node-snapshot", + "membench", + "cardano-node-snapshot", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1643073543, + "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -6300,6 +6323,22 @@ "type": "github" } }, + "hpc-coveralls_17": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, "hpc-coveralls_2": { "flake": false, "locked": { @@ -6428,6 +6467,23 @@ "type": "github" } }, + "hw-aeson": { + "flake": false, + "locked": { + "lastModified": 1660218478, + "narHash": "sha256-t4QLmGf5ytzjS0ynn6xON61J+fvBF8vf/+zsBzmw/rM=", + "owner": "haskell-works", + "repo": "hw-aeson", + "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "type": "github" + }, + "original": { + "owner": "haskell-works", + "repo": "hw-aeson", + "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "type": "github" + } + }, "hydra": { "inputs": { "nix": [ @@ -6469,9 +6525,8 @@ "nix": "nix_17", "nixpkgs": [ "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", + "ogmios", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -6496,7 +6551,8 @@ "nixpkgs": [ "ctl", "ogmios-nixos", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -6518,10 +6574,34 @@ "hydra_12": { "inputs": { "nix": "nix_19", + "nixpkgs": [ + "ctl", + "ogmios-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_13": { + "inputs": { + "nix": "nix_20", "nixpkgs": [ "ctl", "plutip", - "bot-plutus-interface", "haskell-nix", "hydra", "nix", @@ -6690,7 +6770,6 @@ "nix": "nix_14", "nixpkgs": [ "ctl", - "kupo-nixos", "haskell-nix", "hydra", "nix", @@ -6713,11 +6792,10 @@ "hydra_8": { "inputs": { "nix": "nix_15", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "haskellNix", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -6742,7 +6820,8 @@ "nixpkgs": [ "ctl", "ogmios", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -7026,14 +7105,14 @@ }, "iohk-nix-environments": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": "nixpkgs_63" }, "locked": { - "lastModified": 1674063615, - "narHash": "sha256-xz/+7zO/O+2XrnxoFOjyEc72Sdy2ieQLpDq78XG15oI=", + "lastModified": 1677230996, + "narHash": "sha256-L/PDahK725s1k+sg6MOtVG6sBiKEmgHhRjaequBRbXI=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "ccd5bf7d8168a0452d9ec504ea1b559ada7752df", + "rev": "82e833b60c47bf0f352443879af1766712e9ca6f", "type": "github" }, "original": { @@ -7112,20 +7191,13 @@ } }, "iohk-nix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "nixpkgs" - ] - }, + "flake": false, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "lastModified": 1672846257, + "narHash": "sha256-khuzjVfyNCVcsV5cHRyyb2OgWLbYLKSJlrVDNmc2Tv4=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "rev": "ca3d466ed36011bcc14290c6d36c503eb03eb71b", "type": "github" }, "original": { @@ -7411,7 +7483,7 @@ }, "kupo-nixos": { "inputs": { - "haskell-nix": "haskell-nix_3", + "haskell-nix": "haskell-nix_4", "iohk-nix": "iohk-nix_2", "kupo": [ "ctl", @@ -7631,6 +7703,22 @@ "type": "github" } }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, "lowdown-src_3": { "flake": false, "locked": { @@ -7807,22 +7895,6 @@ "type": "github" } }, - "mdbook-kroki-preprocessor_5": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, "membench": { "inputs": { "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", @@ -8045,7 +8117,7 @@ }, "n2c_3": { "inputs": { - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_37", "nixpkgs": [ "ctl", "ogmios", @@ -8071,7 +8143,7 @@ }, "n2c_4": { "inputs": { - "flake-utils": "flake-utils_44", + "flake-utils": "flake-utils_45", "nixpkgs": [ "ctl", "ogmios-nixos", @@ -8095,33 +8167,6 @@ "type": "github" } }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_48", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, "nix": { "inputs": { "lowdown-src": "lowdown-src", @@ -8278,58 +8323,30 @@ "type": "github" } }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "nixpkgs" - ] - }, + "nix-tools": { + "flake": false, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nix-tools": { + "nix-tools_10": { "flake": false, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { @@ -8338,7 +8355,7 @@ "type": "github" } }, - "nix-tools_10": { + "nix-tools_11": { "flake": false, "locked": { "lastModified": 1636018067, @@ -8354,7 +8371,7 @@ "type": "github" } }, - "nix-tools_11": { + "nix-tools_12": { "flake": false, "locked": { "lastModified": 1636018067, @@ -8370,7 +8387,7 @@ "type": "github" } }, - "nix-tools_12": { + "nix-tools_13": { "flake": false, "locked": { "lastModified": 1636018067, @@ -8386,6 +8403,22 @@ "type": "github" } }, + "nix-tools_14": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, "nix-tools_2": { "flake": false, "locked": { @@ -8453,11 +8486,11 @@ "nix-tools_6": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { @@ -8501,11 +8534,11 @@ "nix-tools_9": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -8536,8 +8569,8 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_70" + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_71" }, "locked": { "lastModified": 1658567952, @@ -8555,27 +8588,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_42", - "nixpkgs": "nixpkgs_78" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_82" + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_79" }, "locked": { "lastModified": 1658567952, @@ -8709,7 +8723,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_62", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -8730,7 +8744,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_65", + "nixpkgs": "nixpkgs_64", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -8751,7 +8765,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_66", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -8772,7 +8786,7 @@ "nix_17": { "inputs": { "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_73", + "nixpkgs": "nixpkgs_69", "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { @@ -8793,7 +8807,7 @@ "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_74", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -8814,7 +8828,7 @@ "nix_19": { "inputs": { "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_80", + "nixpkgs": "nixpkgs_77", "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { @@ -8851,6 +8865,27 @@ "type": "github" } }, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_81", + "nixpkgs-regression": "nixpkgs-regression_18" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", @@ -9172,50 +9207,6 @@ "type": "github" } }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, "nixlib": { "locked": { "lastModified": 1652576347, @@ -9325,7 +9316,23 @@ "type": "github" } }, - "nixpkgs-2003_12": { + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -9341,7 +9348,7 @@ "type": "github" } }, - "nixpkgs-2003_13": { + "nixpkgs-2003_14": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -9357,7 +9364,7 @@ "type": "github" } }, - "nixpkgs-2003_14": { + "nixpkgs-2003_15": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -9373,7 +9380,7 @@ "type": "github" } }, - "nixpkgs-2003_15": { + "nixpkgs-2003_16": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -9389,7 +9396,7 @@ "type": "github" } }, - "nixpkgs-2003_16": { + "nixpkgs-2003_17": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -9550,6 +9557,22 @@ } }, "nixpkgs-2105_10": { + "locked": { + "lastModified": 1630481079, + "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -9565,7 +9588,7 @@ "type": "github" } }, - "nixpkgs-2105_11": { + "nixpkgs-2105_12": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -9581,7 +9604,7 @@ "type": "github" } }, - "nixpkgs-2105_12": { + "nixpkgs-2105_13": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -9597,7 +9620,7 @@ "type": "github" } }, - "nixpkgs-2105_13": { + "nixpkgs-2105_14": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -9613,7 +9636,7 @@ "type": "github" } }, - "nixpkgs-2105_14": { + "nixpkgs-2105_15": { "locked": { "lastModified": 1630481079, "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", @@ -9629,7 +9652,7 @@ "type": "github" } }, - "nixpkgs-2105_15": { + "nixpkgs-2105_16": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -9645,13 +9668,13 @@ "type": "github" } }, - "nixpkgs-2105_16": { + "nixpkgs-2105_17": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -9727,11 +9750,11 @@ }, "nixpkgs-2105_6": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -9743,11 +9766,11 @@ }, "nixpkgs-2105_7": { "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -9775,11 +9798,11 @@ }, "nixpkgs-2105_9": { "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", "type": "github" }, "original": { @@ -9806,6 +9829,22 @@ } }, "nixpkgs-2111_10": { + "locked": { + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -9821,7 +9860,7 @@ "type": "github" } }, - "nixpkgs-2111_11": { + "nixpkgs-2111_12": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -9837,7 +9876,7 @@ "type": "github" } }, - "nixpkgs-2111_12": { + "nixpkgs-2111_13": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -9853,7 +9892,7 @@ "type": "github" } }, - "nixpkgs-2111_13": { + "nixpkgs-2111_14": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -9869,7 +9908,7 @@ "type": "github" } }, - "nixpkgs-2111_14": { + "nixpkgs-2111_15": { "locked": { "lastModified": 1638410074, "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", @@ -9885,7 +9924,7 @@ "type": "github" } }, - "nixpkgs-2111_15": { + "nixpkgs-2111_16": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -9901,13 +9940,13 @@ "type": "github" } }, - "nixpkgs-2111_16": { + "nixpkgs-2111_17": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -9983,11 +10022,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -9999,11 +10038,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -10031,11 +10070,11 @@ }, "nixpkgs-2111_9": { "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1640283207, + "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "rev": "64c7e3388bbd9206e437713351e814366e0c3284", "type": "github" }, "original": { @@ -10109,22 +10148,6 @@ "type": "github" } }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2211": { "locked": { "lastModified": 1669997163, @@ -10292,6 +10315,21 @@ "type": "indirect" } }, + "nixpkgs-regression_18": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, "nixpkgs-regression_2": { "locked": { "lastModified": 1643052045, @@ -10445,6 +10483,22 @@ } }, "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1641285291, + "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { "locked": { "lastModified": 1635295995, "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", @@ -10460,7 +10514,7 @@ "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-unstable_13": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -10476,7 +10530,7 @@ "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-unstable_14": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -10492,7 +10546,7 @@ "type": "github" } }, - "nixpkgs-unstable_14": { + "nixpkgs-unstable_15": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -10508,7 +10562,7 @@ "type": "github" } }, - "nixpkgs-unstable_15": { + "nixpkgs-unstable_16": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -10524,7 +10578,7 @@ "type": "github" } }, - "nixpkgs-unstable_16": { + "nixpkgs-unstable_17": { "locked": { "lastModified": 1635295995, "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", @@ -10540,7 +10594,7 @@ "type": "github" } }, - "nixpkgs-unstable_17": { + "nixpkgs-unstable_18": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -10556,13 +10610,13 @@ "type": "github" } }, - "nixpkgs-unstable_18": { + "nixpkgs-unstable_19": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { @@ -10670,11 +10724,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { @@ -10686,11 +10740,11 @@ }, "nixpkgs-unstable_9": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { @@ -11586,19 +11640,34 @@ }, "nixpkgs_62": { "locked": { - "lastModified": 1674487464, - "narHash": "sha256-Jgq50e4S4JVCYpWLqrabBzDp/1mfaxHCh8/OOorHTy0=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3954218cf613eba8e0dcefa9abe337d26bc48fd0", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, "nixpkgs_63": { + "locked": { + "lastModified": 1677021523, + "narHash": "sha256-0EhZjJ3rq8ZTTJ6Trrf/9hYtnIry0OsyY2NKoQoOS5Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a5adc2ad7009851d7d0fc26311e42a93b171d2e", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_64": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11613,7 +11682,7 @@ "type": "indirect" } }, - "nixpkgs_64": { + "nixpkgs_65": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11627,7 +11696,7 @@ "type": "indirect" } }, - "nixpkgs_65": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11642,7 +11711,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_67": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11656,7 +11725,7 @@ "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_68": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11670,7 +11739,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_69": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11685,22 +11754,6 @@ "type": "indirect" } }, - "nixpkgs_69": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_7": { "locked": { "lastModified": 1632864508, @@ -11717,6 +11770,22 @@ } }, "nixpkgs_70": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_71": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11731,7 +11800,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_72": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11747,7 +11816,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_73": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11761,7 +11830,7 @@ "type": "indirect" } }, - "nixpkgs_73": { + "nixpkgs_74": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11776,7 +11845,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_75": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11790,7 +11859,7 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_76": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11804,7 +11873,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_77": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11819,7 +11888,7 @@ "type": "indirect" } }, - "nixpkgs_77": { + "nixpkgs_78": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -11835,7 +11904,7 @@ "type": "github" } }, - "nixpkgs_78": { + "nixpkgs_79": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11850,39 +11919,39 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_8": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_80": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs_81": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11897,53 +11966,6 @@ "type": "indirect" } }, - "nixpkgs_81": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_82": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_83": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_9": { "locked": { "lastModified": 1602702596, @@ -12245,12 +12267,12 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_3", + "CHaP": "CHaP_4", "blank": "blank_6", "cardano-configurations": "cardano-configurations_3", "cardano-node": "cardano-node_3", "flake-compat": "flake-compat_15", - "haskell-nix": "haskell-nix_5", + "haskell-nix": "haskell-nix_6", "iohk-nix": "iohk-nix_4", "nixpkgs": [ "ctl", @@ -12275,12 +12297,12 @@ }, "ogmios_2": { "inputs": { - "CHaP": "CHaP", + "CHaP": "CHaP_2", "blank": "blank_4", "cardano-configurations": "cardano-configurations_2", "cardano-node": "cardano-node_2", "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_4", + "haskell-nix": "haskell-nix_5", "iohk-nix": "iohk-nix_3", "nixpkgs": [ "ctl", @@ -12440,6 +12462,23 @@ "type": "github" } }, + "old-ghc-nix_17": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -12690,46 +12729,33 @@ }, "plutip": { "inputs": { - "CHaP": [ - "ctl", - "plutip", - "bot-plutus-interface", - "CHaP" - ], - "bot-plutus-interface": "bot-plutus-interface", - "flake-compat": "flake-compat_21", - "haskell-nix": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix" - ], - "iohk-nix": [ - "ctl", - "plutip", - "bot-plutus-interface", - "iohk-nix" - ], + "CHaP": "CHaP_5", + "cardano-addresses": "cardano-addresses", + "cardano-node": "cardano-node_4", + "cardano-wallet": "cardano-wallet_2", + "flake-compat": "flake-compat_18", + "haskell-nix": "haskell-nix_7", + "hw-aeson": "hw-aeson", + "iohk-nix": "iohk-nix_5", "nixpkgs": [ "ctl", "plutip", - "bot-plutus-interface", "haskell-nix", - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { - "lastModified": 1671024770, - "narHash": "sha256-IOH0eny/33gDe6JQUUnf/kL76eg1zrr9Tse/GGW6fPw=", + "lastModified": 1682621645, + "narHash": "sha256-JXvTEmGzLDPfzLJxw+jvtOTR9fyIWlqm5a7IjRLBtGQ=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "plutip", - "rev": "8d1795d9ac3f9c6f31381104b25c71576eeba009", + "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", "type": "github" } }, @@ -12981,7 +13007,7 @@ "root": { "inputs": { "ctl": "ctl", - "flake-compat": "flake-compat_22", + "flake-compat": "flake-compat_19", "nixpkgs": [ "ctl", "nixpkgs" @@ -13280,6 +13306,22 @@ } }, "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_11": { "flake": false, "locked": { "lastModified": 1669857425, @@ -13295,7 +13337,7 @@ "type": "github" } }, - "stackage_11": { + "stackage_12": { "flake": false, "locked": { "lastModified": 1656898145, @@ -13311,7 +13353,7 @@ "type": "github" } }, - "stackage_12": { + "stackage_13": { "flake": false, "locked": { "lastModified": 1643073493, @@ -13327,7 +13369,7 @@ "type": "github" } }, - "stackage_13": { + "stackage_14": { "flake": false, "locked": { "lastModified": 1643073493, @@ -13343,7 +13385,7 @@ "type": "github" } }, - "stackage_14": { + "stackage_15": { "flake": false, "locked": { "lastModified": 1639012797, @@ -13359,7 +13401,7 @@ "type": "github" } }, - "stackage_15": { + "stackage_16": { "flake": false, "locked": { "lastModified": 1667610757, @@ -13375,14 +13417,14 @@ "type": "github" } }, - "stackage_16": { + "stackage_17": { "flake": false, "locked": { - "lastModified": 1669338854, - "narHash": "sha256-D9WBn+cC8t8Xu+z+H0nDGoeOCcqsbDGXHsaO7qY45O4=", + "lastModified": 1653355076, + "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "e9c817e14342ebef9fcf433f6ba3aa00c6df3e3f", + "rev": "71b16ca68d6acd639121db43238896357fe53f54", "type": "github" }, "original": { @@ -13442,11 +13484,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "lastModified": 1653355076, + "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "rev": "71b16ca68d6acd639121db43238896357fe53f54", "type": "github" }, "original": { @@ -13458,11 +13500,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { @@ -13474,11 +13516,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1665537461, + "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", "type": "github" }, "original": { @@ -13506,11 +13548,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1643073493, + "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", "type": "github" }, "original": { @@ -13592,7 +13634,7 @@ "blank": "blank_5", "devshell": "devshell_16", "dmerge": "dmerge_3", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_36", "makes": [ "ctl", "ogmios", @@ -13612,7 +13654,7 @@ ], "n2c": "n2c_3", "nixago": "nixago_3", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_72", "yants": "yants_6" }, "locked": { @@ -13634,7 +13676,7 @@ "blank": "blank_7", "devshell": "devshell_17", "dmerge": "dmerge_4", - "flake-utils": "flake-utils_43", + "flake-utils": "flake-utils_44", "makes": [ "ctl", "ogmios-nixos", @@ -13654,7 +13696,7 @@ ], "n2c": "n2c_4", "nixago": "nixago_4", - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_80", "yants": "yants_7" }, "locked": { @@ -13671,50 +13713,6 @@ "type": "github" } }, - "std_6": { - "inputs": { - "blank": "blank_8", - "devshell": "devshell_18", - "dmerge": "dmerge_5", - "flake-utils": "flake-utils_47", - "makes": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", - "microvm": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_5", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_83", - "yants": "yants_8" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, "stdlib": { "locked": { "lastModified": 1590026685, @@ -14119,33 +14117,6 @@ "type": "github" } }, - "tullia_4": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "nixpkgs" - ], - "std": "std_6" - }, - "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, "utils": { "locked": { "lastModified": 1637014545, @@ -14521,21 +14492,6 @@ "type": "github" } }, - "utils_32": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_4": { "locked": { "lastModified": 1633020561, @@ -14819,32 +14775,6 @@ "repo": "yants", "type": "github" } - }, - "yants_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "plutip", - "bot-plutus-interface", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } } }, "root": "root", diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index b7ec6731b..7f200e9b2 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "f46247826949b752638e86b0e1e75fac3f4c08ec"; + rev = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 7449fdc85..8b1d70f55 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -353,7 +353,7 @@ let additions = , "web-html" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "10a88faa2e6237aafc90568e3488f3421517af63" + , version = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 95c87c5a6..39a0976a4 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "10a88faa2e6237aafc90568e3488f3421517af63"; + version = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "10a88faa2e6237aafc90568e3488f3421517af63"; - sha256 = "1k0iwvxx3hznf9zngn9zf44y320yqabmwj3l6zafgwbpxbmv8fdx"; + rev = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; + sha256 = "0w2h1a18yf37r4lh7wjb0fnnmbxibqa07vsv3axbg84ljanh8ph2"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 84a1ff4621d65fb675843ad59c43ad3bbf7c49f1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 May 2023 20:45:17 +0400 Subject: [PATCH 163/478] Document bugs related to plutip cluster params (epochSize/slotLength) --- doc/plutip-testing.md | 5 +++++ examples/ExUnits.purs | 4 +--- test/Plutip/Staking.purs | 7 ++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index ce0dfbb93..0fcf81653 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -13,6 +13,7 @@ - [Note on SIGINT](#note-on-sigint) - [Testing with Nix](#testing-with-nix) - [Cluster configuration options](#cluster-configuration-options) + - [Limitations](#limitations) - [Using addresses with staking key components](#using-addresses-with-staking-key-components) - [See also](#see-also) @@ -189,6 +190,10 @@ You can run Plutip tests via CTL's `purescriptProject` as well. After creating y - `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive transaction size limits. - `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling the contract with tracing in development and without it in production). +### Limitations + +Non-default values of `slotLength` and `epochSize` break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. + ## Using addresses with staking key components It's possible to use stake keys with Plutip. `Contract.Test.Plutip.withStakeKey` function can be used to modify the distribution spec: diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index a64cc808f..14fce6c05 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -126,6 +126,4 @@ exUnitsScript :: Contract Validator exUnitsScript = liftMaybe (error "Error decoding exUnits") do envelope <- decodeTextEnvelope exUnits - script <- plutusScriptV2FromEnvelope envelope - -- hush $ Validator <$> applyArgs script [ ] - pure $ Validator script + Validator <$> plutusScriptV2FromEnvelope envelope diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index b5c51dbff..efa11a1da 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -702,5 +702,10 @@ suite = do config = Common.config { clusterConfig = - Common.config.clusterConfig { slotLength = Seconds 0.05 } + Common.config.clusterConfig + -- changing these constants breaks rewards + -- https://github.com/mlabs-haskell/plutip/issues/149 + { slotLength = Seconds 0.05 + , epochSize = Just $ UInt.fromInt 80 + } } From f902357206a1fe58036ebb48dabca8c23ca67b2d Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 8 May 2023 14:52:52 +0200 Subject: [PATCH 164/478] Fix `epochSize` option of plutip cluster config --- src/Internal/Plutip/Server.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 87eea8170..bf41d6961 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -83,7 +83,7 @@ import Data.Foldable (sum) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe(Nothing, Just), maybe) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String @@ -403,9 +403,9 @@ startPlutipCluster startPlutipCluster cfg keysToGenerate = do let url = mkServerEndpointUrl cfg "start" - -- TODO epoch size cannot currently be changed due to - -- https://github.com/mlabs-haskell/plutip/issues/149 - epochSize = UInt.fromInt 80 + -- TODO: Non-default values for `slotLength` and `epochSize` break staking + -- rewards, see https://github.com/mlabs-haskell/plutip/issues/149 + epochSize = fromMaybe (UInt.fromInt 80) cfg.clusterConfig.epochSize res <- do response <- liftAff ( Affjax.request From 8040ddb9f0853a88d846ee8608e38c880151d149 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Wed, 10 May 2023 13:47:02 +0200 Subject: [PATCH 165/478] Set project.name explicitly in buildCtlRuntime --- nix/runtime.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/runtime.nix b/nix/runtime.nix index e0592e358..3526abe8f 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -245,6 +245,7 @@ rec { } else { }); in { + project.name = "ctl-runtime"; docker-compose.raw = pkgs.lib.recursiveUpdate { volumes = { From daef4ca6ab77e6f28220eee6db8556581f64752c Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Fri, 12 May 2023 19:50:20 +0300 Subject: [PATCH 166/478] Update plutip test limitations doc --- doc/plutip-testing.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 0fcf81653..75ddb0e06 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -192,7 +192,8 @@ You can run Plutip tests via CTL's `purescriptProject` as well. After creating y ### Limitations -Non-default values of `slotLength` and `epochSize` break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. +Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. +`slotLength` can be changed without any problems. ## Using addresses with staking key components From b5c58fa8776827edc890c9e3d8801b1875c98bda Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Fri, 12 May 2023 21:36:48 +0100 Subject: [PATCH 167/478] Add support for HD wallets and BIP39 seed phrases --- CHANGELOG.md | 1 + package.json | 1 + src/Contract/Wallet.purs | 9 +++ src/Internal/Serialization/Types.purs | 2 + src/Internal/Wallet/Bip32.js | 32 +++++++++ src/Internal/Wallet/Bip32.purs | 95 +++++++++++++++++++++++++++ templates/ctl-scaffold/package.json | 1 + test/Unit.purs | 3 + test/Wallet/Bip32.purs | 53 +++++++++++++++ 9 files changed, 197 insertions(+) create mode 100644 src/Internal/Wallet/Bip32.js create mode 100644 src/Internal/Wallet/Bip32.purs create mode 100644 test/Wallet/Bip32.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7fb90ba..bc899d771 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) +- HD wallet support with mnemonic seed phrases ### Changed diff --git a/package.json b/package.json index fdc0085b5..02c5bbc14 100755 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "base64-js": "^1.5.1", "big-integer": "1.6.51", "bignumber.js": "^9.1.1", + "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 37037d798..dbc1087e7 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -79,6 +79,15 @@ import Ctl.Internal.Wallet , walletToWalletExtension ) as X import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet +import Ctl.Internal.Wallet.Bip32 + ( Bip32Account + , bip32AccountFromMnemonic + , deriveChangeKey + , derivePaymentKey + , deriveStakeKey + , mkKeyWalletSpecFromMnemonic + , mkWalletFromMnemonic + ) as X import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) diff --git a/src/Internal/Serialization/Types.purs b/src/Internal/Serialization/Types.purs index 9cafb8706..3e906b0ad 100644 --- a/src/Internal/Serialization/Types.purs +++ b/src/Internal/Serialization/Types.purs @@ -4,6 +4,7 @@ module Ctl.Internal.Serialization.Types , AuxiliaryData , AuxiliaryDataHash , BigInt + , Bip32PrivateKey , Bip32PublicKey , BootstrapWitness , BootstrapWitnesses @@ -89,6 +90,7 @@ foreign import data Assets :: Type foreign import data AuxiliaryData :: Type foreign import data AuxiliaryDataHash :: Type foreign import data BigInt :: Type +foreign import data Bip32PrivateKey :: Type foreign import data Bip32PublicKey :: Type foreign import data BootstrapWitness :: Type foreign import data BootstrapWitnesses :: Type diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js new file mode 100644 index 000000000..4de2f3bf2 --- /dev/null +++ b/src/Internal/Wallet/Bip32.js @@ -0,0 +1,32 @@ +/* global BROWSER_RUNTIME */ + +let lib; +if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + lib = require("@emurgo/cardano-serialization-lib-browser"); +} else { + lib = require("@emurgo/cardano-serialization-lib-nodejs"); +} +lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +const bip39 = require("bip39"); + +const HARDENED = 0x80000000; + +exports.bip32PrivateKeyFromMnemonic = left => right => phrase => { + try { + return right( + lib.Bip32PrivateKey.from_bip39_entropy( + Uint8Array.from( + Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") + ), + new Uint8Array() // passphrase (not currently implemented) + ) + ); + } catch (e) { + return left(e.toString()); + } +}; + +exports.bip32ToPrivateKey = privateKey => privateKey.to_raw_key(); + +exports.derivePrivateKey = path => hardened => privateKey => + privateKey.derive(path | (hardened ? HARDENED : 0)); diff --git a/src/Internal/Wallet/Bip32.purs b/src/Internal/Wallet/Bip32.purs new file mode 100644 index 000000000..0cfbbba88 --- /dev/null +++ b/src/Internal/Wallet/Bip32.purs @@ -0,0 +1,95 @@ +module Ctl.Internal.Wallet.Bip32 + ( Bip32Account + , bip32AccountFromMnemonic + , derivePaymentKey + , deriveChangeKey + , deriveStakeKey + , mkKeyWalletSpecFromMnemonic + , mkWalletFromMnemonic + ) where + +import Contract.Prelude + +import Contract.Config + ( PrivatePaymentKey(PrivatePaymentKey) + , PrivatePaymentKeySource(PrivatePaymentKeyValue) + , PrivateStakeKey(PrivateStakeKey) + , PrivateStakeKeySource(PrivateStakeKeyValue) + , WalletSpec(UseKeys) + ) +import Contract.Wallet.Key (KeyWallet, privateKeysToKeyWallet) +import Ctl.Internal.Serialization.Types (Bip32PrivateKey, PrivateKey) +import Data.UInt (UInt) +import Data.UInt as UInt + +newtype Bip32Account = Bip32Account Bip32PrivateKey + +foreign import bip32PrivateKeyFromMnemonic + :: (String -> Either String Bip32PrivateKey) + -> (Bip32PrivateKey -> Either String Bip32PrivateKey) + -> String + -> Either String Bip32PrivateKey + +foreign import bip32ToPrivateKey :: Bip32PrivateKey -> PrivateKey + +foreign import derivePrivateKey + :: UInt + -- ^ path index + -> Boolean + -- ^ hardened + -> Bip32PrivateKey + -> Bip32PrivateKey + +-- | Derive a BIP32 account given a mnemonic phrase and account index +bip32AccountFromMnemonic :: String -> UInt -> Either String Bip32Account +bip32AccountFromMnemonic phrase account = + bip32PrivateKeyFromMnemonic Left Right phrase + <#> derivePrivateKey (UInt.fromInt 1852) true + <#> derivePrivateKey (UInt.fromInt 1815) true + <#> derivePrivateKey account true + <#> Bip32Account + +-- | Derive a payment key for the given account +derivePaymentKey :: Bip32Account -> UInt -> Bip32PrivateKey +derivePaymentKey (Bip32Account key) index = + key + # derivePrivateKey zero false + # derivePrivateKey index false + +-- | Derive a change key for the given account +deriveChangeKey :: Bip32Account -> UInt -> Bip32PrivateKey +deriveChangeKey (Bip32Account key) index = + key + # derivePrivateKey one false + # derivePrivateKey index false + +-- | Derive the stake key for the given account +deriveStakeKey :: Bip32Account -> Bip32PrivateKey +deriveStakeKey (Bip32Account key) = + key + # derivePrivateKey (UInt.fromInt 2) false + # derivePrivateKey (UInt.fromInt 0) false + +-- | Create a key wallet spec given a mnemonic phrase and account index +mkKeyWalletSpecFromMnemonic :: String -> UInt -> Either String WalletSpec +mkKeyWalletSpecFromMnemonic phrase accountIndex = do + account <- bip32AccountFromMnemonic phrase accountIndex + let + paymentKey = derivePaymentKey account zero # bip32ToPrivateKey + stakeKey = deriveStakeKey account # bip32ToPrivateKey + pure $ + UseKeys + (PrivatePaymentKeyValue $ PrivatePaymentKey paymentKey) + (Just $ PrivateStakeKeyValue $ PrivateStakeKey stakeKey) + +-- | Create a wallet given a mnemonic phrase and account index +mkWalletFromMnemonic :: String -> UInt -> Either String KeyWallet +mkWalletFromMnemonic phrase accountIndex = do + account <- bip32AccountFromMnemonic phrase accountIndex + let + paymentKey = derivePaymentKey account zero # bip32ToPrivateKey + stakeKey = deriveStakeKey account # bip32ToPrivateKey + pure $ + privateKeysToKeyWallet + (PrivatePaymentKey paymentKey) + (Just $ PrivateStakeKey stakeKey) diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 4d4ab7eeb..f70c6484a 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -36,6 +36,7 @@ "base64-js": "^1.5.1", "big-integer": "1.6.51", "bignumber.js": "^9.1.1", + "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", diff --git a/test/Unit.purs b/test/Unit.purs index 858b9ce11..ab9ac80c6 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -10,6 +10,7 @@ import Data.Time.Duration (Milliseconds(Milliseconds)) import Effect (Effect) import Effect.Aff (Aff, cancelWith, effectCanceler, launchAff) import Effect.Class (liftEffect) +import Mote (only) import Mote.Monad (mapTest) import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Base64 as Base64 @@ -44,6 +45,7 @@ import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName import Test.Ctl.Types.Transaction as Types.Transaction import Test.Ctl.UsedTxOuts as UsedTxOuts +import Test.Ctl.Wallet.Bip32 as Bip32 import Test.Ctl.Wallet.Cip30.SignData as Cip30SignData import Test.Spec.Runner (defaultConfig) @@ -62,6 +64,7 @@ testPlan = do NativeScript.suite Base64.suite ByteArray.suite + only Bip32.suite Cip25.suite Cip30SignData.suite Data.suite diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs new file mode 100644 index 000000000..0fedc24d2 --- /dev/null +++ b/test/Wallet/Bip32.purs @@ -0,0 +1,53 @@ +module Test.Ctl.Wallet.Bip32 + ( suite + ) where + +import Contract.Prelude + +import Contract.Wallet (mkWalletFromMnemonic) +import Ctl.Internal.Serialization.Address + ( NetworkId(MainnetId) + , addressFromBech32 + ) +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) +import Effect.Aff (Aff) +import Mote (group, test) +import Test.Ctl.Utils (assertTrue) + +suite :: TestPlanM (Aff Unit) Unit +suite = + group "BIP32/BIP39/CIP1852 wallets" do + test "generates valid wallets for valid phrases" do + assertTrue "Valid phrase produces correct wallet" $ + case mkWalletFromMnemonic goodPhrase zero of + Left _ -> false + Right (KeyWallet wallet) -> + Just (wallet.address MainnetId) == addressFromBech32 + goodPhraseAddress0 + assertTrue "Account index produces correct wallet" $ + case mkWalletFromMnemonic goodPhrase one of + Left _ -> false + Right (KeyWallet wallet) -> + Just (wallet.address MainnetId) == addressFromBech32 + goodPhraseAddress1 + test "handles errors for invalid phrases" do + assertTrue "Invalid phrase length returns an error" $ + case mkWalletFromMnemonic invalidPhrase zero of + Left e -> e == "Error: Invalid mnemonic" + Right _ -> false + assertTrue "Invalid phrase checksum returns an error" $ + case mkWalletFromMnemonic invalidChecksum zero of + Left e -> e == "Error: Invalid mnemonic checksum" + Right _ -> false + where + goodPhrase = + "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve" + goodPhraseAddress0 = + "addr1q9w8atxfen0fqd99rnagywam68n7tvzg4g5t39azwtgm2uy0cwl6t7cd6sffn3l8ryyfn4ztw009gqtumhenxahughnspt8frx" + goodPhraseAddress1 = + "addr1q85w3avkx4xvsadj57sw4eumrl8tcsq6yhr3evv4zy0gavhmyjhs96g96jax70qqyskmwrzvc6jm45w4y76q29vful2snqc60k" + invalidPhrase = + "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve" + invalidChecksum = + "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve zebra" From 6de2289f6a527bc1b1d4c50e774e5edcd948f8d7 Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Fri, 12 May 2023 22:39:56 +0100 Subject: [PATCH 168/478] Enable tests --- test/Unit.purs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/Unit.purs b/test/Unit.purs index ab9ac80c6..23a6b34a7 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -10,7 +10,6 @@ import Data.Time.Duration (Milliseconds(Milliseconds)) import Effect (Effect) import Effect.Aff (Aff, cancelWith, effectCanceler, launchAff) import Effect.Class (liftEffect) -import Mote (only) import Mote.Monad (mapTest) import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Base64 as Base64 @@ -63,8 +62,8 @@ testPlan = do Ipv6.suite NativeScript.suite Base64.suite + Bip32.suite ByteArray.suite - only Bip32.suite Cip25.suite Cip30SignData.suite Data.suite From fe8e8fbf16620cfc9bbe933aff33d0380e7cd7ac Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Sat, 13 May 2023 18:18:56 +0100 Subject: [PATCH 169/478] Naming/exports --- src/Contract/Wallet.purs | 7 +--- src/Internal/Wallet/Bip32.js | 2 +- src/Internal/Wallet/Bip32.purs | 66 ++++++++++++++++++++-------------- test/Wallet/Bip32.purs | 10 +++--- 4 files changed, 47 insertions(+), 38 deletions(-) diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index dbc1087e7..b5e819a8c 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -80,13 +80,8 @@ import Ctl.Internal.Wallet ) as X import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet.Bip32 - ( Bip32Account - , bip32AccountFromMnemonic - , deriveChangeKey - , derivePaymentKey - , deriveStakeKey + ( mkKeyWalletFromMnemonic , mkKeyWalletSpecFromMnemonic - , mkWalletFromMnemonic ) as X import Ctl.Internal.Wallet.Key ( KeyWallet diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 4de2f3bf2..3a5cb5387 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -11,7 +11,7 @@ const bip39 = require("bip39"); const HARDENED = 0x80000000; -exports.bip32PrivateKeyFromMnemonic = left => right => phrase => { +exports._bip32PrivateKeyFromMnemonic = left => right => phrase => { try { return right( lib.Bip32PrivateKey.from_bip39_entropy( diff --git a/src/Internal/Wallet/Bip32.purs b/src/Internal/Wallet/Bip32.purs index 0cfbbba88..32848c1d7 100644 --- a/src/Internal/Wallet/Bip32.purs +++ b/src/Internal/Wallet/Bip32.purs @@ -1,11 +1,14 @@ module Ctl.Internal.Wallet.Bip32 - ( Bip32Account - , bip32AccountFromMnemonic + ( Cip1852Account + , bip32ToPrivateKey + , bip32PrivateKeyFromMnemonic + , cip1852AccountFromBip32PrivateKey + , cip1852AccountFromMnemonic , derivePaymentKey , deriveChangeKey , deriveStakeKey , mkKeyWalletSpecFromMnemonic - , mkWalletFromMnemonic + , mkKeyWalletFromMnemonic ) where import Contract.Prelude @@ -17,21 +20,19 @@ import Contract.Config , PrivateStakeKeySource(PrivateStakeKeyValue) , WalletSpec(UseKeys) ) -import Contract.Wallet.Key (KeyWallet, privateKeysToKeyWallet) import Ctl.Internal.Serialization.Types (Bip32PrivateKey, PrivateKey) +import Ctl.Internal.Wallet.Key (KeyWallet, privateKeysToKeyWallet) import Data.UInt (UInt) import Data.UInt as UInt -newtype Bip32Account = Bip32Account Bip32PrivateKey +newtype Cip1852Account = Cip1852Account Bip32PrivateKey -foreign import bip32PrivateKeyFromMnemonic +foreign import _bip32PrivateKeyFromMnemonic :: (String -> Either String Bip32PrivateKey) -> (Bip32PrivateKey -> Either String Bip32PrivateKey) -> String -> Either String Bip32PrivateKey -foreign import bip32ToPrivateKey :: Bip32PrivateKey -> PrivateKey - foreign import derivePrivateKey :: UInt -- ^ path index @@ -40,32 +41,45 @@ foreign import derivePrivateKey -> Bip32PrivateKey -> Bip32PrivateKey --- | Derive a BIP32 account given a mnemonic phrase and account index -bip32AccountFromMnemonic :: String -> UInt -> Either String Bip32Account -bip32AccountFromMnemonic phrase account = - bip32PrivateKeyFromMnemonic Left Right phrase - <#> derivePrivateKey (UInt.fromInt 1852) true - <#> derivePrivateKey (UInt.fromInt 1815) true - <#> derivePrivateKey account true - <#> Bip32Account +-- | Convert a BIP32 private key to a raw private key +foreign import bip32ToPrivateKey :: Bip32PrivateKey -> PrivateKey + +-- | Derive a BIP32 private key given a mnemonic phrase +bip32PrivateKeyFromMnemonic :: String -> Either String Bip32PrivateKey +bip32PrivateKeyFromMnemonic = _bip32PrivateKeyFromMnemonic Left Right + +-- | Derive a CIP1852 account from a BIP32 private key given an account index +cip1852AccountFromBip32PrivateKey :: UInt -> Bip32PrivateKey -> Cip1852Account +cip1852AccountFromBip32PrivateKey account key = + Cip1852Account + $ key + # derivePrivateKey (UInt.fromInt 1852) true + # derivePrivateKey (UInt.fromInt 1815) true + # derivePrivateKey account true + +-- | Derive a CIP1852 account given a mnemonic phrase and account index +cip1852AccountFromMnemonic :: String -> UInt -> Either String Cip1852Account +cip1852AccountFromMnemonic phrase account = + cip1852AccountFromBip32PrivateKey account + <$> bip32PrivateKeyFromMnemonic phrase -- | Derive a payment key for the given account -derivePaymentKey :: Bip32Account -> UInt -> Bip32PrivateKey -derivePaymentKey (Bip32Account key) index = +derivePaymentKey :: Cip1852Account -> UInt -> Bip32PrivateKey +derivePaymentKey (Cip1852Account key) index = key # derivePrivateKey zero false # derivePrivateKey index false -- | Derive a change key for the given account -deriveChangeKey :: Bip32Account -> UInt -> Bip32PrivateKey -deriveChangeKey (Bip32Account key) index = +deriveChangeKey :: Cip1852Account -> UInt -> Bip32PrivateKey +deriveChangeKey (Cip1852Account key) index = key # derivePrivateKey one false # derivePrivateKey index false -- | Derive the stake key for the given account -deriveStakeKey :: Bip32Account -> Bip32PrivateKey -deriveStakeKey (Bip32Account key) = +deriveStakeKey :: Cip1852Account -> Bip32PrivateKey +deriveStakeKey (Cip1852Account key) = key # derivePrivateKey (UInt.fromInt 2) false # derivePrivateKey (UInt.fromInt 0) false @@ -73,7 +87,7 @@ deriveStakeKey (Bip32Account key) = -- | Create a key wallet spec given a mnemonic phrase and account index mkKeyWalletSpecFromMnemonic :: String -> UInt -> Either String WalletSpec mkKeyWalletSpecFromMnemonic phrase accountIndex = do - account <- bip32AccountFromMnemonic phrase accountIndex + account <- cip1852AccountFromMnemonic phrase accountIndex let paymentKey = derivePaymentKey account zero # bip32ToPrivateKey stakeKey = deriveStakeKey account # bip32ToPrivateKey @@ -83,9 +97,9 @@ mkKeyWalletSpecFromMnemonic phrase accountIndex = do (Just $ PrivateStakeKeyValue $ PrivateStakeKey stakeKey) -- | Create a wallet given a mnemonic phrase and account index -mkWalletFromMnemonic :: String -> UInt -> Either String KeyWallet -mkWalletFromMnemonic phrase accountIndex = do - account <- bip32AccountFromMnemonic phrase accountIndex +mkKeyWalletFromMnemonic :: String -> UInt -> Either String KeyWallet +mkKeyWalletFromMnemonic phrase accountIndex = do + account <- cip1852AccountFromMnemonic phrase accountIndex let paymentKey = derivePaymentKey account zero # bip32ToPrivateKey stakeKey = deriveStakeKey account # bip32ToPrivateKey diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 0fedc24d2..cab1d85a8 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -4,7 +4,7 @@ module Test.Ctl.Wallet.Bip32 import Contract.Prelude -import Contract.Wallet (mkWalletFromMnemonic) +import Contract.Wallet (mkKeyWalletFromMnemonic) import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId) , addressFromBech32 @@ -20,24 +20,24 @@ suite = group "BIP32/BIP39/CIP1852 wallets" do test "generates valid wallets for valid phrases" do assertTrue "Valid phrase produces correct wallet" $ - case mkWalletFromMnemonic goodPhrase zero of + case mkKeyWalletFromMnemonic goodPhrase zero of Left _ -> false Right (KeyWallet wallet) -> Just (wallet.address MainnetId) == addressFromBech32 goodPhraseAddress0 assertTrue "Account index produces correct wallet" $ - case mkWalletFromMnemonic goodPhrase one of + case mkKeyWalletFromMnemonic goodPhrase one of Left _ -> false Right (KeyWallet wallet) -> Just (wallet.address MainnetId) == addressFromBech32 goodPhraseAddress1 test "handles errors for invalid phrases" do assertTrue "Invalid phrase length returns an error" $ - case mkWalletFromMnemonic invalidPhrase zero of + case mkKeyWalletFromMnemonic invalidPhrase zero of Left e -> e == "Error: Invalid mnemonic" Right _ -> false assertTrue "Invalid phrase checksum returns an error" $ - case mkWalletFromMnemonic invalidChecksum zero of + case mkKeyWalletFromMnemonic invalidChecksum zero of Left e -> e == "Error: Invalid mnemonic checksum" Right _ -> false where From 0d1fdbe6258f149b55e7d4da7a7d25b0c1f638f8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 May 2023 17:21:26 +0300 Subject: [PATCH 170/478] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc899d771..5f0ee90d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,7 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) -- HD wallet support with mnemonic seed phrases +- HD wallet support with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) ### Changed From 0b17b98782a9119689d1f7325312bb4ae70e5d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristi=C3=A1n=20Balaj?= Date: Wed, 17 May 2023 10:40:14 +0200 Subject: [PATCH 171/478] chore: support for darwin --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 69679295f..c5bad3c6d 100644 --- a/flake.lock +++ b/flake.lock @@ -980,17 +980,17 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1678285155, - "narHash": "sha256-GcaiQRZhPYysINnAFPN+IyQu9S/CZA8eb5sTGZ4qfxw=", + "lastModified": 1684305087, + "narHash": "sha256-8MvK2AxG3bGWkxWutsCWRk9MYxf/FdQu/DkAvemjqHM=", "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "49269a9adb27b370209a61de2f5407945112860a", + "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", "type": "github" }, "original": { "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "49269a9adb27b370209a61de2f5407945112860a", + "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 4004c7bf6..0617a244e 100644 --- a/flake.nix +++ b/flake.nix @@ -40,7 +40,7 @@ }; # TODO use a tag for blockfrost as soon as they tag a recent commit (we need it as a flake) - blockfrost.url = "github:blockfrost/blockfrost-backend-ryo/49269a9adb27b370209a61de2f5407945112860a"; + blockfrost.url = "github:blockfrost/blockfrost-backend-ryo/113ddfc2dbea9beba3a428aa274965237f31b858"; db-sync.url = "github:input-output-hk/cardano-db-sync/13.1.0.0"; # Plutip server related inputs From ed0d52ba2b713c631c21624b494341899d206cb1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 May 2023 17:39:48 +0400 Subject: [PATCH 172/478] Update package-locks --- package-lock.json | 6795 +++++++++++++++++++++- templates/ctl-scaffold/package-lock.json | 5965 ++++++++++++++++++- 2 files changed, 12512 insertions(+), 248 deletions(-) diff --git a/package-lock.json b/package-lock.json index 857dce0c6..a6523548e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,6607 @@ { "name": "cardano-transaction-lib", "version": "5.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "cardano-transaction-lib", + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "1.0.1", + "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@emurgo/cardano-serialization-lib-browser": "11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/json-bigint": " 1.0.0", + "@noble/secp256k1": "^1.7.0", + "apply-args-browser": "0.0.1", + "apply-args-nodejs": "0.0.1", + "base64-js": "^1.5.1", + "big-integer": "1.6.51", + "bignumber.js": "^9.1.1", + "bip39": "^3.1.0", + "blakejs": "1.2.1", + "bufferutil": "4.0.5", + "jssha": "3.2.0", + "node-polyfill-webpack-plugin": "1.1.4", + "puppeteer-core": "^15.3.2", + "reconnecting-websocket": "4.4.0", + "uniqid": "5.4.0", + "ws": "8.4.0", + "xhr2": "0.2.1" + }, + "devDependencies": { + "buffer": "6.0.3", + "doctoc": "^2.2.1", + "html-webpack-plugin": "5.5.0", + "webpack": "5.67.0", + "webpack-cli": "4.10", + "webpack-dev-server": "4.7.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emurgo/cardano-message-signing-browser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-browser/-/cardano-message-signing-browser-1.0.1.tgz", + "integrity": "sha512-yC4Ymq44WR0bXO1wzxCoyc2W/RD1KSAla0oYhin7IYoVkp2raGp8wt7QNF4pDdNnTcejn5fyPyYY9dL4666H1w==" + }, + "node_modules/@emurgo/cardano-message-signing-nodejs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", + "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" + }, + "node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", + "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" + }, + "node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", + "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@mlabs-haskell/csl-gc-wrapper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", + "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + }, + "node_modules/@mlabs-haskell/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", + "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@textlint/ast-node-types": { + "version": "12.2.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", + "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", + "dev": true + }, + "node_modules/@textlint/markdown-to-ast": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", + "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.2.2", + "debug": "^4.3.4", + "mdast-util-gfm-autolink-literal": "^0.1.3", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.7", + "unified": "^9.2.2" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/anchor-markdown-header": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", + "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", + "dev": true, + "dependencies": { + "emoji-regex": "~10.1.0" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apply-args-browser": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", + "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" + }, + "node_modules/apply-args-nodejs": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", + "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "dependencies": { + "@noble/hashes": "^1.2.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "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" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", + "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001358", + "electron-to-chromium": "^1.4.164", + "node-releases": "^2.0.5", + "update-browserslist-db": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/bufferutil": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001358", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "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" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "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" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/devtools-protocol": { + "version": "0.0.1011705", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", + "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctoc": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", + "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", + "dev": true, + "dependencies": { + "@textlint/markdown-to-ast": "^12.1.1", + "anchor-markdown-header": "^0.6.0", + "htmlparser2": "^7.2.0", + "minimist": "^1.2.6", + "underscore": "^1.13.2", + "update-section": "^0.3.3" + }, + "bin": { + "doctoc": "doctoc.js" + } + }, + "node_modules/doctoc/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/doctoc/node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "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" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", + "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "dev": true, + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "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" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "dependencies": { + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", + "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "dependencies": { + "fault": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/micromark/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", + "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.19.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", + "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1011705", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", + "dev": true, + "dependencies": { + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "dev": true, + "dependencies": { + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "dev": true, + "dependencies": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", + "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-section": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", + "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.7", @@ -34,7 +6633,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -44,20 +6642,17 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/source-map": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -66,14 +6661,12 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -92,6 +6685,11 @@ "bignumber.js": "^9.0.0" } }, + "@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + }, "@noble/secp256k1": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", @@ -205,7 +6803,6 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", - "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -215,7 +6812,6 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -224,8 +6820,7 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/express": { "version": "4.17.13", @@ -268,8 +6863,7 @@ "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, "@types/mdast": { "version": "3.0.10", @@ -365,7 +6959,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -374,26 +6967,22 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -403,14 +6992,12 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -422,7 +7009,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -431,7 +7017,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -439,14 +7024,12 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -462,7 +7045,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -475,7 +7057,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -487,7 +7068,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -501,7 +7081,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -511,7 +7090,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.5.0", @@ -526,19 +7106,18 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "accepts": { "version": "1.3.8", @@ -553,14 +7132,13 @@ "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "requires": {} }, "agent-base": { "version": "6.0.2", @@ -599,7 +7177,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -640,7 +7217,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "requires": {} }, "anchor-markdown-header": { "version": "0.6.0", @@ -776,6 +7353,14 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "requires": { + "@noble/hashes": "^1.2.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -949,7 +7534,6 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001358", "electron-to-chromium": "^1.4.164", @@ -974,8 +7558,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-indexof": { "version": "1.1.1", @@ -1029,8 +7612,7 @@ "caniuse-lite": { "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", - "dev": true + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==" }, "ccount": { "version": "1.1.0", @@ -1080,8 +7662,7 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "cipher-base": { "version": "1.0.4", @@ -1563,8 +8144,7 @@ "electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", - "dev": true + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" }, "elliptic": { "version": "6.5.4", @@ -1611,7 +8191,6 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1662,8 +8241,7 @@ "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" }, "es-to-primitive": { "version": "1.2.1", @@ -1683,8 +8261,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -1702,7 +8279,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1712,7 +8288,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -1720,16 +8295,14 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "etag": { "version": "1.8.1", @@ -1864,8 +8437,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.11", @@ -1883,8 +8455,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fastest-levenshtein": { "version": "1.0.14", @@ -2091,8 +8662,7 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "globby": { "version": "11.1.0", @@ -2111,8 +8681,7 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "handle-thing": { "version": "2.0.1", @@ -2136,8 +8705,7 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { "version": "1.0.0", @@ -2712,7 +9280,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2722,14 +9289,12 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "jssha": { "version": "3.2.0", @@ -2745,8 +9310,7 @@ "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" }, "locate-path": { "version": "5.0.0", @@ -2935,8 +9499,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -3086,14 +9649,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -3173,8 +9734,7 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "no-case": { "version": "3.0.4", @@ -3260,8 +9820,7 @@ "node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "normalize-path": { "version": "3.0.0", @@ -3527,8 +10086,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -3690,7 +10248,8 @@ "ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==" + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "requires": {} } } }, @@ -3959,7 +10518,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -4014,7 +10572,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -4164,14 +10721,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4264,6 +10819,14 @@ "xtend": "^4.0.2" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -4284,14 +10847,6 @@ "es-abstract": "^1.19.5" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4311,7 +10866,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -4325,8 +10879,7 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "tar-fs": { "version": "2.1.1", @@ -4355,7 +10908,6 @@ "version": "5.15.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -4366,8 +10918,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" } } }, @@ -4375,7 +10926,6 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", @@ -4550,7 +11100,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", - "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -4566,7 +11115,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -4660,7 +11208,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -4679,7 +11226,6 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -4885,7 +11431,8 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -4902,8 +11449,7 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" }, "websocket-driver": { "version": "0.7.4", @@ -4970,7 +11516,8 @@ "ws": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "requires": {} }, "xhr2": { "version": "0.2.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index cc729a867..0acb8bd94 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -1,8 +1,5777 @@ { "name": "ctl-scaffold", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "ctl-scaffold", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "1.0.1", + "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@emurgo/cardano-serialization-lib-browser": "11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/json-bigint": " 1.0.0", + "@noble/secp256k1": "^1.7.0", + "apply-args-browser": "0.0.1", + "apply-args-nodejs": "0.0.1", + "base64-js": "^1.5.1", + "big-integer": "1.6.51", + "bignumber.js": "^9.1.1", + "bip39": "^3.1.0", + "blakejs": "1.2.1", + "bufferutil": "4.0.5", + "jssha": "3.2.0", + "node-polyfill-webpack-plugin": "1.1.4", + "puppeteer-core": "^15.3.2", + "reconnecting-websocket": "4.4.0", + "uniqid": "5.4.0", + "ws": "8.4.0", + "xhr2": "0.2.1" + }, + "devDependencies": { + "buffer": "6.0.3", + "html-webpack-plugin": "5.5.0", + "webpack": "5.67.0", + "webpack-cli": "4.10", + "webpack-dev-server": "4.7.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emurgo/cardano-message-signing-browser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-browser/-/cardano-message-signing-browser-1.0.1.tgz", + "integrity": "sha512-yC4Ymq44WR0bXO1wzxCoyc2W/RD1KSAla0oYhin7IYoVkp2raGp8wt7QNF4pDdNnTcejn5fyPyYY9dL4666H1w==" + }, + "node_modules/@emurgo/cardano-message-signing-nodejs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", + "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" + }, + "node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", + "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" + }, + "node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", + "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@mlabs-haskell/csl-gc-wrapper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", + "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + }, + "node_modules/@mlabs-haskell/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", + "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apply-args-browser": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", + "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" + }, + "node_modules/apply-args-nodejs": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", + "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "dependencies": { + "@noble/hashes": "^1.2.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "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" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", + "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001358", + "electron-to-chromium": "^1.4.164", + "node-releases": "^2.0.5", + "update-browserslist-db": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/bufferutil": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001358", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "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" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "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" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/devtools-protocol": { + "version": "0.0.1011705", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", + "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "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" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", + "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "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" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", + "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", + "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.19.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", + "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1011705", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", + "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.7", @@ -34,7 +5803,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -44,20 +5812,17 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/source-map": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -66,14 +5831,12 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -92,6 +5855,11 @@ "bignumber.js": "^9.0.0" } }, + "@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + }, "@noble/secp256k1": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", @@ -165,7 +5933,6 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", - "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -175,7 +5942,6 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -184,8 +5950,7 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/express": { "version": "4.17.13", @@ -228,8 +5993,7 @@ "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, "@types/mime": { "version": "1.3.2", @@ -310,7 +6074,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -319,26 +6082,22 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -348,14 +6107,12 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -367,7 +6124,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -376,7 +6132,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -384,14 +6139,12 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -407,7 +6160,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -420,7 +6172,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -432,7 +6183,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -446,7 +6196,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -456,7 +6205,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.5.0", @@ -471,19 +6221,18 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "accepts": { "version": "1.3.8", @@ -498,14 +6247,13 @@ "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "requires": {} }, "agent-base": { "version": "6.0.2", @@ -544,7 +6292,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -585,7 +6332,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "requires": {} }, "ansi-html-community": { "version": "0.0.8", @@ -706,6 +6453,14 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "requires": { + "@noble/hashes": "^1.2.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -879,7 +6634,6 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001358", "electron-to-chromium": "^1.4.164", @@ -904,8 +6658,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-indexof": { "version": "1.1.1", @@ -959,8 +6712,7 @@ "caniuse-lite": { "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", - "dev": true + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==" }, "chokidar": { "version": "3.5.3", @@ -986,8 +6738,7 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "cipher-base": { "version": "1.0.4", @@ -1435,8 +7186,7 @@ "electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", - "dev": true + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" }, "elliptic": { "version": "6.5.4", @@ -1477,7 +7227,6 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1528,8 +7277,7 @@ "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" }, "es-to-primitive": { "version": "1.2.1", @@ -1549,8 +7297,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -1562,7 +7309,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1572,7 +7318,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -1580,16 +7325,14 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "etag": { "version": "1.8.1", @@ -1718,8 +7461,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.11", @@ -1737,8 +7479,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fastest-levenshtein": { "version": "1.0.14", @@ -1930,8 +7671,7 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "globby": { "version": "11.1.0", @@ -1950,8 +7690,7 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "handle-thing": { "version": "2.0.1", @@ -1975,8 +7714,7 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { "version": "1.0.0", @@ -2517,7 +8255,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2527,14 +8264,12 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "jssha": { "version": "3.2.0", @@ -2550,8 +8285,7 @@ "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" }, "locate-path": { "version": "5.0.0", @@ -2610,8 +8344,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -2660,14 +8393,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -2747,8 +8478,7 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "no-case": { "version": "3.0.4", @@ -2834,8 +8564,7 @@ "node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "normalize-path": { "version": "3.0.0", @@ -3087,8 +8816,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -3250,7 +8978,8 @@ "ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==" + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "requires": {} } } }, @@ -3474,7 +9203,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -3529,7 +9257,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -3679,14 +9406,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3779,6 +9504,14 @@ "xtend": "^4.0.2" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -3799,14 +9532,6 @@ "es-abstract": "^1.19.5" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3826,7 +9551,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -3840,8 +9564,7 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "tar-fs": { "version": "2.1.1", @@ -3870,7 +9593,6 @@ "version": "5.15.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -3881,8 +9603,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" } } }, @@ -3890,7 +9611,6 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", @@ -4000,7 +9720,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", - "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -4010,7 +9729,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -4082,7 +9800,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -4101,7 +9818,6 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -4307,7 +10023,8 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -4324,8 +10041,7 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" }, "websocket-driver": { "version": "0.7.4", @@ -4392,7 +10108,8 @@ "ws": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "requires": {} }, "xhr2": { "version": "0.2.1", From c8bb1c9168dbc9897d65c615dcc98a85385245b6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 May 2023 17:57:50 +0400 Subject: [PATCH 173/478] Make mnemonic loading a feature of WalletSpec interface --- src/Contract/Wallet.purs | 8 +++---- src/Contract/Wallet/Key.purs | 29 ++++++++++++++++++++++++ src/Internal/Wallet/Bip32.purs | 34 ---------------------------- src/Internal/Wallet/Spec.purs | 41 ++++++++++++++++++++++++++++++++-- test/Wallet/Bip32.purs | 2 +- 5 files changed, 72 insertions(+), 42 deletions(-) diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index b5e819a8c..7cfcdf3cb 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -79,10 +79,6 @@ import Ctl.Internal.Wallet , walletToWalletExtension ) as X import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet -import Ctl.Internal.Wallet.Bip32 - ( mkKeyWalletFromMnemonic - , mkKeyWalletSpecFromMnemonic - ) as X import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) @@ -91,10 +87,12 @@ import Ctl.Internal.Wallet.Key ) as X import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) as X import Ctl.Internal.Wallet.Spec - ( PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) + ( MnemonicSource(MnemonicString, MnemonicFile) + , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , WalletSpec ( UseKeys + , UseMnemonic , ConnectToNami , ConnectToGero , ConnectToFlint diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index acd9f7065..207763223 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -1,6 +1,8 @@ +-- | `KeyWallet` type and its utility functions. module Contract.Wallet.Key ( module X , publicKeyFromPrivateKey + , mkKeyWalletFromMnemonic ) where import Prelude @@ -8,12 +10,39 @@ import Prelude import Ctl.Internal.Cardano.Types.Transaction (PublicKey, mkFromCslPubKey) import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) as Internal import Ctl.Internal.Serialization.Types (PrivateKey) +import Ctl.Internal.Wallet.Bip32 + ( bip32ToPrivateKey + , cip1852AccountFromMnemonic + , derivePaymentKey + , deriveStakeKey + ) +import Ctl.Internal.Wallet.Key + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + , privateKeysToKeyWallet + ) import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) , keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey , privateKeysToKeyWallet ) as X +import Data.Either (Either) +import Data.Maybe (Maybe(Just)) +import Data.UInt (UInt) publicKeyFromPrivateKey :: PrivateKey -> PublicKey publicKeyFromPrivateKey = mkFromCslPubKey <<< Internal.publicKeyFromPrivateKey + +-- | Create a wallet given a mnemonic phrase and account index +mkKeyWalletFromMnemonic :: String -> UInt -> Either String KeyWallet +mkKeyWalletFromMnemonic phrase accountIndex = do + account <- cip1852AccountFromMnemonic phrase accountIndex + let + paymentKey = derivePaymentKey account zero # bip32ToPrivateKey + stakeKey = deriveStakeKey account # bip32ToPrivateKey + pure $ + privateKeysToKeyWallet + (PrivatePaymentKey paymentKey) + (Just $ PrivateStakeKey stakeKey) diff --git a/src/Internal/Wallet/Bip32.purs b/src/Internal/Wallet/Bip32.purs index 32848c1d7..642664892 100644 --- a/src/Internal/Wallet/Bip32.purs +++ b/src/Internal/Wallet/Bip32.purs @@ -7,21 +7,11 @@ module Ctl.Internal.Wallet.Bip32 , derivePaymentKey , deriveChangeKey , deriveStakeKey - , mkKeyWalletSpecFromMnemonic - , mkKeyWalletFromMnemonic ) where import Contract.Prelude -import Contract.Config - ( PrivatePaymentKey(PrivatePaymentKey) - , PrivatePaymentKeySource(PrivatePaymentKeyValue) - , PrivateStakeKey(PrivateStakeKey) - , PrivateStakeKeySource(PrivateStakeKeyValue) - , WalletSpec(UseKeys) - ) import Ctl.Internal.Serialization.Types (Bip32PrivateKey, PrivateKey) -import Ctl.Internal.Wallet.Key (KeyWallet, privateKeysToKeyWallet) import Data.UInt (UInt) import Data.UInt as UInt @@ -83,27 +73,3 @@ deriveStakeKey (Cip1852Account key) = key # derivePrivateKey (UInt.fromInt 2) false # derivePrivateKey (UInt.fromInt 0) false - --- | Create a key wallet spec given a mnemonic phrase and account index -mkKeyWalletSpecFromMnemonic :: String -> UInt -> Either String WalletSpec -mkKeyWalletSpecFromMnemonic phrase accountIndex = do - account <- cip1852AccountFromMnemonic phrase accountIndex - let - paymentKey = derivePaymentKey account zero # bip32ToPrivateKey - stakeKey = deriveStakeKey account # bip32ToPrivateKey - pure $ - UseKeys - (PrivatePaymentKeyValue $ PrivatePaymentKey paymentKey) - (Just $ PrivateStakeKeyValue $ PrivateStakeKey stakeKey) - --- | Create a wallet given a mnemonic phrase and account index -mkKeyWalletFromMnemonic :: String -> UInt -> Either String KeyWallet -mkKeyWalletFromMnemonic phrase accountIndex = do - account <- cip1852AccountFromMnemonic phrase accountIndex - let - paymentKey = derivePaymentKey account zero # bip32ToPrivateKey - stakeKey = deriveStakeKey account # bip32ToPrivateKey - pure $ - privateKeysToKeyWallet - (PrivatePaymentKey paymentKey) - (Just $ PrivateStakeKey stakeKey) diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 29e014374..f2b06fc22 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -1,6 +1,7 @@ module Ctl.Internal.Wallet.Spec ( WalletSpec ( UseKeys + , UseMnemonic , ConnectToNami , ConnectToGero , ConnectToFlint @@ -9,6 +10,7 @@ module Ctl.Internal.Wallet.Spec , ConnectToNuFi , ConnectToLace ) + , MnemonicSource(MnemonicString, MnemonicFile) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , mkWalletBySpec @@ -16,6 +18,7 @@ module Ctl.Internal.Wallet.Spec import Prelude +import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Wallet ( Wallet , WalletExtension @@ -30,14 +33,28 @@ import Ctl.Internal.Wallet , mkKeyWallet , mkWalletAff ) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) +import Ctl.Internal.Wallet.Bip32 + ( bip32ToPrivateKey + , cip1852AccountFromMnemonic + , derivePaymentKey + , deriveStakeKey + ) +import Ctl.Internal.Wallet.Key + ( PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + ) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privateStakeKeyFromFile ) -import Data.Maybe (Maybe) +import Data.Bifunctor (lmap) +import Data.Maybe (Maybe(Just)) import Data.Traversable (for) +import Data.UInt (UInt) import Effect.Aff (Aff) +import Effect.Exception (error) +import Node.Encoding as Encoding +import Node.FS.Aff (readTextFile) import Node.Path (FilePath) data PrivatePaymentKeySource @@ -48,9 +65,14 @@ data PrivateStakeKeySource = PrivateStakeKeyFile FilePath | PrivateStakeKeyValue PrivateStakeKey +data MnemonicSource + = MnemonicString String + | MnemonicFile FilePath + -- | A data type to describe instructions on how to initialize a wallet. data WalletSpec = UseKeys PrivatePaymentKeySource (Maybe PrivateStakeKeySource) + | UseMnemonic MnemonicSource UInt | ConnectToNami | ConnectToGero | ConnectToFlint @@ -70,6 +92,11 @@ mkWalletBySpec = case _ of PrivateStakeKeyFile filePath -> privateStakeKeyFromFile filePath PrivateStakeKeyValue key -> pure key pure $ mkKeyWallet privatePaymentKey mbPrivateStakeKey + UseMnemonic (MnemonicString mnemonic) accountIndex -> do + keyFromMnemonicHelper mnemonic accountIndex + UseMnemonic (MnemonicFile path) accountIndex -> do + mnemonic <- readTextFile Encoding.UTF8 path + keyFromMnemonicHelper mnemonic accountIndex ConnectToNami -> mkWalletAff NamiWallet ConnectToGero -> mkWalletAff GeroWallet ConnectToFlint -> mkWalletAff FlintWallet @@ -77,3 +104,13 @@ mkWalletBySpec = case _ of ConnectToLode -> mkWalletAff LodeWallet ConnectToNuFi -> mkWalletAff NuFiWallet ConnectToLace -> mkWalletAff LaceWallet + +keyFromMnemonicHelper :: String -> UInt -> Aff Wallet +keyFromMnemonicHelper mnemonic accountIndex = do + account <- liftEither $ lmap error + $ cip1852AccountFromMnemonic mnemonic accountIndex + let + paymentKey = derivePaymentKey account zero # bip32ToPrivateKey + stakeKey = deriveStakeKey account # bip32ToPrivateKey + pure $ mkKeyWallet (PrivatePaymentKey paymentKey) + (Just $ PrivateStakeKey stakeKey) diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index cab1d85a8..b63b0d52f 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -4,7 +4,7 @@ module Test.Ctl.Wallet.Bip32 import Contract.Prelude -import Contract.Wallet (mkKeyWalletFromMnemonic) +import Contract.Wallet.Key (mkKeyWalletFromMnemonic) import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId) , addressFromBech32 From cfc205fce6f152913176e39a9b4c295a468b8658 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 May 2023 18:06:26 +0400 Subject: [PATCH 174/478] - add functions for working with derivation paths - expose UseMnemonic wallet spec via Contract.Config - add test fixtures from Eternl --- src/Contract/Config.purs | 5 +- src/Contract/Wallet/Key.purs | 33 ++----------- src/Internal/Wallet/Spec.purs | 87 ++++++++++++++++++++++++++++------- test/Wallet/Bip32.purs | 86 +++++++++++++++++++++------------- 4 files changed, 134 insertions(+), 77 deletions(-) diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 515924023..22eb6ac7a 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -75,8 +75,11 @@ import Ctl.Internal.Wallet.Key , PrivateStakeKey(PrivateStakeKey) ) import Ctl.Internal.Wallet.Spec - ( PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) + ( Cip1852DerivationPath + , MnemonicSource(MnemonicString, MnemonicFile) + , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) + , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , WalletSpec ( UseKeys , ConnectToNami diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index 207763223..cf5c33441 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -2,7 +2,6 @@ module Contract.Wallet.Key ( module X , publicKeyFromPrivateKey - , mkKeyWalletFromMnemonic ) where import Prelude @@ -10,39 +9,17 @@ import Prelude import Ctl.Internal.Cardano.Types.Transaction (PublicKey, mkFromCslPubKey) import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) as Internal import Ctl.Internal.Serialization.Types (PrivateKey) -import Ctl.Internal.Wallet.Bip32 - ( bip32ToPrivateKey - , cip1852AccountFromMnemonic - , derivePaymentKey - , deriveStakeKey - ) -import Ctl.Internal.Wallet.Key - ( KeyWallet - , PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - , privateKeysToKeyWallet - ) import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) , keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey , privateKeysToKeyWallet ) as X -import Data.Either (Either) -import Data.Maybe (Maybe(Just)) -import Data.UInt (UInt) +import Ctl.Internal.Wallet.Spec + ( Cip1852DerivationPath + , StakeKeyPresence(WithStakeKey, WithoutStakeKey) + , mkKeyWalletFromMnemonic + ) as X publicKeyFromPrivateKey :: PrivateKey -> PublicKey publicKeyFromPrivateKey = mkFromCslPubKey <<< Internal.publicKeyFromPrivateKey - --- | Create a wallet given a mnemonic phrase and account index -mkKeyWalletFromMnemonic :: String -> UInt -> Either String KeyWallet -mkKeyWalletFromMnemonic phrase accountIndex = do - account <- cip1852AccountFromMnemonic phrase accountIndex - let - paymentKey = derivePaymentKey account zero # bip32ToPrivateKey - stakeKey = deriveStakeKey account # bip32ToPrivateKey - pure $ - privateKeysToKeyWallet - (PrivatePaymentKey paymentKey) - (Just $ PrivateStakeKey stakeKey) diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index f2b06fc22..e8bdab7a3 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -10,17 +10,20 @@ module Ctl.Internal.Wallet.Spec , ConnectToNuFi , ConnectToLace ) + , Cip1852DerivationPath + , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , MnemonicSource(MnemonicString, MnemonicFile) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , mkWalletBySpec + , mkKeyWalletFromMnemonic ) where import Prelude import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Wallet - ( Wallet + ( Wallet(KeyWallet) , WalletExtension ( NamiWallet , GeroWallet @@ -40,15 +43,20 @@ import Ctl.Internal.Wallet.Bip32 , deriveStakeKey ) import Ctl.Internal.Wallet.Key - ( PrivatePaymentKey(PrivatePaymentKey) + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) + , privateKeysToKeyWallet ) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privateStakeKeyFromFile ) import Data.Bifunctor (lmap) -import Data.Maybe (Maybe(Just)) +import Data.Either (Either) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Show.Generic (genericShow) import Data.Traversable (for) import Data.UInt (UInt) import Effect.Aff (Aff) @@ -61,18 +69,40 @@ data PrivatePaymentKeySource = PrivatePaymentKeyFile FilePath | PrivatePaymentKeyValue PrivatePaymentKey +derive instance Generic PrivatePaymentKeySource _ + +instance Show PrivatePaymentKeySource where + show = genericShow + data PrivateStakeKeySource = PrivateStakeKeyFile FilePath | PrivateStakeKeyValue PrivateStakeKey +derive instance Generic PrivateStakeKeySource _ + +instance Show PrivateStakeKeySource where + show = genericShow + data MnemonicSource = MnemonicString String | MnemonicFile FilePath +derive instance Generic MnemonicSource _ + +instance Show MnemonicSource where + show = genericShow + +data StakeKeyPresence = WithStakeKey | WithoutStakeKey + +derive instance Generic StakeKeyPresence _ + +instance Show StakeKeyPresence where + show = genericShow + -- | A data type to describe instructions on how to initialize a wallet. data WalletSpec = UseKeys PrivatePaymentKeySource (Maybe PrivateStakeKeySource) - | UseMnemonic MnemonicSource UInt + | UseMnemonic MnemonicSource Cip1852DerivationPath StakeKeyPresence | ConnectToNami | ConnectToGero | ConnectToFlint @@ -81,6 +111,18 @@ data WalletSpec | ConnectToNuFi | ConnectToLace +derive instance Generic WalletSpec _ + +instance Show WalletSpec where + show = genericShow + +-- | Contains non-constant parameters for a CIP-1852 derivation path. +-- | See https://cips.cardano.org/cips/cip1852/ and `doc/key-management.md`. +type Cip1852DerivationPath = + { accountIndex :: UInt + , addressIndex :: UInt + } + mkWalletBySpec :: WalletSpec -> Aff Wallet mkWalletBySpec = case _ of UseKeys paymentKeySpec mbStakeKeySpec -> do @@ -92,11 +134,13 @@ mkWalletBySpec = case _ of PrivateStakeKeyFile filePath -> privateStakeKeyFromFile filePath PrivateStakeKeyValue key -> pure key pure $ mkKeyWallet privatePaymentKey mbPrivateStakeKey - UseMnemonic (MnemonicString mnemonic) accountIndex -> do - keyFromMnemonicHelper mnemonic accountIndex - UseMnemonic (MnemonicFile path) accountIndex -> do + UseMnemonic (MnemonicString mnemonic) derivationPath stakeKeyPresence -> do + map KeyWallet $ liftEither $ lmap error $ + mkKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence + UseMnemonic (MnemonicFile path) derivationPath stakeKeyPresence -> do mnemonic <- readTextFile Encoding.UTF8 path - keyFromMnemonicHelper mnemonic accountIndex + map KeyWallet $ liftEither $ lmap error $ + mkKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence ConnectToNami -> mkWalletAff NamiWallet ConnectToGero -> mkWalletAff GeroWallet ConnectToFlint -> mkWalletAff FlintWallet @@ -105,12 +149,21 @@ mkWalletBySpec = case _ of ConnectToNuFi -> mkWalletAff NuFiWallet ConnectToLace -> mkWalletAff LaceWallet -keyFromMnemonicHelper :: String -> UInt -> Aff Wallet -keyFromMnemonicHelper mnemonic accountIndex = do - account <- liftEither $ lmap error - $ cip1852AccountFromMnemonic mnemonic accountIndex - let - paymentKey = derivePaymentKey account zero # bip32ToPrivateKey - stakeKey = deriveStakeKey account # bip32ToPrivateKey - pure $ mkKeyWallet (PrivatePaymentKey paymentKey) - (Just $ PrivateStakeKey stakeKey) +-- | Create a wallet given a mnemonic phrase, account index, address index and +-- | stake key presence flag. +-- | See `doc/key-management.md` for more info. +mkKeyWalletFromMnemonic + :: String + -> Cip1852DerivationPath + -> StakeKeyPresence + -> Either String KeyWallet +mkKeyWalletFromMnemonic phrase { accountIndex, addressIndex } stakeKeyPresence = + do + account <- cip1852AccountFromMnemonic phrase accountIndex + let + paymentKey = derivePaymentKey account addressIndex # bip32ToPrivateKey + mbStakeKeySpec = case stakeKeyPresence of + WithStakeKey -> Just $ PrivateStakeKey $ deriveStakeKey account # + bip32ToPrivateKey + WithoutStakeKey -> Nothing + pure $ privateKeysToKeyWallet (PrivatePaymentKey paymentKey) mbStakeKeySpec diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index b63b0d52f..0247eb6f8 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -4,50 +4,74 @@ module Test.Ctl.Wallet.Bip32 import Contract.Prelude -import Contract.Wallet.Key (mkKeyWalletFromMnemonic) +import Contract.Wallet.Key + ( StakeKeyPresence(WithStakeKey) + , mkKeyWalletFromMnemonic + ) import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId) , addressFromBech32 ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) +import Data.Lens (_Left, preview) +import Data.UInt as UInt import Effect.Aff (Aff) -import Mote (group, test) -import Test.Ctl.Utils (assertTrue) +import Mote (group, only, test) +import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit -suite = +suite = only do group "BIP32/BIP39/CIP1852 wallets" do - test "generates valid wallets for valid phrases" do - assertTrue "Valid phrase produces correct wallet" $ - case mkKeyWalletFromMnemonic goodPhrase zero of - Left _ -> false - Right (KeyWallet wallet) -> - Just (wallet.address MainnetId) == addressFromBech32 - goodPhraseAddress0 - assertTrue "Account index produces correct wallet" $ - case mkKeyWalletFromMnemonic goodPhrase one of - Left _ -> false - Right (KeyWallet wallet) -> - Just (wallet.address MainnetId) == addressFromBech32 - goodPhraseAddress1 + group "generates valid wallets for valid phrases" do + for_ accs \(accountIndex /\ addressIndex /\ addressStr) -> do + test + ( "Account index produces correct wallet (m/1852'/1815'/" + <> show accountIndex + <> "'/" + <> show addressIndex + <> ")" + ) + do + addressFromBech32 addressStr `shouldEqual` + hush + ( mkKeyWalletFromMnemonic phrase1 + { accountIndex: UInt.fromInt accountIndex + , addressIndex: UInt.fromInt addressIndex + } + WithStakeKey <#> + \(KeyWallet wallet) -> wallet.address MainnetId + ) + group "Invalid mnemonics" do test "handles errors for invalid phrases" do - assertTrue "Invalid phrase length returns an error" $ - case mkKeyWalletFromMnemonic invalidPhrase zero of - Left e -> e == "Error: Invalid mnemonic" - Right _ -> false - assertTrue "Invalid phrase checksum returns an error" $ - case mkKeyWalletFromMnemonic invalidChecksum zero of - Left e -> e == "Error: Invalid mnemonic checksum" - Right _ -> false + blush (mkKeyWalletFromMnemonic invalidPhrase zero WithStakeKey) + `shouldEqual` Just "Error: Invalid mnemonic" + blush (mkKeyWalletFromMnemonic invalidChecksum zero WithStakeKey) + `shouldEqual` Just "Error: Invalid mnemonic checksum" where - goodPhrase = - "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve" - goodPhraseAddress0 = - "addr1q9w8atxfen0fqd99rnagywam68n7tvzg4g5t39azwtgm2uy0cwl6t7cd6sffn3l8ryyfn4ztw009gqtumhenxahughnspt8frx" - goodPhraseAddress1 = - "addr1q85w3avkx4xvsadj57sw4eumrl8tcsq6yhr3evv4zy0gavhmyjhs96g96jax70qqyskmwrzvc6jm45w4y76q29vful2snqc60k" + blush = preview _Left invalidPhrase = "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve" invalidChecksum = "twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve twelve zebra" + phrase1 = + "what abstract myself forum setup leader series maximum home abuse shadow wreck inflict dust basket cycle involve quick abstract eagle staff town voyage raven" + -- these fixtures are from Eternl wallet + accs = + [ 0 /\ 0 /\ + "addr1q8day0u0gtx3302u5mmgmw20q67s9mkglte8y8kqk75jge5mvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfswlmg44" + , 0 /\ 1 /\ + "addr1qyp2qjzpq6mg3yd4uxnfl40pr7z7l9fl64tuuce45e00ejumvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfszpjxxa" + , 0 /\ 2 /\ + "addr1q94zxqrq57c8j05gdz2vq06gdejxlngpyezeyxask8w5j9umvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfskqdfjm" + , 0 /\ 3 /\ + "addr1q8rpcfpamcdw3ldhz65st3sh2artdv0vtpqafelz9a0nt3umvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfs7zugcf" + , 0 /\ 4 /\ + "addr1qyn58rgkzd9jlw8ay7hz34lwdaa0u8l2ww7qkxp2s08y88ymvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfsx84jh7" + , 1 /\ 0 /\ + "addr1qyka9awkxtcm4py0yf9qnzdeh786zjqp6lt37purjrxtaju6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpq4xgxpq" + , 1 /\ 1 /\ + "addr1q9mmg8l2w7ar4cj89jte699dxuu0u3partkjt7fqdga5a7u6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpqnux32a" + , 1 /\ 2 /\ + "addr1q8eddt79d4nt3hazvjdwa3cy27nukxnvv0j5x7g28atn3ey6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpq66x2a8" + ] From 99e7aa92c4d178caa48c7c0a5318f5bdafc9598b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 May 2023 18:38:00 +0400 Subject: [PATCH 175/478] Add Contract.Wallet.withKeyWalletFromMnemonic and tests --- src/Contract/Wallet.purs | 22 +++++++++++++ test/Plutip.purs | 2 ++ test/Plutip/Contract/Mnemonics.purs | 48 +++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 test/Plutip/Contract/Mnemonics.purs diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 7cfcdf3cb..e6cdd7e1b 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -2,6 +2,7 @@ module Contract.Wallet ( mkKeyWalletFromPrivateKeys , withKeyWallet + , withKeyWalletFromMnemonic , ownStakePubKeyHash , ownPaymentPubKeyHash , getWalletBalance @@ -31,6 +32,7 @@ import Contract.Utxos (UtxoMap) import Contract.Value (Value) import Contract.Value as Value import Contract.Wallet.Key (KeyWallet, privateKeysToKeyWallet) +import Control.Monad.Error.Class (liftEither) import Control.Monad.Reader (asks, local) import Ctl.Internal.Contract.Wallet ( getChangeAddress @@ -86,6 +88,11 @@ import Ctl.Internal.Wallet.Key , privateKeysToKeyWallet ) as X import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) as X +import Ctl.Internal.Wallet.Spec + ( Cip1852DerivationPath + , StakeKeyPresence + , mkKeyWalletFromMnemonic + ) import Ctl.Internal.Wallet.Spec ( MnemonicSource(MnemonicString, MnemonicFile) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) @@ -103,6 +110,7 @@ import Ctl.Internal.Wallet.Spec ) ) as X import Data.Array (head) +import Data.Bifunctor (lmap) import Data.Foldable (fold, foldr) import Data.Map as Map import Data.Maybe (Maybe(Just), fromMaybe) @@ -120,6 +128,20 @@ withKeyWallet withKeyWallet wallet = local _ { wallet = Just $ Wallet.KeyWallet wallet } +withKeyWalletFromMnemonic + :: forall (a :: Type) + . String + -> Cip1852DerivationPath + -> StakeKeyPresence + -> Contract a + -> Contract a +withKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence contract = do + keyWallet <- liftEither $ lmap (error <<< addNote) $ + mkKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence + withKeyWallet keyWallet contract + where + addNote = append "withKeyWalletFromMnemonic: " + mkKeyWalletFromPrivateKeys :: PrivatePaymentKey -> Maybe PrivateStakeKey -> KeyWallet mkKeyWalletFromPrivateKeys payment mbStake = privateKeysToKeyWallet payment diff --git a/test/Plutip.purs b/test/Plutip.purs index a4866cf2c..6e7edfe2f 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -33,6 +33,7 @@ import Mote.Monad (mapTest) import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert +import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics import Test.Ctl.Plutip.Contract.NetworkId as NetworkId import Test.Ctl.Plutip.ExUnits as ExUnits import Test.Ctl.Plutip.Logging as Logging @@ -48,6 +49,7 @@ main = interruptOnSignal SIGINT =<< launchAff do Utils.interpretWithConfig defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } $ group "Plutip" do + testPlutipContracts config Mnemonics.suite group "ExUnits - normal limits" do testPlutipContracts config $ ExUnits.mkFailingSuite 3000 testPlutipContracts config $ ExUnits.mkSuite 2550 diff --git a/test/Plutip/Contract/Mnemonics.purs b/test/Plutip/Contract/Mnemonics.purs new file mode 100644 index 000000000..c6445c161 --- /dev/null +++ b/test/Plutip/Contract/Mnemonics.purs @@ -0,0 +1,48 @@ +module Test.Ctl.Plutip.Contract.Mnemonics (suite) where + +import Prelude + +import Contract.Address (addressFromBech32) +import Contract.Test (ContractTest) +import Contract.Test.Mote (TestPlanM) +import Contract.Test.Plutip (withWallets) +import Contract.Wallet (getWalletAddresses, withKeyWalletFromMnemonic) +import Contract.Wallet.Key (StakeKeyPresence(WithStakeKey)) +import Data.Array (head) +import Data.UInt as UInt +import Mote (group, test) +import Test.Spec.Assertions (shouldEqual) + +suite :: TestPlanM ContractTest Unit +suite = do + group "CIP-1852 mnemonics" do + test "Allows to build multiple KeyWallets" do + withWallets unit \_ -> do + do + addr1 <- withKeyWalletFromMnemonic + phrase1 + { accountIndex: UInt.fromInt 0 + , addressIndex: UInt.fromInt 0 + } + WithStakeKey + do + head <$> getWalletAddresses + addrExpected <- addressFromBech32 + "addr1q8day0u0gtx3302u5mmgmw20q67s9mkglte8y8kqk75jge5mvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfswlmg44" + addr1 `shouldEqual` pure addrExpected + do + addr1 <- withKeyWalletFromMnemonic + phrase1 + { accountIndex: UInt.fromInt 1 + , addressIndex: UInt.fromInt 1 + } + WithStakeKey + do + head <$> getWalletAddresses + addrExpected <- addressFromBech32 + "addr1q9mmg8l2w7ar4cj89jte699dxuu0u3partkjt7fqdga5a7u6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpqnux32a" + addr1 `shouldEqual` pure addrExpected + + where + phrase1 = + "what abstract myself forum setup leader series maximum home abuse shadow wreck inflict dust basket cycle involve quick abstract eagle staff town voyage raven" From 1f88709a7521f931a6c4d44e9ed018fd114696ff Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 May 2023 18:38:39 +0400 Subject: [PATCH 176/478] Add docs for key management --- doc/getting-started.md | 10 ++---- doc/key-management.md | 81 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 doc/key-management.md diff --git a/doc/getting-started.md b/doc/getting-started.md index 6f03b25a5..de79e4384 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -217,15 +217,9 @@ You can import your scripts to use with CTL. See [importing-scripts](./importing ### Without a light wallet -We provide `KeyWallet` to enable testing outside of the browser, or in-browser without a light wallet installed. To generate a key, you can use `cardano-cli` as follows: +We provide `KeyWallet` to enable testing outside of the browser, or in-browser without a light wallet installed. -```shell -$ cardano-cli address key-gen --normal-key --signing-key-file payment.skey --verification-key-file payment.vkey -``` - -The signing key can be loaded to CTL using `WalletSpec`'s `UseKeys` constructor. See [`examples/KeyWallet/Internal/Pkh2PkhContract.purs`](../examples/KeyWallet/Internal/Pkh2PkhContract.purs#L49). - -From here you can submit transactions that will be signed with your private key, or perhaps export transactions to be tested with external tools such as [`plutip` testing tool](https://github.com/mlabs-haskell/plutip). +See [here](./key-management.md) ### With a light wallet diff --git a/doc/key-management.md b/doc/key-management.md new file mode 100644 index 000000000..b5e0a9000 --- /dev/null +++ b/doc/key-management.md @@ -0,0 +1,81 @@ + + + +- [Key Management](#key-management) + - [`KeyWallet` in CTL](#keywallet-in-ctl) + - [Loading private keys as `KeyWallet`s](#loading-private-keys-as-keywallets) + - [From `cardano-cli`-compatible JSON envelopes](#from-cardano-cli-compatible-json-envelopes) + - [From CIP1852 mnemonics](#from-cip1852-mnemonics) + + + +# Key Management + +The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cips/cip1852/). + +For an address to be built, the user must provide some entropy for private key derivation and a *derivation path*, that specifies a list of cryptographic operations to perform on the "parent" or "root" key to get the "child" private key that can be used for signing. + +The derivation path is a list of numbers, commonly written separated by `/` prefixed with `m`: + +``` +m + / purpose' (always 1852) + / coin_type' (always 1815) + / accountIndex' + / role (specified in CIP-1852) + / addressIndex +``` + +`'` indicates *hardened* flag presence for the derivation function, which is a specific cryptographic feature that ensures that leaking the "child" key will not compromise the "parent". + +`Role` is determined by the algorithm (different constants are used for payment, change and stake keys). + +Effectively, `accountIndex` and `addressIndex` fully determine the address. + +Note that within an account, the same stake key is used for all the addresses, thus making it trivial to track the movement of funds. This is done to simplify staking (one shared staking key controls all the funds on different payment addresses). + +Most of the wallets are in "single address mode", which means that they will use only address index of 0. They may allow to use multiple accounts. Eternl is the only exception, that lets users create both multiple accounts and multiple addresses within an account. + +## `KeyWallet` in CTL + +CTL supports a special kind of wallet called `KeyWallet` - it wraps one or two private keys (stake key is optional) and can be used to sign transactions. `KeyWallet` is always in single-address mode, but it is possible to derive multiple `KeyWallet`s from menmonics using CTL. + +## Loading private keys as `KeyWallet`s + +### From `cardano-cli`-compatible JSON envelopes + +[This guide](https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/) describes how to generate private keys using cardano-cli. + +The signing key can be loaded to CTL using `WalletSpec`'s `UseKeys` constructor - either by providing a file or the private key itself. See [`examples/KeyWallet/Internal/Pkh2PkhContract.purs`](../examples/KeyWallet/Internal/Pkh2PkhContract.purs#L49). + +### From CIP1852 mnemonics + +A mnemonic is represented as a 12- or 24-word phare encoding private entropy from which the key is derived. + +It can be converted to a `KeyWallet` given a derivation path and a config option that specifies whether to include a staking part of the address: + +```purescript +type Cip1852DerivationPath = + { accountIndex :: UInt + , addressIndex :: UInt + } + +data StakeKeyPresence = WithStakeKey | WithoutStakeKey + +Contract.Wallet.Key.mkKeyWalletFromMnemonic + :: String -> Cip1852DerivationPath -> StakeKeyPresence -> Either String KeyWallet +``` + +`Contract.Wallet.withKeyWalletFromMnemonic` is another helper function that lets to construct and use wallets on the fly, which is convenient for [Plutip tests](./plutip-testing.md). + +In `ContractParams`, these values can be conveniently passed as the `walletSpec` via the `UseMnemonic` constructor: + +```purescript +data MnemonicSource + = MnemonicString String + | MnemonicFile FilePath + +data WalletSpec + = UseMnemonic MnemonicSource Cip1852DerivationPath StakeKeyPresence + | ... +``` From dc04b9149fdea61efec82204cd8c3047661e521f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 25 May 2023 16:43:10 +0400 Subject: [PATCH 177/478] Add a link to key management docs --- CHANGELOG.md | 2 +- README.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f0ee90d0..4f4300c07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,7 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.JsSdk` module containing helper functions for developers who want to use CTL from JS. See also: [this new guide](./doc/using-from-js.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) -- HD wallet support with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) +- [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) ### Changed diff --git a/README.md b/README.md index 82dd94eac..96a0d41b6 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Transaction balancing](./doc/balancing.md) - [Transaction chaining](./doc/tx-chaining.md) - [Ada staking support](./doc/staking.md) +- [Key management](./doc/key-management.md) - [SECP256k1 support (CIP-49)](./doc/secp256k1-support.md) - [Custom query layers](./doc/custom-query-layers.md) - [FAQs](./doc/faq.md) From 8554e08f23df0f17f3b240c77894dc8daea7d56c Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:36:30 +0700 Subject: [PATCH 178/478] Expand plutip-server docs a bit, fix typos --- plutip-server/README.md | 10 ++++++++++ plutip-server/src/Types.hs | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/plutip-server/README.md b/plutip-server/README.md index d1aedfc20..77f7c0200 100644 --- a/plutip-server/README.md +++ b/plutip-server/README.md @@ -1,3 +1,13 @@ # plutip-server Plutip-server is a simple HTTP interface for [Plutip](https://github.com/mlabs-haskell/plutip) to start and stop local plutip clusters on demand. + +CTL handles communication with Plutip via this server and there's usually no need to use it directly, though `plutip-server` can be useful if you need to control Plutip from a different service. + +Server exposes two POST endpoints for starting and stopping clusters (only up to one active cluster is allowed at a time). + +You can configure cluster parameters like slot length, max tx size, etc. and specify how many wallets to create, including Ada UTxO distribution in each wallet (see [here](../doc/plutip-testing.md#cluster-configuration-options) for how to configure this via CTL). + +On a successful cluster startup `plutip-server` responds with a list of keys of the newly created wallets, node configuration, directory with public and private keys for the wallets and a path to the socket of one of the nodes from the cluster (usually it's the one that finished startup the first). + +`plutip-server` uses Plutip as a [Haskell library](https://github.com/mlabs-haskell/plutip/tree/master#as-a-library) in Servant API handlers via `startFundedCluster` and `stopCluster` functions. diff --git a/plutip-server/src/Types.hs b/plutip-server/src/Types.hs index d5aae5632..d1b9feda2 100644 --- a/plutip-server/src/Types.hs +++ b/plutip-server/src/Types.hs @@ -95,7 +95,7 @@ data StartClusterRequest = StartClusterRequest , maxTxSize :: Maybe Natural -- ^ Set The maxTxSize. If set to Nothing use the default , raiseExUnitsToMax :: Maybe Bool - -- ^ Raise the execustion units to the maxbound when true. + -- ^ Raise the execution units to the maxBound when true. -- If set to Nothing use the default } deriving stock (Show, Eq, Generic) From a6f7a10960a1a23192006e61ecb4cd1ba00a07b1 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:39:18 +0700 Subject: [PATCH 179/478] Update and expand the plutip-testing.md doc --- doc/plutip-testing.md | 97 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 82 insertions(+), 15 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 75ddb0e06..7bdbdc515 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -26,13 +26,43 @@ CTL depends on a number of binaries in the `$PATH` to execute Plutip tests: - [`ogmios`](https://ogmios.dev/) - [`kupo`](https://cardanosolutions.github.io/kupo/) -All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them. +All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them; an example of using CTL's overlays is in a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix#L35). -The services are NOT run by `docker-compose` as is the case with `launchCtlRuntime`: they are started and stopped on each CTL `ContractTest` execution by CTL itself. +The services are NOT run by `docker-compose` (via `arion`) as is the case with `launchCtlRuntime`: instead they are started and stopped on each CTL `ContractTest` execution by CTL itself. + +If you have based your project on the [`ctl-scaffold` template](../templates/ctl-scaffold) then you have two options to run Plutip tests: +1. `nix develop` followed by `npm run test` (recommended for development) +2. `nix run .#checks.x86_64-linux.ctl-scaffold-plutip-test` + * where you'd usually replace `x86_64-linux` with the system you run tests on + * and `ctl-scaffold-plutip-test` with the name of the plutip test package for your project; + * note that compilation of your project via Nix will fail in case there are any warnings, so you'd need to either fix or temporarily disable them. ## Testing contracts -There are two entry points to the testing interface: `Contract.Test.Plutip.runPlutipContract` and `Contract.Test.Plutip.testPlutipContracts`. They work similarly, the difference being that `runPlutipContract` accepts a single `Contract` and runs in `Aff`, whereas `testPlutipContracts` interprets a `MoteT` (test tree of `ContractTest`s) into `Aff`. [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining tests, and combined with `testPlutipContracts` you can use a single plutip instance to run multiple indepedent tests. +CTL can help you test the offchain `Contract`s from your project (and consequently the interaction of onchain and offchain code) by spinning up a disposable private testnet via Plutip and making all your `Contract`s interact with it. + +There are two approaches to writing such tests. + +[First](#testing-in-aff-context) is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. +This function runs in `Aff`; it will also throw an exception should contract fail for any reason. +After the contract execution the Plutip cluster is terminated. +You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. + +[Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and grouping tests (plus other quality of life features, e.g. skipping marked tests). + + +[Second](#testing-with-mote) (and more widely used) approach is to first build a tree of tests (in CTL's case a tree of `ContractTest` types -- basically a function from some distribution of funds to a `Contract a`) via Mote and then use the `Contract.Test.Plutip.testPlutipContracts` function to execute them. +This allows to set up a Plutip cluster only once per top-level groups and tests passed to the `testPlutipContracts` and then use it in many independent tests. +The function will interpret a `MoteT` (effectful test tree) into `Aff`, which you can then actually run. + +The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple `Mote`-based example. + + +CTL will run contracts in your test bodies and will print errors for any failed tests. +Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to either write these checks manually in a `Contract` monad and then throw errors, or (preferably) use the [assertions library](./test-utils.md). + +The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. +[`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. ### Testing in Aff context @@ -48,7 +78,7 @@ runPlutipContract -> Aff a ``` -`distr` is a specification of how many wallets and with how much funds should be created. It should either be a `unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array` of `Array BigInt`, where each element of the `Array BigInt` specifies an UTxO amount in Lovelaces (0.000001 Ada). +`distr` is a specification of how many wallets and with how much funds should be created. It should either be a `Unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array` of `Array BigInt`, where each element of the `Array BigInt` specifies an UTxO amount in Lovelaces (0.000001 Ada). The `wallets` argument of the callback is either a `Unit`, a tuple of `KeyWallet`s (with the same nesting level as in `distr`, which is guaranteed by `UtxoDistribution`) or an `Array KeyWallet`. @@ -77,7 +107,7 @@ An example `Contract` with two actors using `Array`: let distribution :: Array (Array BigInt) distribution = - -- wallet one: twu UTxOs + -- wallet one: two UTxOs [ [ BigInt.fromInt 1_000_000_000, BigInt.fromInt 2_000_000_000] -- wallet two: one UTxO , [ BigInt.fromInt 2_000_000_000 ] @@ -92,20 +122,38 @@ runPlutipContract config distribution \wallets -> do In most cases at least two UTxOs per wallet are needed (one of which will be used as collateral, so it should exceed `5_000_000` Lovelace). -### Testing with Mote -`Contract.Test.Plutip.testPlutipContracts` type is defined as follows: +Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates Plutip cluster during the setup and terminates it during the teardown or in the case of an exception. +Logs will be printed in case of error. +### Testing with Mote + +`Contract.Test.Plutip.testPlutipContracts` type is defined as follows (after expansion of the CTL's `TestPlanM` type synonym): ```purescript +type TestPlanM :: Type -> Type -> Type +type TestPlanM test a = MoteT Aff test Aff a + testPlutipContracts :: PlutipConfig - -> MoteT Aff PlutipTest Aff Unit + -> MoteT Aff ContractTest Aff Unit -> MoteT Aff (Aff Unit) Aff Unit -``` -The final `MoteT` type requires the bracket, test and test building type to all be in `Aff`. The brackets cannot be ignored in the `MoteT` test runner, as it is what allows a single plutip instance to persist over multiple tests. - -To create tests of type `PlutipTest`, the user should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: +-- Recall that `MoteT` has three type variables +newtype MoteT bracket test m a +``` +where +* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/teardown is of type `r -> bracket Unit`), + * in our case it's `Aff` and is where the CTL environment and Plutip cluster setup will happen, + * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, + * so wrap your tests or groups in a single group if you want for the cluster to start only once, +* `test :: Type` is a type of tests themselves, + * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.hs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` + * wallet UTxO distribution is the one that you need to pattern-match on when writing tests +* `m :: Type -> Type` is a monad where effects during the construction of the test suite can be performed, + * here we use `Aff` again +* `a :: Type` is a result of the test suite, we use `Unit` here. + +To create tests of type `ContractTest`, the user should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: ```purescript withWallets @@ -113,13 +161,13 @@ withWallets . UtxoDistribution distr wallets => distr -> (wallets -> Contract Unit) - -> PlutipTest + -> ContractTest -noWallet :: Contract Unit -> PlutipTest +noWallet :: Contract Unit -> ContractTest noWallet test = withWallets unit (const test) ``` -The type is very similar to that of `runPlutipContract`, and distributions are handled in the same way. The following is an example of running multiple tests under the same plutip instance: +Usage of `testPlutipContracts` is similar to that of `runPlutipContract`, and distributions are handled in the same way. Here's an example: ```purescript suite :: MoteT Aff (Aff Unit) Aff @@ -143,6 +191,22 @@ suite = testPlutipContracts config do ... ``` +To define tests suites you can use `test`, group them with `group` and also wrap tests or groups with `bracket` to execute custom actions before and after tests/groups that are inside the bracket. +Note that in Mote you can define several tests and several groups in a single block, and bracket that wraps them will be run for each such test or group. + +Internally `testPlutipContracts` places a bracket that sets up the CTL environment and starts up the Plutip cluster on the top level, so if you want to launch cluster only once wrap your tests or groups in a single group. +In the example above the environment and cluster setup will happen 3 times. + + +`testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. +This allows to create wallets and fund them in one step, during the Plutip setup. +See the comments in the [`Ctl.Internal.Plutip.Server` module] for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). + +In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. +Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. +There's a patch to CTL you can adapt (and even better -- make a PR) if you need to share wallets between tests right now, see the [limitations](#limitations) doc for more info. +This functionality will probably be added to CTL later. + ### Note on SIGINT Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, node's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel. To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let node shut down gracefully when no more events are to be processed. @@ -174,6 +238,9 @@ You can run Plutip tests via CTL's `purescriptProject` as well. After creating y } ``` +The usual approach is to put `projectname-plutip-test` in the `checks` attribute of your project's `flake.nix`. +See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an example. + ## Cluster configuration options `PlutipConfig` type contains `clusterConfig` record with the following options: From 72173bf041112ded713831d7e37f18bbe2ef5010 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:40:27 +0700 Subject: [PATCH 180/478] Add TODOs for SIGINT doc --- doc/plutip-testing.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 7bdbdc515..cc6326dbc 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -209,6 +209,9 @@ This functionality will probably be added to CTL later. ### Note on SIGINT + + + Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, node's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel. To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let node shut down gracefully when no more events are to be processed. ```purescript From fe7945942f45e200221c501696de2cbd6ef6075d Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:40:41 +0700 Subject: [PATCH 181/478] Expand limitations in plutip-testing.md doc --- doc/plutip-testing.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index cc6326dbc..dbed11d91 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -262,8 +262,9 @@ See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an exam ### Limitations -Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. -`slotLength` can be changed without any problems. +* Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. +* Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). +* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test onchain which checks that much time has passed. ## Using addresses with staking key components From de2d849432b28ef966edaac85f0896b9f98aa0b1 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:40:57 +0700 Subject: [PATCH 182/478] Expand 'see also' section of plutip-testing.md --- doc/plutip-testing.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index dbed11d91..cb4e2fa5c 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -290,3 +290,7 @@ Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses ### See also - To actually write the test bodies, [assertions library](./test-utils.md) can be useful. +- Check out the [`ContractTestUtils`](../examples/ContractTestUtils.purs) example on assertions library usage. +- Take a look at CTL's Plutip tests for the usage examples: + - the entry point with `main` that runs Plutip tests is [here](../test/Plutip.purs), + - folder with various test suites is [here](../test/Plutip/). From ea8db83c82620a332a917450e3ef8fa819beb601 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:41:14 +0700 Subject: [PATCH 183/478] Fix typo --- src/Contract/Test/Utils.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Contract/Test/Utils.purs b/src/Contract/Test/Utils.purs index c1eafe197..8ad509696 100644 --- a/src/Contract/Test/Utils.purs +++ b/src/Contract/Test/Utils.purs @@ -17,7 +17,7 @@ import Node.Process as Process foreign import exitCode :: Int -> Effect Unit --- | Attaches a custom handler on SIGINt to kill the fiber. +-- | Attaches a custom handler on SIGINT to kill the fiber. -- | see https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#note-on-sigint interruptOnSignal :: forall a. Signal -> Fiber a -> Effect Unit interruptOnSignal signal fiber = Process.onSignal signal do From 124ea7aaeccab623d87fac22e223059c47c28627 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:41:35 +0700 Subject: [PATCH 184/478] Add comments on how execDistribution, associated types and bracketing works --- src/Internal/Plutip/Server.purs | 33 ++++++++++++++++++++++++----- src/Internal/Test/ContractTest.purs | 14 +++++++++++- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index bf41d6961..c82062c9c 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -143,20 +143,24 @@ withPlutipContractEnv plutipCfg distr cont = do $ liftEither >=> \{ env, wallets, printLogs } -> whenError printLogs (cont env wallets) --- | Run `Contract`s in tests in a single Plutip instance. --- | NOTE: This uses `MoteT`s bracketting, and thus has the same caveats. --- | Namely, brackets are run for each of the following groups and tests. --- | If you wish to only set up Plutip once, ensure all tests are wrapped --- | in a single group. +-- | Run several `Contract`s in tests in a (single) Plutip instance. +-- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. +-- | Namely, brackets are run for each of the top-level groups and tests +-- | inside the bracket. +-- | If you wish to only set up Plutip once, ensure all tests that are passed +-- | to `testPlutipContracts` are wrapped in a single group. -- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote testPlutipContracts :: PlutipConfig -> TestPlanM ContractTest Unit -> TestPlanM (Aff Unit) Unit testPlutipContracts plutipCfg tp = do + -- Modify tests to pluck out parts of a single combined distribution ContractTestPlan runContractTestPlan <- lift $ execDistribution tp runContractTestPlan \distr tests -> do cleanupRef <- liftEffect $ Ref.new mempty + -- Sets a single Mote bracket at the top level, it will be run for all + -- immediate tests and groups bracket (startPlutipContractEnv plutipCfg distr cleanupRef) (runCleanup cleanupRef) $ flip mapTest tests \test { env, wallets, printLogs, clearLogs } -> do @@ -199,9 +203,15 @@ whenError whenErrorAction action = do -- | distribution. Adapts the tests to pick their distribution out of the -- | combined distribution. -- | NOTE: Skipped tests still have their distribution generated. +-- | This is a current way of constructing all the wallets with required distributions +-- | in one go during Plutip startup. execDistribution :: TestPlanM ContractTest Unit -> Aff ContractTestPlan execDistribution (MoteT mote) = execWriterT mote <#> go where + -- Recursively go over the tree of test `Description`s and construct a `ContractTestPlan` callback. + -- When run the `ContractTestPlan` will reconstruct the whole `MoteT` value passed to `execDistribution` + -- via similar writer effects (plus combining distributions) which append test descriptions + -- or wrap them in a group. go :: Array (Description Aff ContractTest) -> ContractTestPlan go = flip execState emptyContractTestPlan <<< traverse_ case _ of Test rm { bracket, label, value: ContractTest runTest } -> @@ -215,6 +225,16 @@ execDistribution (MoteT mote) = execWriterT mote <#> go (censor (pure <<< Group rm <<< { bracket, label, value: _ })) tests + -- This function is used by `go` for iteratively adding Mote tests (internally Writer monad actions) + -- to the `ContractTestPlan` in the State monad _and_ for combining UTxO distributions used by tests. + -- Given a distribution and tests (a MoteT value) this runs a `ContractTestPlan`, i.e. passes its + -- stored distribution and tests to our handler, and then makes a new `ContractTestPlan`, but this time + -- storing a tuple of stored and passed distributions and also storing a pair of Mote tests, modifying + -- the previously stored tests to use the first distribution, and the passed tests the second distribution + -- + -- `go` starts at the top of the test tree and step-by-step constructs a big `ContractTestPlan` which + -- stores distributions of all inner tests tupled together and tests from the original test tree, which + -- know how to get their distribution out of the big tuple. addTests :: forall (distr :: Type) (wallets :: Type) . ContractTestPlanHandler distr wallets (State ContractTestPlan Unit) @@ -224,6 +244,9 @@ execDistribution (MoteT mote) = execWriterT mote <#> go mapTest (_ <<< fst) tests' mapTest (_ <<< snd) tests + -- Start with an empty plan, which passes an empty distribution + -- and an empty array of test `Description`s to the function that + -- will run tests. emptyContractTestPlan :: ContractTestPlan emptyContractTestPlan = ContractTestPlan \h -> h unit (pure unit) diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index 683a2f7bd..ddc1787fc 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -15,6 +15,13 @@ import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) -- | Represents a `Contract` test suite that depend on *some* wallet -- | `UtxoDistribution`. +-- Internally this a function which takes a two-argument function from +-- some distribution and a single test to some value and returns that value. +-- Another way of looking at it: pattern-match `ContractTest runTest`, +-- then you can pass a function to `runTest`: +-- `runTest \distr test -> ...` which gets you a result. +-- In practice `runTest` is a closure that stores distribution and a test and +-- passes them to the (\distr test -> ...) function. newtype ContractTest = ContractTest ( forall (r :: Type) . ( forall (distr :: Type) (wallets :: Type) @@ -42,6 +49,9 @@ type ContractTestHandler distr wallets r = UtxoDistribution distr wallets => distr -> (wallets -> Contract Unit) -> r -- | Represents `Contract`s in `TestPlanM` that depend on *some* wallet `UtxoDistribution` +-- Internally this is similar to `ContractTest`, except that +-- now a `runGroupPlan` (a function wrapped in the `ContractTestPlan`) closure +-- stores distribution and effects to construct a test tree. newtype ContractTestPlan = ContractTestPlan ( forall (r :: Type) . ( forall (distr :: Type) (wallets :: Type) @@ -50,7 +60,9 @@ newtype ContractTestPlan = ContractTestPlan -> r ) --- | Same as `ContractTestHandler`, but wrapped in a `TestPaln`. +-- | Same as `ContractTestHandler`, but wrapped in a `TestPlanM`. +-- | It is used for the reconstruction of the `MoteT` value. +-- | See the `Ctl.Internal.Plutip.execDistribution` function for more info. type ContractTestPlanHandler :: Type -> Type -> Type -> Type type ContractTestPlanHandler distr wallets r = UtxoDistribution distr wallets From d0c9febb9674b459d8f3c762f69675b530fa947f Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:42:12 +0700 Subject: [PATCH 185/478] Mark a place where SIGINT handler is set --- src/Internal/Plutip/Server.purs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index c82062c9c..6a64352cf 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -537,6 +537,7 @@ startKupo cfg params = do workdirExists <- FSSync.exists workdir unless workdirExists (FSSync.mkdir workdir) childProcess <- spawnKupoProcess workdir + -- here we set also the SIGINT handler for the whole process sig <- liftEffect $ cleanupOnSigint workdir testClusterDir pure (childProcess /\ workdir /\ sig) where From 4973d0c352e741df478e4f03f3e0f65b8beb08b1 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:52:47 +0700 Subject: [PATCH 186/478] Fix limitations sections, bump see also section level --- doc/plutip-testing.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index cb4e2fa5c..4fb301f09 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -13,9 +13,10 @@ - [Note on SIGINT](#note-on-sigint) - [Testing with Nix](#testing-with-nix) - [Cluster configuration options](#cluster-configuration-options) - - [Limitations](#limitations) + - [Current limitations](#current-limitations) - [Using addresses with staking key components](#using-addresses-with-staking-key-components) - - [See also](#see-also) +- [Limitations](#limitations) +- [See also](#see-also) ## Architecture @@ -260,7 +261,7 @@ See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an exam - `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive transaction size limits. - `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling the contract with tracing in development and without it in production). -### Limitations +### Current limitations * Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. * Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). @@ -287,7 +288,12 @@ Although stake keys serve no real purpose in plutip context, they allow to use b Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses to base addresses, which requires a few transactions before the test can be run. These transactions happen on the CTL side, because Plutip can currently handle only enterprise addreses (see [this issue](https://github.com/mlabs-haskell/plutip/issues/103)). -### See also +## Limitations +* See the `epochSize` configuration option problem [here](#current-limitations). +* Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). +* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test onchain which checks that much time has passed. + +## See also - To actually write the test bodies, [assertions library](./test-utils.md) can be useful. - Check out the [`ContractTestUtils`](../examples/ContractTestUtils.purs) example on assertions library usage. From bcf1a1f6a2d5c844b253ed4aa472863c192fa580 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 02:56:10 +0700 Subject: [PATCH 187/478] Fix current limitations --- doc/plutip-testing.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 4fb301f09..5704a44e5 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -264,8 +264,6 @@ See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an exam ### Current limitations * Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. -* Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). -* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test onchain which checks that much time has passed. ## Using addresses with staking key components From 05d645bb85a8ceff5972410612eee16f5ca719f0 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 03:00:04 +0700 Subject: [PATCH 188/478] Fix link --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 5704a44e5..115cb6c34 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -201,7 +201,7 @@ In the example above the environment and cluster setup will happen 3 times. `testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. This allows to create wallets and fund them in one step, during the Plutip setup. -See the comments in the [`Ctl.Internal.Plutip.Server` module] for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). +See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. From 8c0c72d518a64d4027b817c7c142433dcf07ce04 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 03:01:00 +0700 Subject: [PATCH 189/478] Fix link #2 --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 115cb6c34..b821e7769 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -148,7 +148,7 @@ where * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, * so wrap your tests or groups in a single group if you want for the cluster to start only once, * `test :: Type` is a type of tests themselves, - * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.hs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` + * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.purs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` * wallet UTxO distribution is the one that you need to pattern-match on when writing tests * `m :: Type -> Type` is a monad where effects during the construction of the test suite can be performed, * here we use `Aff` again From fc1bb2613d14f85512853c7eabd4c79083a910f2 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 03:02:22 +0700 Subject: [PATCH 190/478] Fix link #3 --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index b821e7769..59f0fcaa0 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -201,7 +201,7 @@ In the example above the environment and cluster setup will happen 3 times. `testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. This allows to create wallets and fund them in one step, during the Plutip setup. -See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). +See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. From acf8f354fd02e83f7290d95b5c177cdbe50ed672 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Sun, 28 May 2023 23:05:07 +0300 Subject: [PATCH 191/478] Update plutip-testing.md --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 59f0fcaa0..83d528d6b 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -289,7 +289,7 @@ Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses ## Limitations * See the `epochSize` configuration option problem [here](#current-limitations). * Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). -* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test onchain which checks that much time has passed. +* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test interaction with onchain code which checks that much time has passed. ## See also From 96e69a6d3cd5bf5a2271fdfe0123613a76ab8434 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 11:58:13 +0300 Subject: [PATCH 192/478] Update doc/plutip-testing.md Co-authored-by: Vladimir Kalnitsky --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 83d528d6b..a7e5a342c 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -124,7 +124,7 @@ runPlutipContract config distribution \wallets -> do In most cases at least two UTxOs per wallet are needed (one of which will be used as collateral, so it should exceed `5_000_000` Lovelace). -Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates Plutip cluster during the setup and terminates it during the teardown or in the case of an exception. +Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. Logs will be printed in case of error. ### Testing with Mote From 7a434a9b547e2275dfc3fd494db0839241dd3ec4 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 12:08:47 +0300 Subject: [PATCH 193/478] Apply suggestions from code review Co-authored-by: Vladimir Kalnitsky --- doc/plutip-testing.md | 19 +++++++++---------- plutip-server/README.md | 2 +- plutip-server/src/Types.hs | 2 +- src/Internal/Plutip/Server.purs | 4 ++-- src/Internal/Test/ContractTest.purs | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index a7e5a342c..78ae5a414 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -27,7 +27,7 @@ CTL depends on a number of binaries in the `$PATH` to execute Plutip tests: - [`ogmios`](https://ogmios.dev/) - [`kupo`](https://cardanosolutions.github.io/kupo/) -All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them; an example of using CTL's overlays is in a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix#L35). +All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them; an example of using CTL's overlays is in the [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix#L35). The services are NOT run by `docker-compose` (via `arion`) as is the case with `launchCtlRuntime`: instead they are started and stopped on each CTL `ContractTest` execution by CTL itself. @@ -35,8 +35,8 @@ If you have based your project on the [`ctl-scaffold` template](../templates/ctl 1. `nix develop` followed by `npm run test` (recommended for development) 2. `nix run .#checks.x86_64-linux.ctl-scaffold-plutip-test` * where you'd usually replace `x86_64-linux` with the system you run tests on - * and `ctl-scaffold-plutip-test` with the name of the plutip test package for your project; - * note that compilation of your project via Nix will fail in case there are any warnings, so you'd need to either fix or temporarily disable them. + * and `ctl-scaffold-plutip-test` with the name of the plutip test derivation for your project; + * note that building of your project via Nix will fail in case there are any PureScript compile-time warnings. ## Testing contracts @@ -79,7 +79,7 @@ runPlutipContract -> Aff a ``` -`distr` is a specification of how many wallets and with how much funds should be created. It should either be a `Unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array` of `Array BigInt`, where each element of the `Array BigInt` specifies an UTxO amount in Lovelaces (0.000001 Ada). +`distr` is a specification of how many wallets and with how much funds should be created. It should either be a `Unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array (Array BigInt)`, where each element of the inner array specifies an UTxO amount in Lovelaces (0.000001 Ada). The `wallets` argument of the callback is either a `Unit`, a tuple of `KeyWallet`s (with the same nesting level as in `distr`, which is guaranteed by `UtxoDistribution`) or an `Array KeyWallet`. @@ -125,7 +125,7 @@ In most cases at least two UTxOs per wallet are needed (one of which will be use Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. -Logs will be printed in case of error. +Logs will be printed in case of an error. ### Testing with Mote @@ -143,7 +143,7 @@ testPlutipContracts newtype MoteT bracket test m a ``` where -* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/teardown is of type `r -> bracket Unit`), +* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/shutdown is of type `r -> bracket Unit`), * in our case it's `Aff` and is where the CTL environment and Plutip cluster setup will happen, * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, * so wrap your tests or groups in a single group if you want for the cluster to start only once, @@ -243,7 +243,7 @@ You can run Plutip tests via CTL's `purescriptProject` as well. After creating y ``` The usual approach is to put `projectname-plutip-test` in the `checks` attribute of your project's `flake.nix`. -See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an example. +This is done by default in the [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix). ## Cluster configuration options @@ -263,7 +263,7 @@ See a [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix) for an exam ### Current limitations -* Non-default value of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. +* Non-default values of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. ## Using addresses with staking key components @@ -293,8 +293,7 @@ Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses ## See also -- To actually write the test bodies, [assertions library](./test-utils.md) can be useful. -- Check out the [`ContractTestUtils`](../examples/ContractTestUtils.purs) example on assertions library usage. +- To actually write the test bodies, [assertions library](./test-utils.md) can be useful [(usage example)](../examples/ContractTestUtils.purs). - Take a look at CTL's Plutip tests for the usage examples: - the entry point with `main` that runs Plutip tests is [here](../test/Plutip.purs), - folder with various test suites is [here](../test/Plutip/). diff --git a/plutip-server/README.md b/plutip-server/README.md index 77f7c0200..d07d943d7 100644 --- a/plutip-server/README.md +++ b/plutip-server/README.md @@ -2,7 +2,7 @@ Plutip-server is a simple HTTP interface for [Plutip](https://github.com/mlabs-haskell/plutip) to start and stop local plutip clusters on demand. -CTL handles communication with Plutip via this server and there's usually no need to use it directly, though `plutip-server` can be useful if you need to control Plutip from a different service. +CTL handles communication with Plutip via this server and there's usually no need to use it directly, though `plutip-server` can be useful if you need to control Plutip from a different service (although [`plutip-local-cluster`](https://github.com/mlabs-haskell/plutip/tree/master/local-cluster), which is a CLI program, is probably more convenient for that). Server exposes two POST endpoints for starting and stopping clusters (only up to one active cluster is allowed at a time). diff --git a/plutip-server/src/Types.hs b/plutip-server/src/Types.hs index d1b9feda2..9052ad170 100644 --- a/plutip-server/src/Types.hs +++ b/plutip-server/src/Types.hs @@ -95,7 +95,7 @@ data StartClusterRequest = StartClusterRequest , maxTxSize :: Maybe Natural -- ^ Set The maxTxSize. If set to Nothing use the default , raiseExUnitsToMax :: Maybe Bool - -- ^ Raise the execution units to the maxBound when true. + -- ^ Raise the execution units to the maximum when true. -- If set to Nothing use the default } deriving stock (Show, Eq, Generic) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 6a64352cf..cbddcc19b 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -203,7 +203,7 @@ whenError whenErrorAction action = do -- | distribution. Adapts the tests to pick their distribution out of the -- | combined distribution. -- | NOTE: Skipped tests still have their distribution generated. --- | This is a current way of constructing all the wallets with required distributions +-- | This is the current method of constructing all the wallets with required distributions -- | in one go during Plutip startup. execDistribution :: TestPlanM ContractTest Unit -> Aff ContractTestPlan execDistribution (MoteT mote) = execWriterT mote <#> go @@ -537,7 +537,7 @@ startKupo cfg params = do workdirExists <- FSSync.exists workdir unless workdirExists (FSSync.mkdir workdir) childProcess <- spawnKupoProcess workdir - -- here we set also the SIGINT handler for the whole process + -- here we also set the SIGINT handler for the whole process sig <- liftEffect $ cleanupOnSigint workdir testClusterDir pure (childProcess /\ workdir /\ sig) where diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index ddc1787fc..9e8c92813 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -15,7 +15,7 @@ import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) -- | Represents a `Contract` test suite that depend on *some* wallet -- | `UtxoDistribution`. --- Internally this a function which takes a two-argument function from +-- Internally this function takes a two-argument callback from -- some distribution and a single test to some value and returns that value. -- Another way of looking at it: pattern-match `ContractTest runTest`, -- then you can pass a function to `runTest`: From 538faf7130b99747fe6161c3099ffeaf7ad67a68 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 19:04:41 +0700 Subject: [PATCH 194/478] Add a note on running parallel clusters --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 78ae5a414..989ad350d 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -63,7 +63,7 @@ CTL will run contracts in your test bodies and will print errors for any failed Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to either write these checks manually in a `Contract` monad and then throw errors, or (preferably) use the [assertions library](./test-utils.md). The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. -[`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. +[`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. One caveat is that nodes in different clusters might get assigned the same port (see [this](https://github.com/mlabs-haskell/plutip/blob/master/README.md#note-on-running-multiple-clusters) Plutip doc) and then race to use it, which will result in one cluster starting fine and another repeatedly failing. The way to deal with this is to start another environment and try again. ### Testing in Aff context From 5d354552779e0c698598a18a884ac8d1e7ed98a9 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 19:04:55 +0700 Subject: [PATCH 195/478] Resolve TODOs, clarify what `node` refers to --- doc/plutip-testing.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 989ad350d..9226bc499 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -210,10 +210,7 @@ This functionality will probably be added to CTL later. ### Note on SIGINT - - - -Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, node's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel. To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let node shut down gracefully when no more events are to be processed. +Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, Node.js's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel. To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. ```purescript ... From 9ada4172d1b909c69c8ad9ebe6b811ad98ffc966 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 19:07:55 +0700 Subject: [PATCH 196/478] Clarify what Plutip instance means --- src/Internal/Plutip/Server.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index cbddcc19b..4b2e52c3d 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -143,7 +143,7 @@ withPlutipContractEnv plutipCfg distr cont = do $ liftEither >=> \{ env, wallets, printLogs } -> whenError printLogs (cont env wallets) --- | Run several `Contract`s in tests in a (single) Plutip instance. +-- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. -- | Namely, brackets are run for each of the top-level groups and tests -- | inside the bracket. From 6b6d5aa7f1efe7046041daf89418f761aefa14c4 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 19:10:04 +0700 Subject: [PATCH 197/478] Add time multiplier suggestion --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 9226bc499..1ad5ada84 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -286,7 +286,7 @@ Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses ## Limitations * See the `epochSize` configuration option problem [here](#current-limitations). * Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). -* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test interaction with onchain code which checks that much time has passed. +* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test interaction with onchain code which checks that much time has passed. A way around this problem can be to parametrize onchain logic by a time multiplier (and use a small one for tests). ## See also From e9df561bfdd9afcc5516fa149c18713f4fd499e9 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 19:18:49 +0700 Subject: [PATCH 198/478] Fix assertions library mention, link to another example --- doc/plutip-testing.md | 2 +- doc/test-utils.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 1ad5ada84..4b15b9a39 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -60,7 +60,7 @@ The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple `Mote CTL will run contracts in your test bodies and will print errors for any failed tests. -Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to either write these checks manually in a `Contract` monad and then throw errors, or (preferably) use the [assertions library](./test-utils.md). +Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to write these checks manually in a `Contract` monad (and preferably to utilize the [assertions library](./test-utils.md)) and then throw errors. The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. [`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. One caveat is that nodes in different clusters might get assigned the same port (see [this](https://github.com/mlabs-haskell/plutip/blob/master/README.md#note-on-running-multiple-clusters) Plutip doc) and then race to use it, which will result in one cluster starting fine and another repeatedly failing. The way to deal with this is to start another environment and try again. diff --git a/doc/test-utils.md b/doc/test-utils.md index 397afb12a..840dbbc7b 100644 --- a/doc/test-utils.md +++ b/doc/test-utils.md @@ -87,4 +87,6 @@ type ContractCheck a = Particular values can be constructed with utility functions, as demonstrated in the [ContractTestUtils example](../examples/ContractTestUtils.purs) (see `mkAssertions`). +An example on using defined checks in the tests is an [assertions test suite](../test/Plutip/Contract/Assert.purs). + All the functions require `Labeled` arguments, that can be constructed with `label` function; or `noLabel`, if descriptive names in error messages are not needed. From 78d53f2e83807f764a2644e26eab185bd45ca8d2 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 20:03:48 +0700 Subject: [PATCH 199/478] Restructure testing-with-* sections --- doc/plutip-testing.md | 202 ++++++++++++++++++++++++------------------ 1 file changed, 115 insertions(+), 87 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 4b15b9a39..b6cfca33d 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -8,8 +8,14 @@ - [Architecture](#architecture) - [Testing contracts](#testing-contracts) - - [Testing in Aff context](#testing-in-aff-context) + - [Testing with Mote overview](#testing-with-mote-overview) + - [Testing in Aff context overview](#testing-in-aff-context-overview) + - [Writing checks in tests](#writing-checks-in-tests) + - [Note on running parallel clusters](#note-on-running-parallel-clusters) - [Testing with Mote](#testing-with-mote) + - [Using Mote testing interface](#using-mote-testing-interface) + - [Overview of internal implementation](#overview-of-internal-implementation) + - [Testing in Aff context](#testing-in-aff-context) - [Note on SIGINT](#note-on-sigint) - [Testing with Nix](#testing-with-nix) - [Cluster configuration options](#cluster-configuration-options) @@ -44,27 +50,129 @@ CTL can help you test the offchain `Contract`s from your project (and consequent There are two approaches to writing such tests. -[First](#testing-in-aff-context) is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. -This function runs in `Aff`; it will also throw an exception should contract fail for any reason. -After the contract execution the Plutip cluster is terminated. -You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. +### Testing with Mote overview [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and grouping tests (plus other quality of life features, e.g. skipping marked tests). - -[Second](#testing-with-mote) (and more widely used) approach is to first build a tree of tests (in CTL's case a tree of `ContractTest` types -- basically a function from some distribution of funds to a `Contract a`) via Mote and then use the `Contract.Test.Plutip.testPlutipContracts` function to execute them. +First (and more widely used) approach is to first build a tree of tests (in CTL's case a tree of `ContractTest` types -- basically a function from some distribution of funds to a `Contract a`) via Mote and then use the `Contract.Test.Plutip.testPlutipContracts` function to execute them. This allows to set up a Plutip cluster only once per top-level groups and tests passed to the `testPlutipContracts` and then use it in many independent tests. The function will interpret a `MoteT` (effectful test tree) into `Aff`, which you can then actually run. The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple `Mote`-based example. +More info and usage examples are [here](#testing-with-mote). + +### Testing in Aff context overview + +[First](#testing-in-aff-context) is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. +This function runs in `Aff`; it will also throw an exception should contract fail for any reason. +After the contract execution the Plutip cluster is terminated. +You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. + +### Writing checks in tests CTL will run contracts in your test bodies and will print errors for any failed tests. Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to write these checks manually in a `Contract` monad (and preferably to utilize the [assertions library](./test-utils.md)) and then throw errors. +### Note on running parallel clusters + The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. [`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. One caveat is that nodes in different clusters might get assigned the same port (see [this](https://github.com/mlabs-haskell/plutip/blob/master/README.md#note-on-running-multiple-clusters) Plutip doc) and then race to use it, which will result in one cluster starting fine and another repeatedly failing. The way to deal with this is to start another environment and try again. +### Testing with Mote + +`Contract.Test.Plutip.testPlutipContracts` type is defined as follows: +```purescript +testPlutipContracts + :: PlutipConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +``` + +It takes a plutip config and a tree of Mote tests, where tests are of type `ContractTest`. + +To create tests of type `ContractTest`, you should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: + +```purescript +withWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> (wallets -> Contract Unit) + -> ContractTest + +noWallet :: Contract Unit -> ContractTest +noWallet test = withWallets unit (const test) +``` + +Usage of `testPlutipContracts` is similar to that of `runPlutipContract`, and distributions are handled in the same way. Here's an example: + +```purescript +suite :: MoteT Aff (Aff Unit) Aff +suite = testPlutipContracts config do + test "Test 1" do + let + distribution :: Array BigInt /\ Array BigInt + distribution = ... + withWallets distribution \(alice /\ bob) -> do + ... + + test "Test 2" do + let + distribution :: Array BigInt + distribution = ... + withWallets distribution \alice -> do + ... + + test "Test 3" do + noWallet do + ... +``` + +#### Using Mote testing interface + +To define tests suites you can use `test`, group them with `group` and also wrap tests or groups with `bracket` to execute custom actions before and after tests/groups that are inside the bracket. +Note that in Mote you can define several tests and several groups in a single block, and bracket that wraps them will be run for each such test or group. + +Internally `testPlutipContracts` places a bracket that sets up the CTL environment and starts up the Plutip cluster on the top level, so if you want to launch cluster only once wrap your tests or groups in a single group. +In the example above the environment and cluster setup will happen 3 times. + +#### Overview of internal implementation + +`Contract.Test.Plutip.testPlutipContracts` type is defined as follows (after expansion of the CTL's `TestPlanM` type synonym): +```purescript +type TestPlanM :: Type -> Type -> Type +type TestPlanM test a = MoteT Aff test Aff a + +testPlutipContracts + :: PlutipConfig + -> MoteT Aff ContractTest Aff Unit + -> MoteT Aff (Aff Unit) Aff Unit + +-- Recall that `MoteT` has three type variables +newtype MoteT bracket test m a +``` +where +* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/shutdown is of type `r -> bracket Unit`), + * in our case it's `Aff` and is where the CTL environment and Plutip cluster setup will happen, + * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, + * so wrap your tests or groups in a single group if you want for the cluster to start only once, +* `test :: Type` is a type of tests themselves, + * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.purs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` + * wallet UTxO distribution is the one that you need to pattern-match on when writing tests +* `m :: Type -> Type` is a monad where effects during the construction of the test suite can be performed, + * here we use `Aff` again +* `a :: Type` is a result of the test suite, we use `Unit` here. + +`testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. +This allows to create wallets and fund them in one step, during the Plutip setup. +See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). + +In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. +Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. +There's a patch to CTL you can adapt (and even better -- make a PR) if you need to share wallets between tests right now, see the [limitations](#limitations) doc for more info. +This functionality will probably be added to CTL later. + ### Testing in Aff context `Contract.Test.Plutip.runPlutipContract`'s function type is defined as follows: @@ -127,86 +235,6 @@ In most cases at least two UTxOs per wallet are needed (one of which will be use Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. Logs will be printed in case of an error. -### Testing with Mote - -`Contract.Test.Plutip.testPlutipContracts` type is defined as follows (after expansion of the CTL's `TestPlanM` type synonym): -```purescript -type TestPlanM :: Type -> Type -> Type -type TestPlanM test a = MoteT Aff test Aff a - -testPlutipContracts - :: PlutipConfig - -> MoteT Aff ContractTest Aff Unit - -> MoteT Aff (Aff Unit) Aff Unit - --- Recall that `MoteT` has three type variables -newtype MoteT bracket test m a -``` -where -* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/shutdown is of type `r -> bracket Unit`), - * in our case it's `Aff` and is where the CTL environment and Plutip cluster setup will happen, - * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, - * so wrap your tests or groups in a single group if you want for the cluster to start only once, -* `test :: Type` is a type of tests themselves, - * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.purs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` - * wallet UTxO distribution is the one that you need to pattern-match on when writing tests -* `m :: Type -> Type` is a monad where effects during the construction of the test suite can be performed, - * here we use `Aff` again -* `a :: Type` is a result of the test suite, we use `Unit` here. - -To create tests of type `ContractTest`, the user should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: - -```purescript -withWallets - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => distr - -> (wallets -> Contract Unit) - -> ContractTest - -noWallet :: Contract Unit -> ContractTest -noWallet test = withWallets unit (const test) -``` - -Usage of `testPlutipContracts` is similar to that of `runPlutipContract`, and distributions are handled in the same way. Here's an example: - -```purescript -suite :: MoteT Aff (Aff Unit) Aff -suite = testPlutipContracts config do - test "Test 1" do - let - distribution :: Array BigInt /\ Array BigInt - distribution = ... - withWallets distribution \(alice /\ bob) -> do - ... - - test "Test 2" do - let - distribution :: Array BigInt - distribution = ... - withWallets distribution \alice -> do - ... - - test "Test 3" do - noWallet do - ... -``` - -To define tests suites you can use `test`, group them with `group` and also wrap tests or groups with `bracket` to execute custom actions before and after tests/groups that are inside the bracket. -Note that in Mote you can define several tests and several groups in a single block, and bracket that wraps them will be run for each such test or group. - -Internally `testPlutipContracts` places a bracket that sets up the CTL environment and starts up the Plutip cluster on the top level, so if you want to launch cluster only once wrap your tests or groups in a single group. -In the example above the environment and cluster setup will happen 3 times. - - -`testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. -This allows to create wallets and fund them in one step, during the Plutip setup. -See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). - -In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. -Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. -There's a patch to CTL you can adapt (and even better -- make a PR) if you need to share wallets between tests right now, see the [limitations](#limitations) doc for more info. -This functionality will probably be added to CTL later. ### Note on SIGINT From 82db7d1c76974bfa7145874340660a4aa76d4e18 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 21:00:21 +0700 Subject: [PATCH 200/478] Fix parallel clusters note --- doc/plutip-testing.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index b6cfca33d..beb172847 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -11,7 +11,7 @@ - [Testing with Mote overview](#testing-with-mote-overview) - [Testing in Aff context overview](#testing-in-aff-context-overview) - [Writing checks in tests](#writing-checks-in-tests) - - [Note on running parallel clusters](#note-on-running-parallel-clusters) + - [Note on running clusters](#note-on-running-clusters) - [Testing with Mote](#testing-with-mote) - [Using Mote testing interface](#using-mote-testing-interface) - [Overview of internal implementation](#overview-of-internal-implementation) @@ -74,10 +74,14 @@ You can either call it directly from your test's main or use any library for gro CTL will run contracts in your test bodies and will print errors for any failed tests. Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to write these checks manually in a `Contract` monad (and preferably to utilize the [assertions library](./test-utils.md)) and then throw errors. -### Note on running parallel clusters +### Note on running clusters The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. -[`plutip-server`](../plutip-server) allows only once active cluster at a time, but nothing stops you from setting up multiple CTL environments and multiple `plutip-server`s by running tests in separate fibers and thus using multiple Plutip clusters simultaneously. One caveat is that nodes in different clusters might get assigned the same port (see [this](https://github.com/mlabs-haskell/plutip/blob/master/README.md#note-on-running-multiple-clusters) Plutip doc) and then race to use it, which will result in one cluster starting fine and another repeatedly failing. The way to deal with this is to start another environment and try again. +[`plutip-server`](../plutip-server) allows only once active cluster at a time. +CTL currently launches `plutip-server` and `kupo` on pre-defined ports, so you won't be able to launch multiple environments to get parallel cluster. + + + ### Testing with Mote @@ -238,7 +242,7 @@ Logs will be printed in case of an error. ### Note on SIGINT -Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, Node.js's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel. To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. +Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, Node.js's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel (note that this is currently possible only by patching CTL). To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. ```purescript ... From 66e6a7b8e30fa93feb5d443f76661e16ef3d701b Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 18:25:18 +0300 Subject: [PATCH 201/478] Apply suggestions from code review Co-authored-by: Vladimir Kalnitsky --- doc/test-utils.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/test-utils.md b/doc/test-utils.md index 840dbbc7b..0290683dc 100644 --- a/doc/test-utils.md +++ b/doc/test-utils.md @@ -87,6 +87,6 @@ type ContractCheck a = Particular values can be constructed with utility functions, as demonstrated in the [ContractTestUtils example](../examples/ContractTestUtils.purs) (see `mkAssertions`). -An example on using defined checks in the tests is an [assertions test suite](../test/Plutip/Contract/Assert.purs). +An example for using checks in the tests is [here](../test/Plutip/Contract/Assert.purs). All the functions require `Labeled` arguments, that can be constructed with `label` function; or `noLabel`, if descriptive names in error messages are not needed. From 1d237523df17cf4e08a73469b8280c8110a19b72 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 18:29:03 +0300 Subject: [PATCH 202/478] Apply suggestions from code review Co-authored-by: Vladimir Kalnitsky --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index beb172847..88cea33f5 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -318,7 +318,7 @@ Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses ## Limitations * See the `epochSize` configuration option problem [here](#current-limitations). * Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). -* If you've used a [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network, so you'd have to really wait, say 1 year, in order to test interaction with onchain code which checks that much time has passed. A way around this problem can be to parametrize onchain logic by a time multiplier (and use a small one for tests). +* If you've used the [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows to time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network. A way around this problem can be to parametrize onchain logic by a time multiplier (and use a small one for tests). ## See also From 8f7176ada2bb02077c869efff139ad562b7c69e1 Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 22:36:06 +0700 Subject: [PATCH 203/478] Apply suggestion --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 88cea33f5..5988d4a24 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -242,7 +242,7 @@ Logs will be printed in case of an error. ### Note on SIGINT -Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT signal, Node.js's default behaviour of exiting on that signal no longer occurs. This was done to add cleanup handlers and let them run in parallel instead of exiting eagerly, which is possible when running multiple clusters in parallel (note that this is currently possible only by patching CTL). To restore the exit behaviour, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. +Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT IPC signal, Node.js's default behaviour of exiting on CTRL+C no longer occurs. This was done to let cluster cleanup handlers run asynchronously. To restore the usual exit-by-CTRL+C, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. ```purescript ... From a8334539dcb1953038288b811f68e34e858d976b Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 22:44:16 +0700 Subject: [PATCH 204/478] Condense assertions mention --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 5988d4a24..acc743230 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -72,7 +72,7 @@ You can either call it directly from your test's main or use any library for gro ### Writing checks in tests CTL will run contracts in your test bodies and will print errors for any failed tests. -Only test body failures are checked and this works fine if you want to make sure your `Contract`s execute without errors; if you want to add more precise checks (like checking that particular token is now at some address, that some exact amount was transferred, etc.) then you need to write these checks manually in a `Contract` monad (and preferably to utilize the [assertions library](./test-utils.md)) and then throw errors. +For more complex checks you can use the [assertions library](./test-utils.md). ### Note on running clusters From 662710672993371c84697b34ba5dba83e3afdece Mon Sep 17 00:00:00 2001 From: Kirill Boltaev Date: Mon, 29 May 2023 22:56:51 +0700 Subject: [PATCH 205/478] Restructure --- doc/plutip-testing.md | 58 +++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index acc743230..85b11fd32 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -8,14 +8,13 @@ - [Architecture](#architecture) - [Testing contracts](#testing-contracts) - - [Testing with Mote overview](#testing-with-mote-overview) - - [Testing in Aff context overview](#testing-in-aff-context-overview) - - [Writing checks in tests](#writing-checks-in-tests) - - [Note on running clusters](#note-on-running-clusters) - [Testing with Mote](#testing-with-mote) + - [Overview](#overview) - [Using Mote testing interface](#using-mote-testing-interface) - - [Overview of internal implementation](#overview-of-internal-implementation) + - [Internal implementation overview](#internal-implementation-overview) - [Testing in Aff context](#testing-in-aff-context) + - [Writing checks in tests](#writing-checks-in-tests) + - [Note on running clusters](#note-on-running-clusters) - [Note on SIGINT](#note-on-sigint) - [Testing with Nix](#testing-with-nix) - [Cluster configuration options](#cluster-configuration-options) @@ -50,7 +49,9 @@ CTL can help you test the offchain `Contract`s from your project (and consequent There are two approaches to writing such tests. -### Testing with Mote overview +### Testing with Mote + +#### Overview [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and grouping tests (plus other quality of life features, e.g. skipping marked tests). @@ -60,31 +61,6 @@ The function will interpret a `MoteT` (effectful test tree) into `Aff`, which yo The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple `Mote`-based example. -More info and usage examples are [here](#testing-with-mote). - -### Testing in Aff context overview - -[First](#testing-in-aff-context) is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. -This function runs in `Aff`; it will also throw an exception should contract fail for any reason. -After the contract execution the Plutip cluster is terminated. -You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. - -### Writing checks in tests - -CTL will run contracts in your test bodies and will print errors for any failed tests. -For more complex checks you can use the [assertions library](./test-utils.md). - -### Note on running clusters - -The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. -[`plutip-server`](../plutip-server) allows only once active cluster at a time. -CTL currently launches `plutip-server` and `kupo` on pre-defined ports, so you won't be able to launch multiple environments to get parallel cluster. - - - - -### Testing with Mote - `Contract.Test.Plutip.testPlutipContracts` type is defined as follows: ```purescript testPlutipContracts @@ -141,7 +117,7 @@ Note that in Mote you can define several tests and several groups in a single bl Internally `testPlutipContracts` places a bracket that sets up the CTL environment and starts up the Plutip cluster on the top level, so if you want to launch cluster only once wrap your tests or groups in a single group. In the example above the environment and cluster setup will happen 3 times. -#### Overview of internal implementation +#### Internal implementation overview `Contract.Test.Plutip.testPlutipContracts` type is defined as follows (after expansion of the CTL's `TestPlanM` type synonym): ```purescript @@ -179,6 +155,11 @@ This functionality will probably be added to CTL later. ### Testing in Aff context +Second approach is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. +This function runs in `Aff`; it will also throw an exception should contract fail for any reason. +After the contract execution the Plutip cluster is terminated. +You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. + `Contract.Test.Plutip.runPlutipContract`'s function type is defined as follows: ```purescript @@ -239,6 +220,19 @@ In most cases at least two UTxOs per wallet are needed (one of which will be use Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. Logs will be printed in case of an error. +### Writing checks in tests + +CTL will run contracts in your test bodies and will print errors for any failed tests. +For more complex checks you can use the [assertions library](./test-utils.md). + +### Note on running clusters + +The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. +[`plutip-server`](../plutip-server) allows only once active cluster at a time. +CTL currently launches `plutip-server` and `kupo` on pre-defined ports, so you won't be able to launch multiple environments to get parallel cluster. + + + ### Note on SIGINT From 0da3cd0e2e23f6e6159b9c08e4a59bdeeffd1f23 Mon Sep 17 00:00:00 2001 From: t4ccer Date: Mon, 29 May 2023 13:19:11 -0600 Subject: [PATCH 206/478] Add `plutarch-ctl-bridge` docs --- doc/importing-scripts.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/importing-scripts.md b/doc/importing-scripts.md index 7e41d8fcc..041e076d5 100644 --- a/doc/importing-scripts.md +++ b/doc/importing-scripts.md @@ -8,6 +8,7 @@ - [Serializing Plutus scripts](#serializing-plutus-scripts) - [PlutusTx](#plutustx) - [Plutarch](#plutarch) + - [plutarch-ctl-bridge](#plutarch-ctl-bridge) ## Importing serialized scripts @@ -138,3 +139,7 @@ Note that we specified plutus version. ### Plutarch You can use [`ply`](https://github.com/mlabs-haskell/ply) and [`ply-ctl`](https://github.com/mlabs-haskell/ply-ctl). + +### plutarch-ctl-bridge + +You can use [`plutarch-ctl-bridge`](https://github.com/mlabs-haskell/plutarch-ctl-bridge) to generate Purescript types from your Haskell type definitions and typed script wrappers from parametrized Plutarch scripts. See [example module](https://github.com/mlabs-haskell/plutarch-ctl-bridge/blob/main/example/Main.hs). From 1e543a8ed3b8bf0c8484bc3e1636ae0bc7d3cffc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 3 Jun 2023 18:57:09 +0400 Subject: [PATCH 207/478] Add comparison with Lucid --- README.md | 1 + doc/comparisons.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 doc/comparisons.md diff --git a/README.md b/README.md index 96a0d41b6..0852dda31 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Custom query layers](./doc/custom-query-layers.md) - [FAQs](./doc/faq.md) - [Feature overview video](./doc/video-intro.md) +- [Comparison with other frameworks (Lucid)](./doc/comparisons.md) - [Development workflows for CTL](./doc/development.md) You can also access [PureScript documentation for CTL and its dependencies](https://plutonomicon.github.io/cardano-transaction-lib/) for the most recent `develop` version, or [generate it yourself](./doc/development.md#generating-ps-documentation). diff --git a/doc/comparisons.md b/doc/comparisons.md new file mode 100644 index 000000000..0a362e010 --- /dev/null +++ b/doc/comparisons.md @@ -0,0 +1,64 @@ + +

CTL vs. other offchain solutions

+ +This document highlights key differences between CTL and other Cardano offchain frameworks. + + + + +- [Lucid](#lucid) + - [Wallet support](#wallet-support) + - [Query layer differences](#query-layer-differences) + - [Supported backends](#supported-backends) + - [Staking support](#staking-support) + - [Testing](#testing) + - [API design](#api-design) + + + +## Lucid + +### Wallet support + +- Lucid supports any CIP-30 compatible wallet. CTL supports a pre-defined list of wallets (however, the list can be extended easily). +- Both CTL and Lucid support using [seed phrases and private keys](./key-management.md). +- Lucid allows to use any address without a private key for querying - CTL does not allow that, but it's still possible to build transactions for other wallets to sign via [other means](./balancing.md). + +### Query layer differences + +Lucid uses a [`Provider` class](https://deno.land/x/lucid@0.10.5/mod.ts?s=Provider) that defines all available queries. CTL query methods are defined in [`QueryHandle`](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/src/Internal/Contract/QueryHandle/Type.purs#L36). + +CTL supports the following queries that Lucid does not: + +- `getScriptByHash` +- `getTxMetadata` +- `getChainTip` +- `getCurrentEpoch` +- `evaluateTx` (not needed for Lucid) +- `getEraSummaries` +- `getPoolIds` + +Lucid, on the other hand, provides a way to get a UTxO that contains a specified NFT (`getUtxoByUnit`). + +### Supported backends + +- Both CTL and Lucid support [Blockfrost](./blockfrost.md) and [Kupo+Ogmios](./runtime.md) +- Lucid supports [Maestro](https://www.gomaestro.org/) +- Both CTL and Lucid allow for custom backends - Lucid via `Provider` interface implementation, and CTL via a custom `QueryHandle`. + +### Staking support + +Both [CTL](./staking.md) and [Lucid](https://lucid.spacebudz.io/docs/getting-started/delegate/) support all operations with ADA delegations. + +### Testing + +CTL uses [Plutip](./plutip-testing.md), which is a tool to spawn real Cardano testnets on the fly, while Lucid uses an [emulator](https://lucid.spacebudz.io/docs/getting-started/test-emulate/). + +Additionally, CTL supports [testing with real wallets](./e2e-testing.md) via headless browsers and provides [an assertion library](./test-utils.md). + +### API design + +Lucid aims for simplicity, while CTL allows more fine-grained control over transaction building process. + +- CTL uses [`cardano-serialization-lib`](https://github.com/Emurgo/cardano-serialization-lib/), while Lucid uses a fork of [`cardano-multiplatform-lib`](https://github.com/berry-pool/cardano-multiplatform-lib). Lucid allows to use CML's `TxBuilder` or [call CML directly](https://lucid.spacebudz.io/docs/advanced/cml/), while CTL allows to alter the transaction arbitrarily as PureScript data type either before or after balancing. In CTL, CSL types and method wrappers are a part of the internal interface, but technically they can be used as well. +- Plutus Data conversion is handled via a [schema-enabled API](https://lucid.spacebudz.io/docs/advanced/type-casting/) in Lucid. CTL allows for automatic `ToData` / `FromData` deriving for some types, via `HasPlutusSchema`. From 647fe0dd791f9fd1ef53abe208c0ebf457342ddf Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Wed, 7 Jun 2023 20:23:15 +0200 Subject: [PATCH 208/478] Add sourcemaps to build artifacts --- nix/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 9d364cef1..48aa48fc3 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -184,7 +184,8 @@ let buildPhase = '' psa ${pkgs.lib.optionalString strictComp "--strict" } \ --censor-lib --is-lib=.spago ${spagoGlobs} \ - --censor-codes=${builtins.concatStringsSep "," censorCodes} "./**/*.purs" + --censor-codes=${builtins.concatStringsSep "," censorCodes} "./**/*.purs" \ + -gsourcemaps,js ''; # We also need to copy all of `src` here, since compiled modules in `output` # might refer to paths that will point to nothing if we use `src` directly From e8766e6c012f14ae474c60b7389dd93e0cd9e7a1 Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Wed, 7 Jun 2023 20:47:53 +0200 Subject: [PATCH 209/478] Enable source maps for node.js --- nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 48aa48fc3..9aaa359c3 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -228,7 +228,7 @@ let # (idea taken from `plutus-playground-client`) '' cd ${project} - ${nodejs}/bin/node -e 'require("./output/${testMain}").main()' + ${nodejs}/bin/node --enable-source-maps -e 'require("./output/${testMain}").main()' touch $out ''; @@ -359,7 +359,7 @@ let done; - ${nodejs}/bin/node -e 'require("${project}/output/${testMain}").main()' e2e-test run + ${nodejs}/bin/node --enable-source-maps -e 'require("${project}/output/${testMain}").main()' e2e-test run mkdir $out '' ; From 2bed46255f2dcb5c2bca6b6c4121145274268cfe Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 13:38:18 +0400 Subject: [PATCH 210/478] Make formatter happy --- src/Contract/Backend/Ogmios/Mempool.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index 87b53cdc0..b06a1ee46 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -34,7 +34,7 @@ import Ctl.Internal.TxOutput ( ogmiosTxOutToTransactionOutput , txOutRefToTransactionInput ) -import Data.Array ((..), (:)) +import Data.Array (range, (:)) import Data.Array as Array import Data.Bifunctor (bimap) import Data.Map as Map @@ -93,7 +93,7 @@ mempoolTxToUtxoMap (Ogmios.MempoolTransaction { id, body }) = <$> bimap txOutRefToTransactionInput (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) - (0 .. (length outputs - 1)) + (range 0 (length outputs - 1)) outputs where From e1049a7a99535635df1ee3db0b6169290a735cef Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 14:58:53 +0400 Subject: [PATCH 211/478] Minor code improvements, add a failing test --- src/Contract/Backend/Ogmios/Mempool.purs | 75 ++++++++++++++++-------- test/Plutip.purs | 2 + test/Plutip/Contract/OgmiosMempool.purs | 43 ++++++++++++++ 3 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 test/Plutip/Contract/OgmiosMempool.purs diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index b06a1ee46..d83509f3d 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -1,19 +1,23 @@ --- A module for interacting with Ogmios' Local TX Monitor +-- | A module for interacting with Ogmios' Local TX Monitor +-- | https://ogmios.dev/mini-protocols/local-tx-monitor/ module Contract.Backend.Ogmios.Mempool ( module Ogmios , acquireMempoolSnapshot - , fetchMempoolTXs + , fetchMempoolTxs , mempoolSnapshotHasTx , mempoolSnapshotNextTx , mempoolSnapshotSizeAndCapacity , mempoolTxToUtxoMap , releaseMempool + , withMempoolSnapshot ) where import Contract.Prelude import Contract.Monad (Contract) import Contract.Utxos (UtxoMap) +import Control.Apply (lift2) +import Control.Monad.Error.Class (try) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Plutus.Conversion (toPlutusTxOutputWithRefScript) import Ctl.Internal.QueryM @@ -34,13 +38,15 @@ import Ctl.Internal.TxOutput ( ogmiosTxOutToTransactionOutput , txOutRefToTransactionInput ) -import Data.Array (range, (:)) +import Data.Array (range) import Data.Array as Array import Data.Bifunctor (bimap) +import Data.List (List(Cons)) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) import Data.UInt as UInt +import Effect.Exception (throw) -- | Establish a connection with the Local TX Monitor. -- | Instantly accquires the current mempool snapshot, and will wait for the next @@ -70,35 +76,52 @@ mempoolSnapshotSizeAndCapacity = wrapQueryM <<< -- | Release the connection to the Local TX Monitor. releaseMempool - :: Ogmios.MempoolSnapshotAcquired -> Contract Ogmios.MempoolReleased -releaseMempool = wrapQueryM <<< QueryM.releaseMempool + :: Ogmios.MempoolSnapshotAcquired -> Contract Unit +releaseMempool = void <<< wrapQueryM <<< QueryM.releaseMempool + +-- | A bracket-style function for working with mempool snapshots - ensures +-- | release in the presence of exceptions +withMempoolSnapshot + :: forall a + . (Ogmios.MempoolSnapshotAcquired -> Contract a) + -> Contract a +withMempoolSnapshot f = do + s <- acquireMempoolSnapshot + res <- try $ f s + releaseMempool s + liftEither res -- | Recursively request the next TX in the mempool until Ogmios does not -- | respond with a new TX. -fetchMempoolTXs +fetchMempoolTxs :: Ogmios.MempoolSnapshotAcquired -> Contract (Array Ogmios.MempoolTransaction) -fetchMempoolTXs ms = do - nextTX <- mempoolSnapshotNextTx ms - case nextTX of - Just tx -> do - txs <- fetchMempoolTXs ms - pure $ tx : txs - Nothing -> pure mempty +fetchMempoolTxs ms = Array.fromFoldable <$> go + where + go = do + nextTX <- mempoolSnapshotNextTx ms + case nextTX of + Just tx -> Cons tx <$> go + Nothing -> pure mempty -- | Convert the UTxOs in the `MempoolTransaction` type into a `UtxoMap`. -mempoolTxToUtxoMap :: Ogmios.MempoolTransaction -> UtxoMap -mempoolTxToUtxoMap (Ogmios.MempoolTransaction { id, body }) = - Map.fromFoldable $ Array.catMaybes $ uncurry tupleMaybes - <$> bimap txOutRefToTransactionInput - (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) - <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) - (range 0 (length outputs - 1)) - outputs - +mempoolTxToUtxoMap :: Ogmios.MempoolTransaction -> Contract UtxoMap +mempoolTxToUtxoMap tx@(Ogmios.MempoolTransaction { id, body }) = do + let + tuples = uncurry (lift2 Tuple) + <$> bimap txOutRefToTransactionInput + (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) + <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) + (range 0 (length outputs - 1)) + outputs + Map.fromFoldable <$> for tuples + ( maybe + ( liftEffect $ throw + $ "mempoolTxToUtxoMap: impossible happened (conversion" + <> " failure), please report as bug: " + <> show tx + ) + pure + ) where outputs = (unwrap body).outputs - - -- | Combine two `Maybe`s into a `Maybe Tuple`. - tupleMaybes :: forall a b. Maybe a -> Maybe b -> Maybe (Tuple a b) - tupleMaybes ma mb = (ma # map Tuple) <*> mb diff --git a/test/Plutip.purs b/test/Plutip.purs index 0fa163606..8380fe4c8 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -34,6 +34,7 @@ import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert import Test.Ctl.Plutip.Contract.NetworkId as NetworkId +import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool import Test.Ctl.Plutip.Logging as Logging import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface @@ -57,6 +58,7 @@ main = interruptOnSignal SIGINT =<< launchAff do NetworkId.suite Contract.suite UtxoDistribution.suite + testPlutipContracts config OgmiosMempool.suite testStartPlutipCluster :: TestPlanM (Aff Unit) Unit testStartPlutipCluster = group "Server" do diff --git a/test/Plutip/Contract/OgmiosMempool.purs b/test/Plutip/Contract/OgmiosMempool.purs new file mode 100644 index 000000000..2d33a9ca2 --- /dev/null +++ b/test/Plutip/Contract/OgmiosMempool.purs @@ -0,0 +1,43 @@ +module Test.Ctl.Plutip.Contract.OgmiosMempool + ( suite + ) where + +import Prelude + +import Contract.Backend.Ogmios.Mempool (acquireMempoolSnapshot, fetchMempoolTxs) +import Contract.Scripts (validatorHash) +import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) +import Contract.Test.Mote (TestPlanM) +import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum +import Data.BigInt as BigInt +import Effect.Class (liftEffect) +import Effect.Console as Console +import Mote (group, test) + +suite :: TestPlanM ContractTest Unit +suite = group "Ogmios mempool test" do + test "acquireMempoolSnapshot" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + liftEffect <<< Console.log <<< show =<< acquireMempoolSnapshot + test "fetchMempoolTXs" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- InlineDatum.checkDatumIsInlineScript + let vhash = validatorHash validator + void $ InlineDatum.payToCheckDatumIsInline vhash + mpTxs <- fetchMempoolTxs =<< acquireMempoolSnapshot + liftEffect <<< Console.log <<< show $ mpTxs + pure unit From 154eefbaad1b9370c7ea8e070f9514fa4f646e47 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 16:52:59 +0400 Subject: [PATCH 212/478] Improve tests for Ogmios mempool query functions --- src/Contract/Backend/Ogmios/Mempool.purs | 66 ++++++++---------------- src/Internal/QueryM.purs | 1 - test/Plutip/Contract/OgmiosMempool.purs | 64 ++++++++++++++++++++--- 3 files changed, 78 insertions(+), 53 deletions(-) diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index d83509f3d..6f9248764 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -1,4 +1,5 @@ -- | A module for interacting with Ogmios' Local TX Monitor +-- | These functions only work with Ogmios backend (not Blockfrost!). -- | https://ogmios.dev/mini-protocols/local-tx-monitor/ module Contract.Backend.Ogmios.Mempool ( module Ogmios @@ -7,7 +8,6 @@ module Contract.Backend.Ogmios.Mempool , mempoolSnapshotHasTx , mempoolSnapshotNextTx , mempoolSnapshotSizeAndCapacity - , mempoolTxToUtxoMap , releaseMempool , withMempoolSnapshot ) where @@ -15,11 +15,11 @@ module Contract.Backend.Ogmios.Mempool import Contract.Prelude import Contract.Monad (Contract) -import Contract.Utxos (UtxoMap) -import Control.Apply (lift2) -import Control.Monad.Error.Class (try) +import Control.Monad.Error.Class (liftMaybe, try) +import Ctl.Internal.Base64 (decodeBase64) +import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Plutus.Conversion (toPlutusTxOutputWithRefScript) +import Ctl.Internal.Deserialization.Transaction (deserializeTransaction) import Ctl.Internal.QueryM ( acquireMempoolSnapshot , mempoolSnapshotHasTx @@ -28,25 +28,16 @@ import Ctl.Internal.QueryM , releaseMempool ) as QueryM import Ctl.Internal.QueryM.Ogmios - ( MempoolReleased(Released) - , MempoolSizeAndCapacity(MempoolSizeAndCapacity) + ( MempoolSizeAndCapacity(MempoolSizeAndCapacity) , MempoolSnapshotAcquired , MempoolTransaction(MempoolTransaction) , TxHash ) as Ogmios -import Ctl.Internal.TxOutput - ( ogmiosTxOutToTransactionOutput - , txOutRefToTransactionInput - ) -import Data.Array (range) +import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array as Array -import Data.Bifunctor (bimap) import Data.List (List(Cons)) -import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.UInt as UInt -import Effect.Exception (throw) +import Effect.Exception (error) -- | Establish a connection with the Local TX Monitor. -- | Instantly accquires the current mempool snapshot, and will wait for the next @@ -56,16 +47,25 @@ acquireMempoolSnapshot = wrapQueryM QueryM.acquireMempoolSnapshot -- | Check to see if a TxHash is present in the current mempool snapshot. mempoolSnapshotHasTx - :: Ogmios.MempoolSnapshotAcquired -> Ogmios.TxHash -> Contract Boolean -mempoolSnapshotHasTx ms = wrapQueryM <<< QueryM.mempoolSnapshotHasTx ms + :: Ogmios.MempoolSnapshotAcquired -> TransactionHash -> Contract Boolean +mempoolSnapshotHasTx ms = wrapQueryM <<< QueryM.mempoolSnapshotHasTx ms <<< + unwrap -- | Get the first received TX in the current mempool snapshot. This function can -- | be recursively called to traverse the finger-tree of the mempool data set. -- | This will return `Nothing` once it has reached the end of the current mempool. mempoolSnapshotNextTx :: Ogmios.MempoolSnapshotAcquired - -> Contract (Maybe Ogmios.MempoolTransaction) -mempoolSnapshotNextTx = wrapQueryM <<< QueryM.mempoolSnapshotNextTx + -> Contract (Maybe Transaction) +mempoolSnapshotNextTx mempoolAcquired = do + mbTx <- wrapQueryM $ QueryM.mempoolSnapshotNextTx mempoolAcquired + for mbTx \(Ogmios.MempoolTransaction { raw }) -> do + byteArray <- liftMaybe (error "Failed to decode transaction") + $ decodeBase64 raw + liftMaybe (error "Failed to decode tx") + $ hush + $ deserializeTransaction + $ wrap byteArray -- | The acquired snapshot’s size (in bytes), number of transactions, and -- | capacity (in bytes). @@ -95,7 +95,7 @@ withMempoolSnapshot f = do -- | respond with a new TX. fetchMempoolTxs :: Ogmios.MempoolSnapshotAcquired - -> Contract (Array Ogmios.MempoolTransaction) + -> Contract (Array Transaction) fetchMempoolTxs ms = Array.fromFoldable <$> go where go = do @@ -103,25 +103,3 @@ fetchMempoolTxs ms = Array.fromFoldable <$> go case nextTX of Just tx -> Cons tx <$> go Nothing -> pure mempty - --- | Convert the UTxOs in the `MempoolTransaction` type into a `UtxoMap`. -mempoolTxToUtxoMap :: Ogmios.MempoolTransaction -> Contract UtxoMap -mempoolTxToUtxoMap tx@(Ogmios.MempoolTransaction { id, body }) = do - let - tuples = uncurry (lift2 Tuple) - <$> bimap txOutRefToTransactionInput - (toPlutusTxOutputWithRefScript <=< ogmiosTxOutToTransactionOutput) - <$> Array.zipWith (\i x -> Tuple { txId: id, index: UInt.fromInt i } x) - (range 0 (length outputs - 1)) - outputs - Map.fromFoldable <$> for tuples - ( maybe - ( liftEffect $ throw - $ "mempoolTxToUtxoMap: impossible happened (conversion" - <> " failure), please report as bug: " - <> show tx - ) - pure - ) - where - outputs = (unwrap body).outputs diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 9d7f43913..b05b1a906 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -45,7 +45,6 @@ module Ctl.Internal.QueryM , scriptToAeson , submitTxOgmios , underlyingWebSocket - , withMempoolSnapshot ) where import Prelude diff --git a/test/Plutip/Contract/OgmiosMempool.purs b/test/Plutip/Contract/OgmiosMempool.purs index 2d33a9ca2..dc9a77223 100644 --- a/test/Plutip/Contract/OgmiosMempool.purs +++ b/test/Plutip/Contract/OgmiosMempool.purs @@ -4,15 +4,23 @@ module Test.Ctl.Plutip.Contract.OgmiosMempool import Prelude -import Contract.Backend.Ogmios.Mempool (acquireMempoolSnapshot, fetchMempoolTxs) +import Contract.Backend.Ogmios.Mempool + ( MempoolSizeAndCapacity(MempoolSizeAndCapacity) + , acquireMempoolSnapshot + , fetchMempoolTxs + , mempoolSnapshotHasTx + , mempoolSnapshotSizeAndCapacity + , withMempoolSnapshot + ) import Contract.Scripts (validatorHash) import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Contract.Test.Mote (TestPlanM) +import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum +import Data.Array (length) import Data.BigInt as BigInt -import Effect.Class (liftEffect) -import Effect.Console as Console -import Mote (group, test) +import Mote (group, skip, test) +import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM ContractTest Unit suite = group "Ogmios mempool test" do @@ -25,7 +33,7 @@ suite = group "Ogmios mempool test" do ] withWallets distribution \alice -> do withKeyWallet alice do - liftEffect <<< Console.log <<< show =<< acquireMempoolSnapshot + void acquireMempoolSnapshot test "fetchMempoolTXs" do let distribution :: InitialUTxOs @@ -37,7 +45,47 @@ suite = group "Ogmios mempool test" do withKeyWallet alice do validator <- InlineDatum.checkDatumIsInlineScript let vhash = validatorHash validator - void $ InlineDatum.payToCheckDatumIsInline vhash + txId <- InlineDatum.payToCheckDatumIsInline vhash mpTxs <- fetchMempoolTxs =<< acquireMempoolSnapshot - liftEffect <<< Console.log <<< show $ mpTxs - pure unit + length mpTxs `shouldEqual` 1 + awaitTxConfirmed txId + mpTxs' <- fetchMempoolTxs =<< acquireMempoolSnapshot + length mpTxs' `shouldEqual` 0 + skip $ test + "mempoolSnapshotHasTx - skipped because HasTx always returns false for some reason" + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- InlineDatum.checkDatumIsInlineScript + let vhash = validatorHash validator + txId <- InlineDatum.payToCheckDatumIsInline vhash + withMempoolSnapshot (flip mempoolSnapshotHasTx txId) >>= shouldEqual + true + snapshot <- acquireMempoolSnapshot + _mpTxs' <- fetchMempoolTxs snapshot + -- for_ mpTxs' \tx -> do + -- liftEffect <<< Console.log <<< show =<< liftEffect + -- (transactionHash tx) + awaitTxConfirmed txId + mempoolSnapshotHasTx snapshot txId >>= shouldEqual false + test "mempoolSnapshotSizeAndCapacity" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- InlineDatum.checkDatumIsInlineScript + let vhash = validatorHash validator + void $ InlineDatum.payToCheckDatumIsInline vhash + MempoolSizeAndCapacity { numberOfTxs } <- + withMempoolSnapshot (mempoolSnapshotSizeAndCapacity) + numberOfTxs `shouldEqual` 1 From 467cd55475a0ff8f90856f827f68731cb8626388 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 18:32:55 +0400 Subject: [PATCH 213/478] Remove all ogmios-specific types and use CBOR parsing --- doc/tx-chaining.md | 2 + src/Internal/QueryM.purs | 6 +- src/Internal/QueryM/Ogmios.purs | 453 +------------------------------- 3 files changed, 8 insertions(+), 453 deletions(-) diff --git a/doc/tx-chaining.md b/doc/tx-chaining.md index bab932953..8326c363d 100644 --- a/doc/tx-chaining.md +++ b/doc/tx-chaining.md @@ -7,3 +7,5 @@ Transaction chaining on Cardano is the ability to send transactions that depend In case the transactions come from multiple actors, some off-chain data delivery mechanism should be used - it's up to the application developers to implement it. The only piece of data that is actually needed is the additional UTxOs that the CTL query layer is not (yet) aware of. `mustUseAdditionalUtxos` [balancer constraint](./balancing.md) can be used for that, as shown in the [transaction chaining example](../examples/TxChaining.purs). + +`createAdditionalUtxos` is a helper function that can be used to build an UTxO set for use with `mustUseAdditionalUtxos`. `Contract.Backend.Ogmios.Mempool` module contains functions that allow to query the mempool for pending transactions (only works with Ogmios backend). See [here](https://ogmios.dev/mini-protocols/local-tx-monitor/) for more. diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index b05b1a906..f5ef2c1b8 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -379,7 +379,7 @@ releaseMempoolAff :: OgmiosWebSocket -> Logger -> Ogmios.MempoolSnapshotAcquired - -> Aff Ogmios.MempoolReleased + -> Aff String releaseMempoolAff ogmiosWs logger ms = mkOgmiosRequestAff ogmiosWs logger (Ogmios.releaseMempoolCall ms) _.releaseMempool @@ -423,7 +423,7 @@ mempoolSnapshotSizeAndCapacity ms = releaseMempool :: Ogmios.MempoolSnapshotAcquired - -> QueryM Ogmios.MempoolReleased + -> QueryM String releaseMempool ms = mkOgmiosRequest (Ogmios.releaseMempoolCall ms) @@ -721,7 +721,7 @@ type OgmiosListeners = , currentEpoch :: ListenerSet Unit Ogmios.CurrentEpoch , systemStart :: ListenerSet Unit Ogmios.OgmiosSystemStart , acquireMempool :: ListenerSet Unit Ogmios.MempoolSnapshotAcquired - , releaseMempool :: ListenerSet Unit Ogmios.MempoolReleased + , releaseMempool :: ListenerSet Unit String , mempoolHasTx :: ListenerSet TxHash Boolean , mempoolNextTx :: ListenerSet Unit (Maybe Ogmios.MempoolTransaction) , mempoolSizeAndCapcity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 073d33d17..2457d00e2 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -7,33 +7,13 @@ module Ctl.Internal.QueryM.Ogmios , CurrentEpoch(CurrentEpoch) , DelegationsAndRewardsR(DelegationsAndRewardsR) , ExecutionUnits - , InputSource(Collaterals, Inputs) - , MempoolReleased(Released) , MempoolSizeAndCapacity(MempoolSizeAndCapacity) , MempoolSnapshotAcquired , MempoolTransaction(MempoolTransaction) - , MempoolTxBody(MempoolTxBody) - , Network(Mainnet, Testnet) , OgmiosAddress - , OgmiosAuxiliaryData(OgmiosAuxiliaryData) , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) - , OgmiosBootstrapWitness(OgmiosBootstrapWitness) - , OgmiosCertificate - ( StakeDelegation - , StakeKeyRegistration - , StakeKeyDeregistration - , PoolRegistration - , PoolRetirement - , GenesisDelegation - , MoveInstantaneousRewards - ) - , OgmiosRedeemer(OgmiosRedeemer) - , OgmiosRequiredSigner - , OgmiosRewardAddress , OgmiosTxOut , OgmiosTxOutRef - , OgmiosWithdrawls(OgmiosWithdrawls) - , OgmiosWitnessSet(OgmiosWitnessSet) , PParamRational(PParamRational) , PoolParameters , PoolParametersR(PoolParametersR) @@ -49,7 +29,6 @@ module Ctl.Internal.QueryM.Ogmios , IllFormedExecutionBudget , NoCostModelForLanguage ) - , Signature , AdditionalUtxoSet(AdditionalUtxoSet) , OgmiosUtxoMap , OgmiosDatum @@ -58,29 +37,14 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosSystemStart(OgmiosSystemStart) , OgmiosTxIn , OgmiosTxId - , Proposal(Proposal) , SubmitTxR(SubmitTxSuccess, SubmitFail) , TxEvaluationFailure(UnparsedError, ScriptFailures) , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) , PoolIdsR , TxHash - , Update(Update) , UtxoQR(UtxoQR) , UtxoQueryResult - , ValidityInterval - , StakeDelegation - , PoolRetirement - , GenesisDelegation - , MoveInstantaneousRewards - , DigestBlake2BCredential - , PoolId - , Rewards(Rewards) - , RewardPot(Reserves, Treasury) - , LovelaceDelta - , ChainCode - , AddressAttributes - , VerificationKey , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -110,14 +74,13 @@ import Aeson ( class DecodeAeson , class EncodeAeson , Aeson - , JsonDecodeError(AtKey, TypeMismatch, MissingValue, UnexpectedValue) + , JsonDecodeError(TypeMismatch, MissingValue, AtKey) , caseAesonArray , caseAesonObject , caseAesonString , decodeAeson , encodeAeson , fromArray - , fromString , getField , getFieldOptional , getFieldOptional' @@ -217,25 +180,12 @@ import Ctl.Internal.Types.SystemStart , sysStartToOgmiosTimestamp ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum - ( MetadataMap - , MetadataList - , Int - , Bytes - , Text - ) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) -import Data.Argonaut (fromString) as JSON import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt -import Data.Bitraversable (bitraverse) import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) @@ -385,7 +335,7 @@ mempoolSnpashotSizeAndCapacityCall _ = mkOgmiosCallTypeNoArgs "SizeAndCapacity" releaseMempoolCall - :: MempoolSnapshotAcquired -> JsonWspCall Unit MempoolReleased + :: MempoolSnapshotAcquired -> JsonWspCall Unit String releaseMempoolCall _ = mkOgmiosCallTypeNoArgs "ReleaseMempool" @@ -425,24 +375,8 @@ instance DecodeAeson MempoolSizeAndCapacity where pure $ wrap { capacity, currentSize, numberOfTxs } -data MempoolReleased = Released - --- Ogmios only has a single response for releasing the mempool --- https://github.com/CardanoSolutions/ogmios/blob/d326d8839d50ff628f7be1b5552f7cd22b2f094e/server/src/Ogmios/Data/Protocol/StateQuery.hs#L231 -instance DecodeAeson MempoolReleased where - decodeAeson = aesonString \a -> case a of - "Released" -> Right Released - _ -> unexpectedValueError a - -instance Show MempoolReleased where - show Released = "Mempool Released" - newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId - , inputSource :: InputSource - , body :: MempoolTxBody - , witness :: OgmiosWitnessSet - , metadata :: Maybe OgmiosAuxiliaryData , raw :: String } @@ -455,128 +389,13 @@ instance Show MempoolTransaction where instance DecodeAeson MempoolTransaction where decodeAeson = aesonObject \o -> do id <- o .: "id" - inputSource <- o .: "inputSource" - body <- o .: "body" - witness <- o .: "witness" - metadata <- o .:? "metadata" raw <- o .: "raw" - pure $ MempoolTransaction { id, inputSource, body, witness, metadata, raw } - -newtype MempoolTxBody = MempoolTxBody - { inputs :: Array OgmiosTxOutRef - , collaterals :: Array OgmiosTxOutRef - , outputs :: Array OgmiosTxOut - , certificates :: Array OgmiosCertificate - , withdrawls :: OgmiosWithdrawls - , fee :: Coin - , validityInterval :: ValidityInterval - , update :: Maybe Update - , mint :: Maybe Value - , network :: Maybe Network - , scriptIntegrityHash :: Maybe String - , requiredExtraSignatures :: Array OgmiosRequiredSigner - } - -derive instance Generic MempoolTxBody _ -derive instance Newtype MempoolTxBody _ -instance Show MempoolTxBody where - show = genericShow - -instance DecodeAeson MempoolTxBody where - decodeAeson = aesonObject \o -> do - inputs <- aesonArray (traverse parseTxOutRef) =<< o .: "inputs" - collaterals <- aesonArray (traverse parseTxOutRef) =<< o .: "collaterals" - outputs <- aesonArray (traverse parseTxOut) =<< o .: "outputs" - certificates <- aesonArray (traverse decodeAeson) =<< o .: "certificates" - fee <- o .: "fee" - validityInterval <- parseValidityInterval =<< o .: "validityInterval" - update <- o .:? "update" - mint <- o .:? "mint" >>= case _ of - Nothing -> pure Nothing - Just aes -> map Just $ parseValue aes - withdrawls <- o .:? "withdrawls" >>= case _ of - Nothing -> pure $ OgmiosWithdrawls Map.empty - Just wthd -> pure wthd - network <- o .:? "network" - requiredExtraSignatures <- aesonArray (traverse decodeAeson) =<< o .: - "requiredExtraSignatures" - scriptIntegrityHash <- o .:? "scriptIntegrityHash" - pure $ MempoolTxBody - { inputs - , collaterals - , outputs - , certificates - , withdrawls - , fee - , validityInterval - , update - , mint - , network - , scriptIntegrityHash - , requiredExtraSignatures - } - -data InputSource = Inputs | Collaterals - -derive instance Generic InputSource _ - -instance Show InputSource where - show = genericShow - -instance DecodeAeson InputSource where - decodeAeson = aesonString \inputSource -> - case inputSource of - "inputs" -> Right Inputs - "outputs" -> Right Collaterals - _ -> unexpectedValueError inputSource + pure $ MempoolTransaction { id, raw } type OgmiosRewardAddress = String type OgmiosRequiredSigner = String -newtype OgmiosWitnessSet = OgmiosWitnessSet - { signatures :: Map String Signature - , scripts :: Map String ScriptRef - , bootstrap :: Array OgmiosBootstrapWitness - , datums :: Map String OgmiosDatum - , redeemers :: Map String OgmiosRedeemer - } - -derive instance Generic OgmiosWitnessSet _ -derive instance Newtype OgmiosWitnessSet _ - -instance Show OgmiosWitnessSet where - show = genericShow - -instance DecodeAeson OgmiosWitnessSet where - decodeAeson = aesonObject \o -> do - signatures <- flattenAesonObject <$> o .: "signatures" >>= - traverse (decodeValue decodeAeson) >>> map Map.fromFoldable - scripts <- flattenAesonObject <$> o .: "scripts" >>= - traverse (decodeValue $ aesonObject parseScript) >>> map Map.fromFoldable - bootstrap <- o .: "bootstrap" >>= aesonArray (traverse decodeAeson) - datums <- flattenAesonObject <$> o .: "datums" >>= - traverse (decodeValue decodeAeson) >>> map Map.fromFoldable - redeemers <- flattenAesonObject <$> o .: "redeemers" >>= - traverse (decodeValue decodeAeson) >>> map Map.fromFoldable - - pure $ OgmiosWitnessSet - { signatures, scripts, bootstrap, datums, redeemers } - - where - - flattenAesonObject :: Object Aeson -> Array (Tuple String Aeson) - flattenAesonObject = ForeignObject.toUnfoldable - - decodeValue - :: forall a - . (Aeson -> Either JsonDecodeError a) - -> String /\ Aeson - -> Either JsonDecodeError (String /\ a) - decodeValue func (str /\ aes) = do - val <- func aes - pure $ str /\ val - newtype OgmiosRedeemer = OgmiosRedeemer { redeemer :: String, executionUnits :: ExUnits } @@ -596,269 +415,6 @@ instance DecodeAeson OgmiosRedeemer where pure { mem, steps } pure $ OgmiosRedeemer { redeemer, executionUnits } -newtype OgmiosBootstrapWitness = OgmiosBootstrapWitness - { signature :: Signature - , chainCode :: Maybe ChainCode - , addressAttributes :: Maybe AddressAttributes - , key :: VerificationKey - } - -derive instance Generic OgmiosBootstrapWitness _ -derive instance Newtype OgmiosBootstrapWitness _ - -instance Show OgmiosBootstrapWitness where - show = genericShow - -instance DecodeAeson OgmiosBootstrapWitness where - decodeAeson = aesonObject \o -> do - signature <- o .: "signature" - chainCode <- o .:? "chainCode" - addressAttributes <- o .:? "addressAttributes" - key <- o .: "key" - pure $ OgmiosBootstrapWitness - { signature, chainCode, addressAttributes, key } - -type Signature = String - -type ChainCode = String - -type AddressAttributes = String - -type VerificationKey = String - -data OgmiosCertificate - = StakeDelegation StakeDelegation - | StakeKeyRegistration DigestBlake2BCredential - | StakeKeyDeregistration DigestBlake2BCredential - | PoolRegistration PoolParameters - | PoolRetirement PoolRetirement - | GenesisDelegation GenesisDelegation - | MoveInstantaneousRewards MoveInstantaneousRewards - -derive instance Generic OgmiosCertificate _ - -instance Show OgmiosCertificate where - show = genericShow - -instance DecodeAeson OgmiosCertificate where - decodeAeson = aesonObject \o -> do - case (Array.head $ ForeignObject.toUnfoldable o) of - Just ("stakeDelegation" /\ certificate) -> StakeDelegation <$> - parseStakeDelegation certificate - Just ("stakeKeyRegistration" /\ certificate) -> StakeKeyRegistration <$> - decodeAeson certificate - Just ("stakeKeyDeregistration" /\ certificate) -> - StakeKeyDeregistration <$> decodeAeson certificate - Just ("poolRegistration" /\ certificate) -> aesonObject - (map PoolRegistration <<< decodePoolParameters) - certificate - Just ("poolRetirement" /\ certificate) -> PoolRetirement <$> - parsePoolRetirement certificate - Just ("genesisDelegation" /\ certificate) -> GenesisDelegation <$> - parseGenesisDelegation certificate - Just ("moveInstantaneousRewards" /\ certificate) -> - MoveInstantaneousRewards <$> parseMoveInstantaneousRewards certificate - _ -> Left $ TypeMismatch "Expected a Certificate" - -type StakeDelegation = - { delegator :: DigestBlake2BCredential - , delegatee :: PoolId - } - -type PoolRetirement = - { retirementEpoch :: Epoch - , poolId :: PoolId - } - -type GenesisDelegation = - { delegateKeyHash :: VerificationKey - , verificationKeyHash :: VerificationKey - , vrfVerificationKeyHash :: VRFKeyHash - } - -type MoveInstantaneousRewards = - { rewards :: Maybe Rewards - , value :: Maybe Coin - , pot :: RewardPot - } - -parseStakeDelegation :: Aeson -> Either JsonDecodeError StakeDelegation -parseStakeDelegation = aesonObject \o -> do - delegator <- o .: "delegator" - delegatee <- o .: "delegatee" - pure { delegator, delegatee } - -parsePoolRetirement :: Aeson -> Either JsonDecodeError PoolRetirement -parsePoolRetirement = aesonObject \o -> do - retirementEpoch <- o .: "retirementEpoch" - poolId <- o .: "poolId" - pure { retirementEpoch, poolId } - -parseGenesisDelegation :: Aeson -> Either JsonDecodeError GenesisDelegation -parseGenesisDelegation = aesonObject \o -> do - delegateKeyHash <- o .: "delegateKeyHash" - verificationKeyHash <- o .: "verificationKeyHash" - vrfVerificationKeyHash <- decodeVRFKeyHash =<< o .: "vrfVerificationKeyHash" - pure { delegateKeyHash, verificationKeyHash, vrfVerificationKeyHash } - -parseMoveInstantaneousRewards - :: Aeson -> Either JsonDecodeError MoveInstantaneousRewards -parseMoveInstantaneousRewards = aesonObject \o -> do - rewards <- o .:? "rewards" - value <- o .:? "value" - pot <- o .: "pot" - pure { rewards, value, pot } - -type PoolId = String - -type DigestBlake2BCredential = String - -newtype Rewards = Rewards (Map String LovelaceDelta) - -derive instance Generic Rewards _ -derive instance Newtype Rewards _ - -instance Show Rewards where - show = genericShow - -instance DecodeAeson Rewards where - decodeAeson = aesonObject \obj -> do - let rewardsList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) - Rewards <<< Map.fromFoldable <$> - traverse decodeRewardAmount rewardsList - where - decodeRewardAmount - :: String /\ Aeson - -> Either JsonDecodeError (String /\ Coin) - decodeRewardAmount (rewardAddress /\ aeson) = do - coin <- decodeAeson aeson - pure $ rewardAddress /\ Coin coin - -type LovelaceDelta = Coin - -data RewardPot = Reserves | Treasury - -derive instance Generic RewardPot _ - -instance Show RewardPot where - show = genericShow - -instance DecodeAeson RewardPot where - decodeAeson = aesonString \rewardPot -> - case rewardPot of - "reserves" -> Right Reserves - "treasury" -> Right Treasury - _ -> unexpectedValueError rewardPot - -newtype OgmiosWithdrawls = OgmiosWithdrawls (Map OgmiosRewardAddress Coin) - -derive instance Generic OgmiosWithdrawls _ -derive instance Newtype OgmiosWithdrawls _ - -instance Show OgmiosWithdrawls where - show = genericShow - -instance DecodeAeson OgmiosWithdrawls where - decodeAeson = aesonObject \obj -> do - let - withdrawlList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) - OgmiosWithdrawls <<< Map.fromFoldable <$> - traverse decodeWithdrawlAmount withdrawlList - where - decodeWithdrawlAmount - :: OgmiosRewardAddress /\ Aeson - -> Either JsonDecodeError (OgmiosRewardAddress /\ Coin) - decodeWithdrawlAmount (rewardAddress /\ aeson) = do - coin <- decodeAeson aeson - pure $ rewardAddress /\ Coin coin - -newtype OgmiosAuxiliaryData = OgmiosAuxiliaryData - { hash :: String - , body :: - { scripts :: Maybe (Array ScriptRef) - , blob :: Maybe GeneralTransactionMetadata - } - } - -derive instance Generic OgmiosAuxiliaryData _ -derive instance Newtype OgmiosAuxiliaryData _ -instance Show OgmiosAuxiliaryData where - show = genericShow - -instance DecodeAeson OgmiosAuxiliaryData where - decodeAeson = aesonObject \o -> do - hash <- o .: "hash" - body <- o .: "body" >>= - ( aesonObject $ \obj -> do - scripts <- obj .:? "scripts" >>= case _ of - Nothing -> pure Nothing - Just aes -> Just <$> aesonArray (traverse $ aesonObject parseScript) - aes - blob <- obj .:? "blob" >>= case _ of - Nothing -> pure Nothing - Just aes -> Just <$> parseMetadata aes - pure { scripts, blob } - ) - pure $ OgmiosAuxiliaryData { hash, body } - -parseMetadata :: Aeson -> Either JsonDecodeError GeneralTransactionMetadata -parseMetadata = aesonObject \o -> do - let metadata = ForeignObject.toUnfoldable o :: Array (String /\ Aeson) - GeneralTransactionMetadata <<< Map.fromFoldable <$> - traverse decodeMetadata metadata - where - decodeMetadata - :: String /\ Aeson - -> Either JsonDecodeError - (TransactionMetadatumLabel /\ TransactionMetadatum) - decodeMetadata (num /\ aeson) = do - label <- note (TypeMismatch "Epected a BigInt") $ TransactionMetadatumLabel - <$> BigInt.fromString num - metadatum <- decodeMetadatum aeson - pure $ label /\ metadatum - - decodeMetadatum :: Aeson -> Either JsonDecodeError TransactionMetadatum - decodeMetadatum = aesonObject \o -> do - case (Array.head $ ForeignObject.toUnfoldable o) of - Just ("MetadataMap" /\ metadatum) -> decodeMetadataMap metadatum - Just ("MetadataList" /\ metadatum) -> MetadataList <$> aesonArray - (traverse decodeMetadatum) - metadatum - Just ("Int" /\ metadatum) -> Int <$> decodeAeson metadatum - Just ("Bytes" /\ metadatum) -> Bytes <$> decodeAeson metadatum - Just ("Text" /\ metadatum) -> Text <$> decodeAeson metadatum - _ -> Left $ TypeMismatch "Expected a TransactionMetadatum" - - decodeMetadataMap :: Aeson -> Either JsonDecodeError TransactionMetadatum - decodeMetadataMap = aesonObject \o -> do - MetadataMap <<< Map.fromFoldable <$> traverse - (bitraverse (decodeMetadatum <<< fromString) decodeMetadatum) - (ForeignObject.toUnfoldable o :: Array (String /\ Aeson)) - -type ValidityInterval = - { invalidBefore :: Maybe BigInt - , invalidHereafter :: Maybe BigInt - } - -data Network = Mainnet | Testnet - -derive instance Generic Network _ -instance Show Network where - show = genericShow - -instance DecodeAeson Network where - decodeAeson = aesonString \network -> - case network of - "mainnet" -> Right Mainnet - "testnet" -> Right Testnet - _ -> unexpectedValueError network - -parseValidityInterval :: Aeson -> Either JsonDecodeError ValidityInterval -parseValidityInterval = aesonObject \o -> do - invalidBefore <- o .:? "invalidBefore" - invalidHereafter <- o .:? "invalidHereafter" - pure { invalidBefore, invalidHereafter } - newtype Update = Update { epoch :: UInt , proposal :: Proposal @@ -919,9 +475,6 @@ instance DecodeAeson ProtocolVersion where patch <- o .:? "patch" pure $ ProtocolVersion { major, minor, patch } -unexpectedValueError :: forall a. String -> Either JsonDecodeError a -unexpectedValueError = Left <<< UnexpectedValue <<< JSON.fromString - -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- From fcfc31717a2e850bec8577a3a2fa7e7340a1d022 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 18:55:43 +0400 Subject: [PATCH 214/478] Remove all remaining dead code --- src/Internal/QueryM/Ogmios.purs | 83 --------------------------------- 1 file changed, 83 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2457d00e2..89e4f338c 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -392,89 +392,6 @@ instance DecodeAeson MempoolTransaction where raw <- o .: "raw" pure $ MempoolTransaction { id, raw } -type OgmiosRewardAddress = String - -type OgmiosRequiredSigner = String - -newtype OgmiosRedeemer = OgmiosRedeemer - { redeemer :: String, executionUnits :: ExUnits } - -derive instance Generic OgmiosRedeemer _ -derive instance Newtype OgmiosRedeemer _ - -instance Show OgmiosRedeemer where - show = genericShow - -instance DecodeAeson OgmiosRedeemer where - decodeAeson = aesonObject \o -> do - redeemer <- o .: "redeemer" - execUnitsAeson <- o .: "executionUnits" - executionUnits <- flip aesonObject execUnitsAeson \obj -> do - mem <- obj .: "memory" - steps <- obj .: "steps" - pure { mem, steps } - pure $ OgmiosRedeemer { redeemer, executionUnits } - -newtype Update = Update - { epoch :: UInt - , proposal :: Proposal - } - -derive instance Generic Update _ -derive instance Newtype Update _ -instance Show Update where - show = genericShow - -instance DecodeAeson Update where - decodeAeson = aesonObject \o -> do - epoch <- o .: "epoch" - proposal <- o .: "proposal" - pure $ Update { epoch, proposal } - -newtype Proposal = Proposal (Map String OgmiosProtocolParameters) - -derive instance Generic Proposal _ -derive instance Newtype Proposal _ - -instance Show Proposal where - show = genericShow - -instance DecodeAeson Proposal where - decodeAeson = aesonObject $ \obj -> do - let proposalList = ForeignObject.toUnfoldable obj :: Array (String /\ Aeson) - Proposal <<< Map.fromFoldable <$> - traverse decodeWithdrawlAmount proposalList - where - decodeWithdrawlAmount - :: String /\ Aeson - -> Either JsonDecodeError (String /\ OgmiosProtocolParameters) - decodeWithdrawlAmount (string /\ aeson) = do - opp <- decodeAeson aeson - pure $ string /\ opp - -type Nonce = String - -type Ratio = String - -newtype ProtocolVersion = ProtocolVersion - { major :: UInt - , minor :: UInt - , patch :: Maybe UInt - } - -derive instance Generic ProtocolVersion _ -derive instance Newtype ProtocolVersion _ - -instance Show ProtocolVersion where - show = genericShow - -instance DecodeAeson ProtocolVersion where - decodeAeson = aesonObject $ \o -> do - major <- o .: "major" - minor <- o .: "minor" - patch <- o .:? "patch" - pure $ ProtocolVersion { major, minor, patch } - -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- From 685233f0ccf96f6faabb661be19bdee356742c35 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Jun 2023 18:56:47 +0400 Subject: [PATCH 215/478] Add PR link to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aeb91422..61e47bad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - New [docs for contract environment](./doc/contract-environment.md) ([#1453](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1453)) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) -- Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios`. +- Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) ### Changed From b7b107967c7fee0c4f76e7b60711a490cd6dcdee Mon Sep 17 00:00:00 2001 From: t4ccer Date: Fri, 16 Jun 2023 06:56:30 -0600 Subject: [PATCH 216/478] Add `mustSendChangeWithDatum` balancing constraint --- CHANGELOG.md | 1 + src/Internal/BalanceTx/BalanceTx.purs | 30 ++++++++++++++++++------- src/Internal/BalanceTx/Constraints.purs | 14 ++++++++++++ 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61e47bad9..c2a85fb88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) +- New `mustSendChangeWithDatum` balancer constraint ### Changed diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index e4239ac9e..0ecc80179 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -26,6 +26,7 @@ import Ctl.Internal.BalanceTx.Collateral import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) import Ctl.Internal.BalanceTx.Constraints ( _changeAddress + , _changeDatum , _maxChangeOutputTokenQuantity , _nonSpendableInputs , _selectionStrategy @@ -190,6 +191,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do mbSrcAddrs <- asksConstraints Constraints._srcAddresses + changeDatum' <- asksConstraints Constraints._changeDatum + utxos <- liftEitherContract do case mbSrcAddrs of -- Use wallet UTxOs. @@ -248,6 +251,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do { strategy: selectionStrategy , transaction: reindexedTransaction , changeAddress + , changeDatum: fromMaybe NoOutputDatum changeDatum' , allUtxos , utxos: availableUtxos , certsFee @@ -281,6 +285,7 @@ type BalancerParams = { strategy :: SelectionStrategy , transaction :: UnindexedTx , changeAddress :: Address + , changeDatum :: OutputDatum , allUtxos :: UtxoMap , utxos :: UtxoMap , certsFee :: Coin @@ -429,7 +434,9 @@ runBalancer p = do runNextBalancerStep state@{ transaction } = do let txBody = transaction ^. _transaction <<< _body inputValue <- except $ getInputValue p.allUtxos txBody - changeOutputs <- makeChange p.changeAddress inputValue p.certsFee txBody + changeOutputs <- makeChange p.changeAddress p.changeDatum inputValue + p.certsFee + txBody requiredValue <- except $ getRequiredValue p.certsFee p.allUtxos @@ -535,14 +542,19 @@ setTxChangeOutputs outputs tx = -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1396 makeChange - :: Address -> Value -> Coin -> TxBody -> BalanceTxM (Array TransactionOutput) -makeChange changeAddress inputValue certsFee txBody = + :: Address + -> OutputDatum + -> Value + -> Coin + -> TxBody + -> BalanceTxM (Array TransactionOutput) +makeChange changeAddress changeDatum inputValue certsFee txBody = -- Always generate change when a transaction has no outputs to avoid issues -- with transaction confirmation: -- FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 if excessValue == mempty && (txBody ^. _outputs) /= mempty then pure mempty else - map (mkChangeOutput changeAddress) <$> + map (mkChangeOutput changeAddress changeDatum) <$> ( assignCoinsToChangeValues changeAddress excessCoin =<< splitOversizedValues changeValueOutputCoinPairs ) @@ -725,7 +737,9 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = minCoinFor :: Value -> BalanceTxM BigInt minCoinFor value = do - let txOutput = mkChangeOutput changeAddress value + let + -- NOTE: Datum here doesn't matter, we deconstruct UTxO immediately anyway + txOutput = mkChangeOutput changeAddress NoOutputDatum value coinsPerUtxoUnit <- askCoinsPerUtxoUnit ExceptT $ liftEffect $ utxoMinAdaValue coinsPerUtxoUnit txOutput <#> note UtxoMinAdaValueCalculationFailed @@ -740,9 +754,9 @@ derive newtype instance Eq AssetCount instance Ord AssetCount where compare = compare `on` (Array.length <<< Value.valueAssets <<< unwrap) -mkChangeOutput :: Address -> Value -> TransactionOutput -mkChangeOutput changeAddress amount = wrap - { address: changeAddress, amount, datum: NoOutputDatum, scriptRef: Nothing } +mkChangeOutput :: Address -> OutputDatum -> Value -> TransactionOutput +mkChangeOutput changeAddress datum amount = wrap + { address: changeAddress, amount, datum, scriptRef: Nothing } -------------------------------------------------------------------------------- -- Getters for various `Value`s diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index 32b33ec49..f50e01ae4 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -6,12 +6,14 @@ module Ctl.Internal.BalanceTx.Constraints , mustNotSpendUtxosWithOutRefs , mustNotSpendUtxoWithOutRef , mustSendChangeToAddress + , mustSendChangeWithDatum , mustUseAdditionalUtxos , mustUseCoinSelectionStrategy , mustUseUtxosAtAddress , mustUseUtxosAtAddresses , _additionalUtxos , _changeAddress + , _changeDatum , _maxChangeOutputTokenQuantity , _nonSpendableInputs , _selectionStrategy @@ -33,6 +35,7 @@ import Ctl.Internal.Plutus.Types.Address ) as Plutus import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as Plutus import Ctl.Internal.Serialization.Address (Address, NetworkId) +import Ctl.Internal.Types.OutputDatum (OutputDatum) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (singleton) as Array import Data.BigInt (BigInt) @@ -54,6 +57,7 @@ newtype BalanceTxConstraints = BalanceTxConstraints , nonSpendableInputs :: Set TransactionInput , srcAddresses :: Maybe (Array Address) , changeAddress :: Maybe Address + , changeDatum :: Maybe OutputDatum , selectionStrategy :: SelectionStrategy } @@ -75,6 +79,9 @@ _srcAddresses = _Newtype <<< prop (Proxy :: Proxy "srcAddresses") _changeAddress :: Lens' BalanceTxConstraints (Maybe Address) _changeAddress = _Newtype <<< prop (Proxy :: Proxy "changeAddress") +_changeDatum :: Lens' BalanceTxConstraints (Maybe OutputDatum) +_changeDatum = _Newtype <<< prop (Proxy :: Proxy "changeDatum") + _selectionStrategy :: Lens' BalanceTxConstraints SelectionStrategy _selectionStrategy = _Newtype <<< prop (Proxy :: Proxy "selectionStrategy") @@ -98,6 +105,7 @@ buildBalanceTxConstraints = applyFlipped defaultConstraints <<< unwrap , maxChangeOutputTokenQuantity: Nothing , nonSpendableInputs: mempty , srcAddresses: Nothing + , changeDatum: Nothing , changeAddress: Nothing , selectionStrategy: SelectionStrategyOptimal } @@ -113,6 +121,12 @@ mustSendChangeToAddress mustSendChangeToAddress = wrap <<< setJust _changeAddress <<< fromPlutusAddressWithNetworkTag +-- | Tells the balancer to include the datum in each change UTxO. Useful when +-- | balancing a transactions for script owned UTxOs. +mustSendChangeWithDatum :: OutputDatum -> BalanceTxConstraintsBuilder +mustSendChangeWithDatum = + wrap <<< setJust _changeDatum + -- | Tells the balancer to use UTxO's at given addresses. -- | If this constraint is not set, then the default addresses owned by the -- | wallet are used. From 0fbc3e570524af58d049f0430114bdf9c81b52a9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 16 Jun 2023 18:33:59 +0300 Subject: [PATCH 217/478] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2a85fb88..e4959ee97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,7 +68,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) -- New `mustSendChangeWithDatum` balancer constraint +- New `mustSendChangeWithDatum` balancer constraint ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) ### Changed From 9082e49c2ddffbdff900c46b1576047d821be7e6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 16 Jun 2023 19:44:18 +0400 Subject: [PATCH 218/478] Export mustSendChangeWithDatum in the public interface --- CHANGELOG.md | 2 +- src/Contract/BalanceTxConstraints.purs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4959ee97..26a29aa52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,7 +68,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Cluster configuration options to `PlutipConfig`: `epochSize`, `maxTxSize` and `raiseExUnitsToMax` - see [Plutip docs](./doc/plutip-testing.md) ([#1494](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1494)) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) -- New `mustSendChangeWithDatum` balancer constraint ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) +- New `mustSendChangeWithDatum` balancer constraint that adds datum to all change outputs ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) ### Changed diff --git a/src/Contract/BalanceTxConstraints.purs b/src/Contract/BalanceTxConstraints.purs index ca6afa007..1427d6ddc 100644 --- a/src/Contract/BalanceTxConstraints.purs +++ b/src/Contract/BalanceTxConstraints.purs @@ -8,6 +8,7 @@ import Ctl.Internal.BalanceTx.Constraints , mustNotSpendUtxoWithOutRef , mustNotSpendUtxosWithOutRefs , mustSendChangeToAddress + , mustSendChangeWithDatum , mustUseAdditionalUtxos , mustUseCoinSelectionStrategy , mustUseUtxosAtAddress From d2ef96f87e2d10c1c0e1f9fc1653869cba4e9d02 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 19 Jun 2023 20:35:32 +0400 Subject: [PATCH 219/478] Fix UTxO set filtering when selecting collateral (respect balancer constraints) --- src/Internal/BalanceTx/BalanceTx.purs | 15 ++++++++--- test/Plutip/Contract.purs | 36 ++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 0ecc80179..3564d007f 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -23,7 +23,10 @@ import Ctl.Internal.BalanceTx.Collateral ( addTxCollateral , addTxCollateralReturn ) -import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) +import Ctl.Internal.BalanceTx.Constraints + ( BalanceTxConstraintsBuilder + , _nonSpendableInputs + ) import Ctl.Internal.BalanceTx.Constraints ( _changeAddress , _changeDatum @@ -271,9 +274,15 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction setTransactionCollateral changeAddr transaction = do - collateral <- - liftEitherContract $ note CouldNotGetCollateral <$> + nonSpendableSet <- asksConstraints _nonSpendableInputs + collateral <- do + rawCollateral <- liftEitherContract $ note CouldNotGetCollateral <$> Wallet.getWalletCollateral + -- filter out UTxOs that are set as non-spendable in the balancer constraints + let + isSpendable = not <<< flip Set.member nonSpendableSet <<< _.input <<< + unwrap + pure $ Array.filter isSpendable rawCollateral addTxCollateralReturn collateral (addTxCollateral collateral transaction) changeAddr diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 9f57592b7..605d8a9ae 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -16,6 +16,9 @@ import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos ) as BalanceTxConstraints +import Contract.BalanceTxConstraints + ( mustNotSpendUtxosWithOutRefs + ) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Log (logInfo') @@ -160,7 +163,7 @@ import Data.Either (Either(Left, Right), isLeft, isRight) import Data.Foldable (fold, foldM, length) import Data.Lens (view) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, isJust) +import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, isJust) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse, traverse_) import Data.Tuple (Tuple(Tuple)) @@ -211,6 +214,37 @@ suite = do ] withWallets distribution \alice -> do withKeyWallet alice ManyAssets.contract + test + "#1509 - Collateral set to one of the inputs in mustNotSpendUtxosWithOutRefs " + do + let + someUtxos = + [ BigInt.fromInt 5_000_000 + , BigInt.fromInt 5_000_000 + ] + + withWallets someUtxos \alice -> do + withKeyWallet alice do + pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> withKeyWallet alice + ownStakePubKeyHashes + utxos <- fromMaybe Map.empty <$> getWalletUtxos + let + constraints :: Constraints.TxConstraints Void Void + constraints = mustPayToPubKeyStakeAddress pkh stakePkh + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + res <- + ( balanceTxWithConstraints ubTx + (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) + ) + res `shouldSatisfy` isLeft + test "#1480 - test that does nothing but fails" do let someUtxos = From 74bea8b7220eb544e90cd8a19c412f7adfd91c82 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 19 Jun 2023 20:43:08 +0400 Subject: [PATCH 220/478] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26a29aa52..29e2b6282 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] ### Added + - Added several `Ring`-like numeric instances for `Coin` ([#1485](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1485)) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) @@ -105,6 +106,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Output correct reward address in CIP-30 mock ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ([#1470](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1470)) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) +- A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) ### Removed From 145c4a583b7c1506f2c7b9e4cc81117911ad4c91 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Jun 2023 18:39:02 +0400 Subject: [PATCH 221/478] Add `mustUseCollateralUtxos` balancer constraint --- doc/balancing.md | 14 +++++---- src/Contract/BalanceTxConstraints.purs | 1 + src/Internal/BalanceTx/BalanceTx.purs | 41 +++++++++++++++++++------ src/Internal/BalanceTx/Constraints.purs | 23 ++++++++++---- src/Internal/Contract/MinFee.purs | 38 +++++++++-------------- 5 files changed, 71 insertions(+), 46 deletions(-) diff --git a/doc/balancing.md b/doc/balancing.md index fc5a919d4..f8d642f39 100644 --- a/doc/balancing.md +++ b/doc/balancing.md @@ -18,10 +18,12 @@ Transaction balancing in Cardano is the process of finding a set of inputs and o CTL allows tweaking the default balancer behavior by letting the user impose constraints on the UTxO set that is used in the process (`balanceTxWithConstraints`): -- providing additional UTxOs to use: `mustUseUtxosAtAddresses` / `mustUseUtxosAtAddress` / `mustUseAdditionalUtxos` -- overriding change address: `mustSendChangeToAddress` -- prevent certain UTxOs from being spent: `mustNotSpendUtxosWithOutRefs` / `mustNotSpendUtxoWithOutRef` -- distribute token outputs equally between change UTxOs: `mustGenChangeOutsWithMaxTokenQuantity` +- Using arbitrary address as user's own (for transaction balancing): `mustUseUtxosAtAddresses` / `mustUseUtxosAtAddress` +- Providing additional UTxOs to use: `mustUseAdditionalUtxos` +- Bypassing wallet's collateral selection and select collateral UTxOs from a given set: `mustUseCollateralUtxos` +- Overriding change address: `mustSendChangeToAddress` +- Preventing certain UTxOs from being spent: `mustNotSpendUtxosWithOutRefs` / `mustNotSpendUtxoWithOutRef` +- Distributing token outputs equally between change UTxOs: `mustGenChangeOutsWithMaxTokenQuantity` ## Concurrent spending @@ -31,11 +33,11 @@ Obviously, the number of available UTxOs must be greater than the number of tran ## Balancing a Tx for other wallet -Setting `mustUseUtxosAtAddress` and `mustSendChangeToAddress` at the same time allows to build a transaction without any connection to the current wallet. For example, it's possible to balance it on server-side and send to the user to sign, or balance a Tx on one user's side while leaving fees at the expense of some other user. +Setting `mustUseUtxosAtAddress`, `mustSendChangeToAddress` and `mustUseCollateralUtxos` at the same time allows to build a transaction without any connection to the current wallet. For example, it's possible to balance it on server-side and send to the user to sign, or balance a Tx on one user's side while leaving fees at the expense of some other user. ## Synchronization -Before balancing, CTL synchronizes the wallet with the query layer, i.e. waits until all UTxOs that the wallet returns are visible in the query layer. Thus the situation when the query layer refuses to validate a Tx (either during ex-units evaluation or on Tx submission) is only possible due to a rollback. Please see [our docs for query layer synchronization](./query-layers.md). +Before balancing, CTL tries to synchronize the wallet state with the query layer, i.e. waits until all UTxOs that the wallet returns are visible in the query layer. Thus the situation when the query layer refuses to validate a Tx (either during ex-units evaluation or on Tx submission) is only possible due to a rollback or a synchronization timeout. Please see [our docs for query layer synchronization](./query-layers.md). ## Balancing process limitations diff --git a/src/Contract/BalanceTxConstraints.purs b/src/Contract/BalanceTxConstraints.purs index 1427d6ddc..531e16c63 100644 --- a/src/Contract/BalanceTxConstraints.purs +++ b/src/Contract/BalanceTxConstraints.purs @@ -11,6 +11,7 @@ import Ctl.Internal.BalanceTx.Constraints , mustSendChangeWithDatum , mustUseAdditionalUtxos , mustUseCoinSelectionStrategy + , mustUseCollateralUtxos , mustUseUtxosAtAddress , mustUseUtxosAtAddresses ) as BalanceTxConstraints diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 3564d007f..9dd842453 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -6,6 +6,7 @@ module Ctl.Internal.BalanceTx import Prelude +import Contract.Address (getNetworkId) import Contract.Log (logTrace') import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) @@ -23,8 +24,10 @@ import Ctl.Internal.BalanceTx.Collateral ( addTxCollateral , addTxCollateralReturn ) +import Ctl.Internal.BalanceTx.Collateral.Select (selectCollateral) import Ctl.Internal.BalanceTx.Constraints ( BalanceTxConstraintsBuilder + , _collateralUtxos , _nonSpendableInputs ) import Ctl.Internal.BalanceTx.Constraints @@ -132,9 +135,12 @@ import Ctl.Internal.Contract.Wallet ) as Wallet import Ctl.Internal.Helpers (liftEither, (??)) import Ctl.Internal.Partition (equipartition, partition) -import Ctl.Internal.Plutus.Conversion (toPlutusValue) +import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap, toPlutusValue) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) +import Ctl.Internal.Types.ProtocolParameters + ( ProtocolParameters(ProtocolParameters) + ) import Ctl.Internal.Types.Scripts ( Language(PlutusV1) , PlutusScript(PlutusScript) @@ -164,13 +170,14 @@ import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet) import Data.Log.Tag (fromArray, tag) as TagSet import Data.Map (Map) -import Data.Map (empty, insert, lookup, toUnfoldable, union) as Map +import Data.Map (empty, filterKeys, insert, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set as Set import Data.Traversable (for, traverse) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) +import Data.UInt (toInt) as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -275,14 +282,28 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction setTransactionCollateral changeAddr transaction = do nonSpendableSet <- asksConstraints _nonSpendableInputs - collateral <- do - rawCollateral <- liftEitherContract $ note CouldNotGetCollateral <$> - Wallet.getWalletCollateral - -- filter out UTxOs that are set as non-spendable in the balancer constraints - let - isSpendable = not <<< flip Set.member nonSpendableSet <<< _.input <<< - unwrap - pure $ Array.filter isSpendable rawCollateral + mbCollateralUtxos <- asksConstraints _collateralUtxos + -- We must filter out UTxOs that are set as non-spendable in the balancer + -- constraints + let + isSpendable = not <<< flip Set.member nonSpendableSet + collateral <- case mbCollateralUtxos of + -- if no collateral utxos are specified, use the wallet + Nothing -> Array.filter (isSpendable <<< _.input <<< unwrap) <$> do + liftEitherContract $ note CouldNotGetCollateral <$> + Wallet.getWalletCollateral + -- otherwise, get all the utxos, filter out unspendable, and select + -- collateral using internal algo, that is also used in KeyWallet + Just utxoMap -> do + ProtocolParameters params <- liftContract getProtocolParameters + networkId <- liftContract getNetworkId + let + coinsPerUtxoUnit = params.coinsPerUtxoUnit + maxCollateralInputs = UInt.toInt $ params.maxCollateralInputs + utxoMap' = fromPlutusUtxoMap networkId $ Map.filterKeys isSpendable + utxoMap + liftEffect $ Array.fromFoldable <<< fold <$> + selectCollateral coinsPerUtxoUnit maxCollateralInputs utxoMap' addTxCollateralReturn collateral (addTxCollateral collateral transaction) changeAddr diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index f50e01ae4..946a50c78 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -9,9 +9,11 @@ module Ctl.Internal.BalanceTx.Constraints , mustSendChangeWithDatum , mustUseAdditionalUtxos , mustUseCoinSelectionStrategy + , mustUseCollateralUtxos , mustUseUtxosAtAddress , mustUseUtxosAtAddresses , _additionalUtxos + , _collateralUtxos , _changeAddress , _changeDatum , _maxChangeOutputTokenQuantity @@ -33,7 +35,7 @@ import Ctl.Internal.Plutus.Types.Address ( Address , AddressWithNetworkTag(AddressWithNetworkTag) ) as Plutus -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as Plutus +import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) import Ctl.Internal.Serialization.Address (Address, NetworkId) import Ctl.Internal.Types.OutputDatum (OutputDatum) import Ctl.Internal.Types.Transaction (TransactionInput) @@ -45,14 +47,15 @@ import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Lens.Setter (appendOver, set, setJust) import Data.Map (empty) as Map -import Data.Maybe (Maybe(Nothing)) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, over2, unwrap, wrap) import Data.Set (Set) import Data.Set (singleton) as Set import Type.Proxy (Proxy(Proxy)) newtype BalanceTxConstraints = BalanceTxConstraints - { additionalUtxos :: Plutus.UtxoMap + { additionalUtxos :: UtxoMap + , collateralUtxos :: Maybe UtxoMap , maxChangeOutputTokenQuantity :: Maybe BigInt , nonSpendableInputs :: Set TransactionInput , srcAddresses :: Maybe (Array Address) @@ -63,9 +66,12 @@ newtype BalanceTxConstraints = BalanceTxConstraints derive instance Newtype BalanceTxConstraints _ -_additionalUtxos :: Lens' BalanceTxConstraints Plutus.UtxoMap +_additionalUtxos :: Lens' BalanceTxConstraints UtxoMap _additionalUtxos = _Newtype <<< prop (Proxy :: Proxy "additionalUtxos") +_collateralUtxos :: Lens' BalanceTxConstraints (Maybe UtxoMap) +_collateralUtxos = _Newtype <<< prop (Proxy :: Proxy "collateralUtxos") + _maxChangeOutputTokenQuantity :: Lens' BalanceTxConstraints (Maybe BigInt) _maxChangeOutputTokenQuantity = _Newtype <<< prop (Proxy :: Proxy "maxChangeOutputTokenQuantity") @@ -102,6 +108,7 @@ buildBalanceTxConstraints = applyFlipped defaultConstraints <<< unwrap defaultConstraints :: BalanceTxConstraints defaultConstraints = wrap { additionalUtxos: Map.empty + , collateralUtxos: Nothing , maxChangeOutputTokenQuantity: Nothing , nonSpendableInputs: mempty , srcAddresses: Nothing @@ -170,10 +177,14 @@ mustNotSpendUtxoWithOutRef = mustNotSpendUtxosWithOutRefs <<< Set.singleton -- | execution units (sets `additionalUtxoSet` of Ogmios `EvaluateTx`). -- | Note that you need to use `unspentOutputs` lookup to make these UTxO's -- | spendable by the transaction (see `Examples.TxChaining` for reference). -mustUseAdditionalUtxos :: Plutus.UtxoMap -> BalanceTxConstraintsBuilder +mustUseAdditionalUtxos :: UtxoMap -> BalanceTxConstraintsBuilder mustUseAdditionalUtxos = wrap <<< set _additionalUtxos +-- | Tells the balancer to select from the provided UTxO set when choosing +-- | collateral UTxOs. Disables wallet's collateral selection. +mustUseCollateralUtxos :: UtxoMap -> BalanceTxConstraintsBuilder +mustUseCollateralUtxos = wrap <<< set _collateralUtxos <<< Just + -- | Tells the balancer to use the given strategy for coin selection. mustUseCoinSelectionStrategy :: SelectionStrategy -> BalanceTxConstraintsBuilder mustUseCoinSelectionStrategy = wrap <<< set _selectionStrategy - diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index f71ece87a..6d2d85131 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -9,13 +9,10 @@ import Ctl.Internal.Cardano.Types.Transaction , _collateral , _inputs ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) import Ctl.Internal.Cardano.Types.Value (Coin) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) -import Ctl.Internal.Contract.Wallet (getWalletAddresses, getWalletCollateral) +import Ctl.Internal.Contract.Wallet (getWalletAddresses) import Ctl.Internal.Helpers (liftM, liftedM) import Ctl.Internal.Serialization.Address ( Address @@ -29,14 +26,13 @@ import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (fromFoldable, mapMaybe) import Data.Array as Array import Data.Either (hush) +import Data.Lens (non) import Data.Lens.Getter ((^.)) -import Data.Map (empty, fromFoldable, keys, lookup, values) as Map -import Data.Maybe (fromMaybe, maybe) +import Data.Map (keys, values) as Map import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set (difference, fromFoldable, intersection, mapMaybe, union) as Set import Data.Traversable (for) -import Data.Tuple.Nested ((/\)) import Effect.Aff (error) import Effect.Aff.Class (liftAff) @@ -47,6 +43,8 @@ calculateMinFee tx additionalUtxos = do pparams <- getProtocolParameters calculateMinFeeCsl pparams selfSigners tx +-- | This function estimates the set of keys that must be used +-- | for signing to make the transaction valid for the network. getSelfSigners :: Transaction -> UtxoMap -> Contract (Set Ed25519KeyHash) getSelfSigners tx additionalUtxos = do queryHandle <- getQueryHandle @@ -68,27 +66,23 @@ getSelfSigners tx additionalUtxos = do (map <<< map) (_.address <<< unwrap) (liftAff $ queryHandle.getUtxoByOref txInput <#> hush >>> join) - -- Get all tx output addressses let - txCollats :: Set TransactionInput - txCollats = Set.fromFoldable <<< fromMaybe [] $ tx ^. _body <<< _collateral - - walletCollats <- maybe Map.empty toUtxoMap <$> getWalletCollateral + collateralInputs = tx ^. _body <<< _collateral <<< non [] - (inCollatAddrs :: Set Address) <- setFor txCollats - ( \txCollat -> - liftM (error $ "Couldn't get tx output for " <> show txCollat) - $ (map (_.address <<< unwrap) <<< Map.lookup txCollat) - $ walletCollats - ) + (collateralAddresses :: Set Address) <- + setFor (Set.fromFoldable collateralInputs) $ \txInput -> + liftedM (error $ "Couldn't get tx output for " <> show txInput) $ + (map <<< map) (_.address <<< unwrap) + (liftAff $ queryHandle.getUtxoByOref txInput <#> hush >>> join) -- Get own addressses (ownAddrs :: Set Address) <- Set.fromFoldable <$> getWalletAddresses -- Combine to get all self tx input addresses let - txOwnAddrs = ownAddrs `Set.intersection` - (additionalUtxosAddrs `Set.union` inUtxosAddrs `Set.union` inCollatAddrs) + txOwnAddrs = + (additionalUtxosAddrs `Set.union` ownAddrs) `Set.intersection` + (inUtxosAddrs `Set.union` collateralAddresses) -- Extract payment pub key hashes from addresses. paymentPkhs <- map (Set.mapMaybe identity) $ setFor txOwnAddrs $ \addr -> do @@ -116,7 +110,3 @@ getSelfSigners tx additionalUtxos = do -> (a -> m b) -> m (Set b) setFor txIns f = Set.fromFoldable <$> for (fromFoldable txIns) f - - toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap - toUtxoMap = Map.fromFoldable <<< map - (unwrap >>> \({ input, output }) -> input /\ output) From 0bcbea464f49b875fdf591a55dfbd36ce29bf641 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Jun 2023 20:14:04 +0400 Subject: [PATCH 222/478] Update CHANGELOG, add a test for mustUseCollateralUtxos --- CHANGELOG.md | 1 + examples/BalanceTxConstraints.purs | 36 +++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..f680ad6f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) - New `mustSendChangeWithDatum` balancer constraint that adds datum to all change outputs ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) +- Allow providing a custom set of UTxOs for collateral selection, overriding the wallet (`mustUseCollateralUtxos` balancer constraint) ([#1513](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1513)) ### Changed diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index e8532c83b..3aae0e54e 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -5,14 +5,13 @@ module Ctl.Examples.BalanceTxConstraints import Contract.Prelude -import Contract.Address - ( Address - ) +import Contract.Address (Address) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustGenChangeOutsWithMaxTokenQuantity , mustNotSpendUtxoWithOutRef , mustSendChangeToAddress + , mustUseCollateralUtxos , mustUseUtxosAtAddress ) as BalanceTxConstraints import Contract.Log (logInfo') @@ -42,6 +41,7 @@ import Contract.Value (singleton, valueOf) as Value import Contract.Wallet ( KeyWallet , getWalletAddressesWithNetworkTag + , getWalletCollateral , ownPaymentPubKeyHashes , withKeyWallet ) @@ -51,7 +51,7 @@ import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Data.Array (head) import Data.Array (sort) as Array import Data.BigInt (BigInt, fromInt) -import Data.Map (keys, member) as Map +import Data.Map (fromFoldable, keys, member) as Map import Data.Set (findMin) as Set newtype ContractParams = ContractParams @@ -62,6 +62,7 @@ newtype ContractParams = ContractParams type ContractResult = { txHash :: TransactionHash , changeAddress :: Address + , nonSpendableAddress :: Address , mintedToken :: CurrencySymbol /\ TokenName , nonSpendableOref :: TransactionInput } @@ -99,8 +100,8 @@ assertSelectedUtxoIsNotSpent :: ContractCheck ContractResult assertSelectedUtxoIsNotSpent = assertionToCheck "Non-spendable UTxO hasn't been spent" - \{ changeAddress, nonSpendableOref } -> do - utxos <- lift $ utxosAt changeAddress + \{ nonSpendableAddress, nonSpendableOref } -> do + utxos <- lift $ utxosAt nonSpendableAddress let assertionFailure :: ContractAssertionFailure assertionFailure = @@ -119,6 +120,11 @@ contract :: ContractParams -> Contract Unit contract (ContractParams p) = do logInfo' "Examples.BalanceTxConstraints" + aliceAddress <- + liftedM "Failed to get Alice's address" + $ head + <$> (withKeyWallet p.aliceKeyWallet getWalletAddressesWithNetworkTag) + alicePubKeyHash <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes @@ -132,9 +138,16 @@ contract (ContractParams p) = do $ head <$> (withKeyWallet p.bobKeyWallet getWalletAddressesWithNetworkTag) + bobsCollateralArray <- withKeyWallet p.bobKeyWallet do + fold <$> getWalletCollateral + let + bobsCollateral = + Map.fromFoldable $ bobsCollateralArray <#> unwrap >>> + \{ input, output } -> Tuple input output + nonSpendableOref <- liftedM "Failed to get utxos at Bob's address" - (Set.findMin <<< Map.keys <$> utxosAt bobAddress) + (Set.findMin <<< Map.keys <$> utxosAt aliceAddress) mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy tn <- Helpers.mkTokenName "The Token" @@ -153,6 +166,7 @@ contract (ContractParams p) = do <> BalanceTxConstraints.mustUseUtxosAtAddress bobAddress <> BalanceTxConstraints.mustSendChangeToAddress bobAddress <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref + <> BalanceTxConstraints.mustUseCollateralUtxos bobsCollateral void $ runChecks checks $ lift do unbalancedTx <- @@ -172,4 +186,10 @@ contract (ContractParams p) = do logInfo' "Tx submitted successfully!" let changeAddress = (unwrap bobAddress).address - pure { txHash, changeAddress, mintedToken: cs /\ tn, nonSpendableOref } + pure + { txHash + , changeAddress + , nonSpendableAddress: (unwrap aliceAddress).address + , mintedToken: cs /\ tn + , nonSpendableOref + } From 488a1acc4640a36d112d6f857d0d68cd9f297452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristi=C3=A1n=20Balaj?= Date: Wed, 21 Jun 2023 11:35:34 +0200 Subject: [PATCH 223/478] chore: update deps --- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 7f200e9b2..c29c1de8f 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; + rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8b1d70f55..e2b2f8c64 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -353,7 +353,7 @@ let additions = , "web-html" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930" + , version = "167bc59308d00be43c01706e03f8c0e7993b6d69" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 39a0976a4..b04ba2623 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,10 +211,10 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; + version = "167bc59308d00be43c01706e03f8c0e7993b6d69"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930"; + rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; sha256 = "0w2h1a18yf37r4lh7wjb0fnnmbxibqa07vsv3axbg84ljanh8ph2"; }; phases = "installPhase"; From cc5a3cb134aa80dd5b156e3f219e7289bb35df56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristi=C3=A1n=20Balaj?= Date: Wed, 21 Jun 2023 19:54:20 +0200 Subject: [PATCH 224/478] chore: update flake lock --- templates/ctl-scaffold/flake.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index c451171db..f56ef71a9 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -993,17 +993,17 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1678285155, - "narHash": "sha256-GcaiQRZhPYysINnAFPN+IyQu9S/CZA8eb5sTGZ4qfxw=", + "lastModified": 1684305087, + "narHash": "sha256-8MvK2AxG3bGWkxWutsCWRk9MYxf/FdQu/DkAvemjqHM=", "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "49269a9adb27b370209a61de2f5407945112860a", + "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", "type": "github" }, "original": { "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "49269a9adb27b370209a61de2f5407945112860a", + "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", "type": "github" } }, @@ -2757,17 +2757,17 @@ ] }, "locked": { - "lastModified": 1683386673, - "narHash": "sha256-Al4ErZKUoLe6GlvvAxResa9qrQNL8gMpyWc4j4IKUHA=", + "lastModified": 1687338750, + "narHash": "sha256-TF1m9/Sepv4VGJe1Wp4FglXTCsyGUblrJZYebZFBfDQ=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930", + "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "8d80a2a48c1c233f91fcfd1a8b17d46ad1314930", + "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", "type": "github" } }, From 565af6f8536ad5e02db41848b2ca9fc9d9801fb1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 22 Jun 2023 14:12:47 +0400 Subject: [PATCH 225/478] Use additional utxos for lookups during MinFee evaluation to allow using UTxOs from mempool --- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 12 ++++++++--- src/Internal/Contract/MinFee.purs | 21 +++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index ade5c9ac3..fb732c457 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -8,7 +8,10 @@ import Prelude import Contract.Numeric.Natural (fromInt') as Natural import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) -import Ctl.Internal.BalanceTx.Constraints (_additionalUtxos) as Constraints +import Ctl.Internal.BalanceTx.Constraints + ( _additionalUtxos + , _collateralUtxos + ) as Constraints import Ctl.Internal.BalanceTx.Error ( BalanceTxError(UtxoLookupFailedFor, ExUnitsEvaluationFailed) ) @@ -65,7 +68,7 @@ import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap) import Data.Lens.Getter ((^.)) import Data.Lens.Setter ((?~)) -import Data.Map (empty, fromFoldable, lookup, toUnfoldable) as Map +import Data.Map (empty, fromFoldable, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) @@ -133,8 +136,11 @@ evalExUnitsAndMinFee unattachedTx allUtxos = do additionalUtxos <- fromPlutusUtxoMap networkId <$> asksConstraints Constraints._additionalUtxos + collateralUtxos <- + fromPlutusUtxoMap networkId <<< fromMaybe Map.empty + <$> asksConstraints Constraints._collateralUtxos minFee <- liftContract $ Contract.MinFee.calculateMinFee finalizedTx - additionalUtxos + (Map.union additionalUtxos collateralUtxos) pure $ txWithExUnits /\ unwrap minFee -- | Attaches datums and redeemers, sets the script integrity hash, diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 6d2d85131..7e0f9da5c 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -28,7 +28,8 @@ import Data.Array as Array import Data.Either (hush) import Data.Lens (non) import Data.Lens.Getter ((^.)) -import Data.Map (keys, values) as Map +import Data.Map (keys, lookup, values) as Map +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set (difference, fromFoldable, intersection, mapMaybe, union) as Set @@ -62,18 +63,24 @@ getSelfSigners tx additionalUtxos = do (_.address <<< unwrap) <$> Map.values additionalUtxos (inUtxosAddrs :: Set Address) <- setFor txInputs $ \txInput -> - liftedM (error $ "Couldn't get tx output for " <> show txInput) $ - (map <<< map) (_.address <<< unwrap) - (liftAff $ queryHandle.getUtxoByOref txInput <#> hush >>> join) + liftedM (error $ "Couldn't get tx output for " <> show txInput) + $ (map <<< map) (_.address <<< unwrap) + $ case Map.lookup txInput additionalUtxos of + Nothing -> + liftAff (queryHandle.getUtxoByOref txInput <#> hush >>> join) + Just utxo -> pure $ Just utxo let collateralInputs = tx ^. _body <<< _collateral <<< non [] (collateralAddresses :: Set Address) <- setFor (Set.fromFoldable collateralInputs) $ \txInput -> - liftedM (error $ "Couldn't get tx output for " <> show txInput) $ - (map <<< map) (_.address <<< unwrap) - (liftAff $ queryHandle.getUtxoByOref txInput <#> hush >>> join) + liftedM (error $ "Couldn't get tx output for " <> show txInput) + $ (map <<< map) (_.address <<< unwrap) + $ case Map.lookup txInput additionalUtxos of + Nothing -> + liftAff (queryHandle.getUtxoByOref txInput <#> hush >>> join) + Just utxo -> pure $ Just utxo -- Get own addressses (ownAddrs :: Set Address) <- Set.fromFoldable <$> getWalletAddresses From cbe38e46201c26eac29b94eb1562cb29c416f385 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Sun, 25 Jun 2023 22:17:28 +0200 Subject: [PATCH 226/478] Implements `extraSources` and `data` Nix features --- nix/default.nix | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 6330ad85a..e922464bc 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -18,6 +18,12 @@ , nodejs ? pkgs.nodejs-18_x # Autogenerated Nix from `spago2nix generate` , spagoPackages ? "${src}/spago-packages.nix" + # Extra Purescript sources to build and provide in the `devShell` as `extraSourcesDir` +, extraSources ? [ ] +, extraSourcesDir ? ".extras" + # Data directory to add to the build and provide in the `devShell` as `dataDir` +, data ? [ ] +, dataDir ? "data" # Configuration that will be used to generate a `devShell` for the project , shell ? { } , ... @@ -112,7 +118,6 @@ let pkgs.easy-ps.spago2nix pkgs.nodePackages.node2nix pkgs.unzip - # Required to fix initdb locale issue in shell # https://github.com/Plutonomicon/cardano-transaction-lib/issues/828 # Well, not really, as we set initdb locale to C for all cases now @@ -138,10 +143,28 @@ let export NODE_PATH="${nodeModules}/lib/node_modules" export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString packageLockOnly "export NPM_CONFIG_PACKAGE_LOCK_ONLY=true"} + ${linkExtraSources} + ${linkData} '' + shellHook; }; + # Extra sources + extra-sources = pkgs.linkFarm "extra-sources" (builtins.map (drv: { name = drv.name; path = "${drv}/src"; }) extraSources); + hasExtraSources = builtins.length extraSources > 0; + linkExtraSources = pkgs.lib.optionalString hasExtraSources '' + if [ -e ./${extraSourcesDir} ]; then rm ./${extraSourcesDir}; fi + ln -s ${extra-sources} ./${extraSourcesDir} + ''; + + # Data + data-drv = pkgs.linkFarm "data" data; + hasData = builtins.length data > 0; + linkData = pkgs.lib.optionalString hasData '' + if [ -e ./${dataDir} ]; then rm ./${dataDir}; fi + ln -s ${data-drv} ./${dataDir} + ''; + # Compiles your Purescript project and copies the `output` directory into the # Nix store. Also copies the local sources to be made available later as `purs` # does not include any external files to its `output` (if we attempted to refer @@ -155,14 +178,6 @@ let , nodeModules ? projectNodeModules , ... }: - let - # This is what spago2nix does - spagoGlob = pkg: - ''".spago/${pkg.name}/${pkg.version}/src/**/*.purs"''; - spagoGlobs = builtins.toString ( - builtins.map spagoGlob (builtins.attrValues spagoPkgs.inputs) - ); - in pkgs.stdenv.mkDerivation { inherit name src; buildInputs = [ @@ -179,11 +194,15 @@ let export NODE_PATH="${nodeModules}/lib/node_modules" export PATH="${nodeModules}/bin:$PATH" cp -r $src . + ${linkExtraSources} + ${linkData} install-spago-style ''; buildPhase = '' + set -vox psa ${pkgs.lib.optionalString strictComp "--strict" } \ - --censor-lib --is-lib=.spago ${spagoGlobs} \ + --censor-lib \ + --is-lib=.spago ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} \ --censor-codes=${builtins.concatStringsSep "," censorCodes} "./**/*.purs" \ -gsourcemaps,js ''; @@ -195,6 +214,8 @@ let mkdir $out mv output $out/ cp -r $src/* $out/ + ${pkgs.lib.optionalString hasExtraSources ''cp -r ./${extraSourcesDir} $out/''} + ${pkgs.lib.optionalString hasData ''cp -r ./${dataDir} $out/''} ''; }; From 09a43eb798ec3d5ebeba0df5fdf85ba9a7ee0073 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Sun, 25 Jun 2023 22:23:48 +0200 Subject: [PATCH 227/478] Removes Bash debugging --- nix/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index e922464bc..5e6f06ec2 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -199,7 +199,6 @@ let install-spago-style ''; buildPhase = '' - set -vox psa ${pkgs.lib.optionalString strictComp "--strict" } \ --censor-lib \ --is-lib=.spago ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} \ From 828807176051145b3d9715e9acb5ba8bd419d4ea Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Sun, 25 Jun 2023 23:02:16 +0200 Subject: [PATCH 228/478] Adds extraSources to documentation printing --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 5e6f06ec2..5492d4dd7 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -485,7 +485,7 @@ let (oas: { inherit name; buildPhase = '' - purs docs --format ${format} "./**/*.purs" ".spago/*/*/src/**/*.purs" + purs docs --format ${format} "./**/*.purs" ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} ''; installPhase = '' mkdir $out From db88ea60d07d1580035cbf3854df59e752d4e164 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Sun, 25 Jun 2023 23:20:11 +0200 Subject: [PATCH 229/478] Fixes `purs docs` invocation --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 5492d4dd7..0ac9317d7 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -485,7 +485,7 @@ let (oas: { inherit name; buildPhase = '' - purs docs --format ${format} "./**/*.purs" ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} + purs docs --format ${format} "./**/*.purs" ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''"${extraSourcesDir}/*/**/*.purs"''} ''; installPhase = '' mkdir $out From 19d1d869cbc6427ae8c3612e421a07f3a5342a82 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Sun, 25 Jun 2023 23:44:16 +0200 Subject: [PATCH 230/478] Docs generation checks if `src` exists --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 0ac9317d7..8520c450c 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -491,7 +491,7 @@ let mkdir $out cp -r generated-docs $out cp -r output $out - cp -r $src/src $out + if [ -e $src/src ]; then cp -r $src/src $out; fi ''; }); From 41a574c3fef82e5107cfef5505eca52d811b4dd7 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 26 Jun 2023 11:47:48 +0200 Subject: [PATCH 231/478] Does 'src' exist? --- nix/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 8520c450c..ca44a6f62 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -510,7 +510,8 @@ let '' export NODE_PATH="${pursDocsSearchNpm.nodeDependencies}/lib/node_modules" export PATH="${pursDocsSearchNpm.nodeDependencies}/bin:$PATH" - cp -r ${buildPursDocs { }}/{generated-docs,output,src} . + if [ -e ${buildPursDocs { }}/src ]; then cp -r ${buildPursDocs { }}/src .; fi + cp -r ${buildPursDocs { }}/{generated-docs,output} . install-spago-style chmod -R +rwx . purescript-docs-search build-index --package-name ${packageName} --source-files 'src/**/*.purs' From b2ab8dd80abca109ef6a34a9c85253fcc8477dfd Mon Sep 17 00:00:00 2001 From: zmrocze Date: Tue, 27 Jun 2023 15:00:02 +0200 Subject: [PATCH 232/478] Mention plutus-scaffold in the docs --- doc/getting-started.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/getting-started.md b/doc/getting-started.md index de79e4384..f758fa847 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -38,6 +38,8 @@ Then, add `https://public-plutonomicon.cachix.org` and `public-plutonomicon.cach The easiest way to create a new CTL project is to use our `ctl-scaffold` flake template. This lives in the CTL repo -- you can have a look [here](../templates/ctl-scaffold). It contains a simple, yet complete, flakes-based scaffolding project with example `outputs` for a CTL project, including its runtime. +Alternatively, consider [the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold) flake template. It's a scaffold built on top of the above mentioned `ctl-scaffold`, but includes a react based frontend and a haskell onchain additionaly. It's more of a demo application, than a minimal working example. + A new project can be initialized as follows: ``` From c40c7863639dbe99ce81f0de06752d2e53407ff7 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 29 Jun 2023 13:52:34 +0200 Subject: [PATCH 233/478] build: update `purs`, update `spago`, upgrade package-set --- flake.nix | 8 ++++---- nix/default.nix | 2 +- packages.dhall | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index 0617a244e..2fdb67d7e 100644 --- a/flake.nix +++ b/flake.nix @@ -240,25 +240,25 @@ spago = final: prev: { easy-ps = prev.easy-ps // { spago = prev.easy-ps.spago.overrideAttrs (_: rec { - version = "0.20.7"; + version = "0.21.0"; src = if final.stdenv.isDarwin then final.fetchurl { url = "https://github.com/purescript/spago/releases/download/${version}/macOS.tar.gz"; - sha256 = "0s5zgz4kqglsavyh7h70zmn16vayg30alp42w3nx0zwaqkp79xla"; + sha256 = "19c0kdg7gk1c7v00lnkcsxidffab84d50d6l6vgrjy4i86ilhzd5"; } else final.fetchurl { url = "https://github.com/purescript/spago/releases/download/${version}/Linux.tar.gz"; - sha256 = "0bh15dr1fg306kifqipnakv3rxab7hjfpcfzabw7vmg0gsfx8xka"; + sha256 = "1klczy04vwn5b39cnxflcqzap0d5kysp4dsw73i95xm5m7s37049"; }; }); }; }; runtime = - ( + final: prev: let inherit (prev) system; diff --git a/nix/default.nix b/nix/default.nix index 6330ad85a..ac278b444 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -25,7 +25,7 @@ let inherit (pkgs) system; - purs = pkgs.easy-ps.purs-0_14_9; + purs = pkgs.easy-ps.purs-0_15_4; spagoPkgs = import spagoPackages { inherit pkgs; }; diff --git a/packages.dhall b/packages.dhall index ab77a7438..e9dbf7665 100644 --- a/packages.dhall +++ b/packages.dhall @@ -105,8 +105,8 @@ in upstream ------------------------------- -} let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.14.5-20220224/packages.dhall - sha256:67cc3d4f0e8fb72bb1413ba94ddd72a3ceb0783eb725e3b22ad7568b3b581163 + https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20230105/packages.dhall + sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda let additions = { aeson = From 5d0d3160804bc099b81d9a068ebb42cb42b3a4c9 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 29 Jun 2023 16:05:42 +0200 Subject: [PATCH 234/478] build: update `medea` and `sequences` deps, remove `math` --- packages.dhall | 9 ++++----- spago.dhall | 1 - src/Internal/Types/Interval.purs | 2 +- test/Utils.purs | 3 --- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/packages.dhall b/packages.dhall index e9dbf7665..adbf6f358 100644 --- a/packages.dhall +++ b/packages.dhall @@ -183,8 +183,8 @@ let additions = , "unfoldable" , "unsafe-coerce" ] - , repo = "https://github.com/hdgarrood/purescript-sequences" - , version = "v3.0.2" + , repo = "https://github.com/garganscript/purescript-sequences" + , version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c" } , properties = { dependencies = [ "prelude", "console" ] @@ -243,8 +243,8 @@ let additions = , "unordered-collections" , "unsafe-coerce" ] - , repo = "https://github.com/juspay/medea-ps.git" - , version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a" + , repo = "https://github.com/errfrom/medea-ps.git" + , version = "00981e4ce7249808413a6db8d88d849bbe85245a" } , purescript-toppokki = { dependencies = @@ -276,4 +276,3 @@ let additions = } in (upstream // additions) - with parsing.version = "v7.0.1" diff --git a/spago.dhall b/spago.dhall index 605931265..b7ca7cfcd 100644 --- a/spago.dhall +++ b/spago.dhall @@ -41,7 +41,6 @@ You can edit this file as you like. , "js-date" , "lattice" , "lists" - , "math" , "maybe" , "medea" , "media-types" diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 6f13edd7c..16a331cd0 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -132,11 +132,11 @@ import Data.List (List(Nil), (:)) import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.NonEmpty ((:|)) +import Data.Number (trunc, (%)) as Math import Data.Show.Generic (genericShow) import Data.Tuple (uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Foreign.Object (Object) -import Math (trunc, (%)) as Math import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) import Test.QuickCheck (class Arbitrary, arbitrary) diff --git a/test/Utils.purs b/test/Utils.purs index 01278d474..1425d95be 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -34,7 +34,6 @@ import Control.Monad.Error.Class ) import Control.Monad.Except.Trans (ExceptT, runExceptT) import Control.MonadPlus (class MonadPlus) -import Control.MonadZero (class MonadZero) import Control.Plus (class Plus) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.DateTime.Instant (unInstant) @@ -72,8 +71,6 @@ derive newtype instance monadThrowValidationM :: derive newtype instance monadErrorValidationM :: MonadError ValidationError ValidationM --- note: MonadZero is being deprecated -derive newtype instance monadZeroValidationM :: MonadZero ValidationM derive newtype instance monadPlusValidationM :: MonadPlus ValidationM instance altValidationM :: Alt ValidationM where alt (ValidationM first) (ValidationM second) = case runExceptT first of From dcc6a7cbef5f42931b2dd403a080d0906bf59c35 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 29 Jun 2023 16:26:40 +0200 Subject: [PATCH 235/478] build: update `bignumber` dependency, fix `flake.nix` --- flake.nix | 2 +- packages.dhall | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 2fdb67d7e..8b6b9d4e0 100644 --- a/flake.nix +++ b/flake.nix @@ -258,7 +258,7 @@ }; }; runtime = - + ( final: prev: let inherit (prev) system; diff --git a/packages.dhall b/packages.dhall index adbf6f358..489533a0f 100644 --- a/packages.dhall +++ b/packages.dhall @@ -160,8 +160,8 @@ let additions = , "prelude" , "tuples" ] - , repo = "https://github.com/mlabs-haskell/purescript-bignumber" - , version = "705923edd892a3397b90d28ce7db9a7181dcd599" + , repo = "https://github.com/errfrom/purescript-bignumber" + , version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a" } , sequences = { dependencies = From 87606c057fc1f132988a8b5bc51ed5f6bf2e17e6 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 29 Jun 2023 17:56:55 +0200 Subject: [PATCH 236/478] build: update `aeson` dependency --- packages.dhall | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.dhall b/packages.dhall index 489533a0f..c98d7f164 100644 --- a/packages.dhall +++ b/packages.dhall @@ -145,8 +145,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "bfd8f4dcd0522a076320f9dc710c24817438e02e" + , repo = "https://github.com/errfrom/purescript-aeson.git" + , version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b" } , bignumber = { dependencies = From 9da13c1368e3a1bf938668f48fc91db89654e6a3 Mon Sep 17 00:00:00 2001 From: danielfarrelly <98325361+danielfarrelly@users.noreply.github.com> Date: Fri, 30 Jun 2023 01:03:31 +0100 Subject: [PATCH 237/478] Fix disabled tests --- test/Wallet/Bip32.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 0247eb6f8..22e5e1ac1 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -17,11 +17,11 @@ import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Lens (_Left, preview) import Data.UInt as UInt import Effect.Aff (Aff) -import Mote (group, only, test) +import Mote (group, test) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit -suite = only do +suite = do group "BIP32/BIP39/CIP1852 wallets" do group "generates valid wallets for valid phrases" do for_ accs \(accountIndex /\ addressIndex /\ addressStr) -> do From dbd3fd7adb74895d5d2c847224fb4d99b4359787 Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Fri, 30 Jun 2023 01:09:32 +0100 Subject: [PATCH 238/478] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..58eab95be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ([#1470](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1470)) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) +- Fix disabled tests ([#1522](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1522)) ### Removed From 36c0ce2e70c8c4bae3aae83d03399922d65375d4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 13:05:32 +0200 Subject: [PATCH 239/478] build: update `noble-secp256k1` dependency --- packages.dhall | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.dhall b/packages.dhall index c98d7f164..8385f9800 100644 --- a/packages.dhall +++ b/packages.dhall @@ -270,8 +270,8 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "710c15c48c5afae5e0623664d982a587ff2bd177" + "https://github.com/errfrom/purescript-noble-secp256k1.git" + , version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623" } } From cc5dc895826e251a6ffc01900c305c0460a43f1f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 13:30:24 +0200 Subject: [PATCH 240/478] build: update `toppokki` dependency --- packages.dhall | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.dhall b/packages.dhall index 8385f9800..e937395da 100644 --- a/packages.dhall +++ b/packages.dhall @@ -256,8 +256,8 @@ let additions = , "node-buffer" , "node-fs-aff" ] - , repo = "https://github.com/firefrorefiddle/purescript-toppokki" - , version = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9" + , repo = "https://github.com/errfrom/purescript-toppokki" + , version = "b043e9342463df76972d05981ac4ec25316834bf" } , noble-secp256k1 = { dependencies = From 1f2f31e958f90fc94d834fc7a2fd5e719d3dd3d4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 14:21:57 +0200 Subject: [PATCH 241/478] build: use esm exports, fix aeson instances for `Plutus.AssocMap` --- examples/AlwaysMints.js | 2 +- examples/AlwaysSucceeds.js | 2 +- examples/ECDSA.js | 2 +- examples/ExUnits.js | 2 +- examples/IncludeDatum.js | 2 +- examples/KeyWallet/Internal/Cip30HtmlForm.js | 58 +- .../KeyWallet/Internal/Pkh2PkhHtmlForm.js | 58 +- examples/Lose7Ada.js | 2 +- examples/MintsMultipleTokens.js | 6 +- examples/MultipleRedeemers.js | 6 +- examples/OneShotMinting.js | 2 +- examples/OtherTypeTextEnvelope.js | 2 +- examples/PlutusV2/InlineDatum.js | 2 +- examples/PlutusV2/OneShotMinting.js | 2 +- examples/PlutusV2/Scripts/AlwaysMints.js | 2 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 2 +- examples/Schnorr.js | 2 +- src/Contract/Test/Utils.js | 8 +- src/Internal/ApplyArgs.js | 38 +- src/Internal/BalanceTx/UtxoMinAda.js | 25 +- src/Internal/Base64.js | 24 +- src/Internal/Cardano/Types/Transaction.purs | 36 +- src/Internal/Deserialization/BigInt.js | 4 +- src/Internal/Deserialization/FromBytes.js | 16 +- src/Internal/Deserialization/Keys.js | 72 ++- src/Internal/Deserialization/Language.js | 20 +- src/Internal/Deserialization/NativeScript.js | 65 ++- src/Internal/Deserialization/PlutusData.js | 70 ++- src/Internal/Deserialization/Transaction.js | 518 ++++++++++------- src/Internal/Deserialization/UnspentOutput.js | 54 +- src/Internal/Deserialization/WitnessSet.js | 68 ++- src/Internal/FfiHelpers.js | 64 +- src/Internal/Hashing.js | 47 +- src/Internal/JsWebSocket.js | 168 +++--- src/Internal/Metadata/ToMetadata.purs | 6 - src/Internal/Plutip/PortCheck.js | 48 +- src/Internal/Plutip/Spawn.js | 30 +- src/Internal/Plutip/Utils.js | 6 +- src/Internal/Plutus/Types/AssocMap.purs | 15 +- src/Internal/QueryM/UniqueId.js | 6 +- src/Internal/Serialization.js | 546 +++++++++++------- src/Internal/Serialization/Address.js | 169 +++--- src/Internal/Serialization/AuxiliaryData.js | 57 +- src/Internal/Serialization/BigInt.js | 16 +- src/Internal/Serialization/Hash.js | 66 ++- src/Internal/Serialization/Keys.js | 14 +- src/Internal/Serialization/MinFee.js | 24 +- src/Internal/Serialization/NativeScript.js | 49 +- src/Internal/Serialization/PlutusData.js | 74 ++- src/Internal/Serialization/PlutusScript.js | 12 +- src/Internal/Serialization/ToBytes.js | 4 +- src/Internal/Serialization/WitnessSet.js | 101 +++- src/Internal/Test/E2E/Feedback.js | 4 +- src/Internal/Test/E2E/Feedback/Browser.js | 24 +- src/Internal/Test/E2E/Route.js | 112 ++-- src/Internal/Test/E2E/Runner.js | 20 +- src/Internal/Test/E2E/Wallets.js | 10 +- src/Internal/Types/BigNum.js | 63 +- src/Internal/Types/ByteArray.js | 133 +++-- src/Internal/Types/Int.js | 9 +- src/Internal/Types/TokenName.js | 20 +- src/Internal/Wallet.js | 68 ++- src/Internal/Wallet/Bip32.js | 42 +- src/Internal/Wallet/Cip30.js | 82 ++- src/Internal/Wallet/Cip30/SignData.js | 122 ++-- src/Internal/Wallet/Cip30Mock.js | 90 +-- test/ApplyArgs.js | 2 +- test/Wallet/Cip30/SignData.js | 114 ++-- 68 files changed, 2091 insertions(+), 1518 deletions(-) diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js index 3ab8b58f3..49601ff1c 100644 --- a/examples/AlwaysMints.js +++ b/examples/AlwaysMints.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -exports.alwaysMints = script; +export {script as alwaysMints}; diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js index 4ba6671b7..edc58cb33 100644 --- a/examples/AlwaysSucceeds.js +++ b/examples/AlwaysSucceeds.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.alwaysSucceeds = script; +export {script as alwaysSucceeds}; diff --git a/examples/ECDSA.js b/examples/ECDSA.js index 5115d95ec..c3cb277e2 100644 --- a/examples/ECDSA.js +++ b/examples/ECDSA.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -exports.validateECDSA = script; +export {script as validateECDSA}; diff --git a/examples/ExUnits.js b/examples/ExUnits.js index b0d16cf90..157ecde3d 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.exUnits = script; +export {script as exUnits}; diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js index 5ce016be7..a66b971c0 100644 --- a/examples/IncludeDatum.js +++ b/examples/IncludeDatum.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.includeDatum = script; +export {script as includeDatum}; diff --git a/examples/KeyWallet/Internal/Cip30HtmlForm.js b/examples/KeyWallet/Internal/Cip30HtmlForm.js index ab840e979..e0a8f878f 100644 --- a/examples/KeyWallet/Internal/Cip30HtmlForm.js +++ b/examples/KeyWallet/Internal/Cip30HtmlForm.js @@ -38,35 +38,39 @@ code { `; -exports.logError = error => () => { - console.log(error); -}; +export function logError(error) { + return () => { + console.log(error); + }; +} -exports.mkForm = handler => () => { - window.document.body.insertAdjacentHTML("beforeend", form); - const formEl = window.document.querySelector("form"); - const fieldsEl = window.document.querySelector("fieldset"); - const resultEl = window.document.querySelector("code"); - formEl.addEventListener("submit", event => { - event.preventDefault(); - resultEl.replaceChildren(); +export function mkForm(handler) { + return () => { + window.document.body.insertAdjacentHTML("beforeend", form); + const formEl = window.document.querySelector("form"); + const fieldsEl = window.document.querySelector("fieldset"); + const resultEl = window.document.querySelector("code"); + formEl.addEventListener("submit", event => { + event.preventDefault(); + resultEl.replaceChildren(); - const data = new FormData(formEl); - const input = Object.fromEntries(data); - fieldsEl.setAttribute("disabled", "disabled"); + const data = new FormData(formEl); + const input = Object.fromEntries(data); + fieldsEl.setAttribute("disabled", "disabled"); - const log = color => text => () => { - const line = document.createElement("div"); - line.style.color = color; - line.textContent = text; - resultEl.append(line); - }; + const log = color => text => () => { + const line = document.createElement("div"); + line.style.color = color; + line.textContent = text; + resultEl.append(line); + }; - const unlock = () => { - fieldsEl.setAttribute("disabled", "disabled"); - fieldsEl.removeAttribute("disabled"); - }; + const unlock = () => { + fieldsEl.setAttribute("disabled", "disabled"); + fieldsEl.removeAttribute("disabled"); + }; - handler(input)(log)(unlock)(); - }); -}; + handler(input)(log)(unlock)(); + }); + }; +} diff --git a/examples/KeyWallet/Internal/Pkh2PkhHtmlForm.js b/examples/KeyWallet/Internal/Pkh2PkhHtmlForm.js index 62ecf2176..5fa0eff2c 100644 --- a/examples/KeyWallet/Internal/Pkh2PkhHtmlForm.js +++ b/examples/KeyWallet/Internal/Pkh2PkhHtmlForm.js @@ -40,35 +40,39 @@ code { `; -exports.logError = error => () => { - console.log(error); -}; +export function logError(error) { + return () => { + console.log(error); + }; +} -exports.mkForm = handler => () => { - window.document.body.insertAdjacentHTML("beforeend", form); - const formEl = window.document.querySelector("form"); - const fieldsEl = window.document.querySelector("fieldset"); - const resultEl = window.document.querySelector("code"); - formEl.addEventListener("submit", event => { - event.preventDefault(); - resultEl.replaceChildren(); +export function mkForm(handler) { + return () => { + window.document.body.insertAdjacentHTML("beforeend", form); + const formEl = window.document.querySelector("form"); + const fieldsEl = window.document.querySelector("fieldset"); + const resultEl = window.document.querySelector("code"); + formEl.addEventListener("submit", event => { + event.preventDefault(); + resultEl.replaceChildren(); - const data = new FormData(formEl); - const input = Object.fromEntries(data); - fieldsEl.setAttribute("disabled", "disabled"); + const data = new FormData(formEl); + const input = Object.fromEntries(data); + fieldsEl.setAttribute("disabled", "disabled"); - const log = color => text => () => { - const line = document.createElement("div"); - line.style.color = color; - line.textContent = text; - resultEl.append(line); - }; + const log = color => text => () => { + const line = document.createElement("div"); + line.style.color = color; + line.textContent = text; + resultEl.append(line); + }; - const unlock = () => { - fieldsEl.setAttribute("disabled", "disabled"); - fieldsEl.removeAttribute("disabled"); - }; + const unlock = () => { + fieldsEl.setAttribute("disabled", "disabled"); + fieldsEl.removeAttribute("disabled"); + }; - handler(input)(log)(unlock)(); - }); -}; + handler(input)(log)(unlock)(); + }); + }; +} diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js index f2e299ed7..160a30565 100644 --- a/examples/Lose7Ada.js +++ b/examples/Lose7Ada.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.alwaysFails = script; +export {script as alwaysFails}; diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js index 74ad17f73..3c31afcee 100644 --- a/examples/MintsMultipleTokens.js +++ b/examples/MintsMultipleTokens.js @@ -19,6 +19,6 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { redeemerInt3 = readScript("redeemer3"); } -exports.redeemerInt1 = redeemerInt1; -exports.redeemerInt2 = redeemerInt2; -exports.redeemerInt3 = redeemerInt3; +export {redeemerInt1}; +export {redeemerInt2}; +export {redeemerInt3}; diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js index 7d8855f2b..31479907d 100644 --- a/examples/MultipleRedeemers.js +++ b/examples/MultipleRedeemers.js @@ -19,6 +19,6 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { vredeemerInt3 = readScript("redeemer3-validator"); } -exports.vredeemerInt1 = vredeemerInt1; -exports.vredeemerInt2 = vredeemerInt2; -exports.vredeemerInt3 = vredeemerInt3; +export {vredeemerInt1}; +export {vredeemerInt2}; +export {vredeemerInt3}; diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js index 583fda109..7ae56d760 100644 --- a/examples/OneShotMinting.js +++ b/examples/OneShotMinting.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.oneShotMinting = script; +export {script as oneShotMinting}; diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index 2affb4b24..be56ab824 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -14,4 +14,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -exports.otherTypeTextEnvelope = script; +export {script as otherTypeTextEnvelope}; diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index 367b1170b..dbdad10b7 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -15,4 +15,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.checkDatumIsInline = script; +export {script as checkDatumIsInline}; diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index d3c979a85..9892c1ce0 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -15,4 +15,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.oneShotMinting = script; +export {script as oneShotMinting}; diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js index 170c59121..120ecadd1 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ b/examples/PlutusV2/Scripts/AlwaysMints.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -exports.alwaysMintsV2 = script; +export {script as alwaysMintsV2}; diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index a143119c9..b67c3d665 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.alwaysSucceedsV2 = script; +export {script as alwaysSucceedsV2}; diff --git a/examples/Schnorr.js b/examples/Schnorr.js index 76d1ed204..0de34e6a3 100644 --- a/examples/Schnorr.js +++ b/examples/Schnorr.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.validateSchnorr = script; +export {script as validateSchnorr}; diff --git a/src/Contract/Test/Utils.js b/src/Contract/Test/Utils.js index a9592efa5..aab2e892a 100644 --- a/src/Contract/Test/Utils.js +++ b/src/Contract/Test/Utils.js @@ -1,3 +1,5 @@ -exports.exitCode = code => () => { - process.exitCode = code; -}; +export function exitCode(code) { + return () => { + process.exitCode = code; + }; +} diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 1afe7de8d..b2b9a457c 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -19,23 +19,25 @@ apply_args = require("@mlabs-haskell/csl-gc-wrapper")(apply_args); * @param {PlutusScript} script * @returns {Either String PlutusScript} */ -exports.apply_params_to_script = left => right => args => script => { - let version = script.language_version(); - let appliedScript; - try { - let scriptBytes = script.bytes(); // raw bytes - let argsBytes = args.to_bytes(); // cbor - +export function apply_params_to_script(left) { + return right => args => script => { + let version = script.language_version(); + let appliedScript; try { - appliedScript = apply_args.apply_params_to_script_no_panic( - argsBytes, - scriptBytes - ); - } catch (e) { - return left("Error applying argument to script: ".concat(e.toString())); + let scriptBytes = script.bytes(); // raw bytes + let argsBytes = args.to_bytes(); // cbor + + try { + appliedScript = apply_args.apply_params_to_script_no_panic( + argsBytes, + scriptBytes + ); + } catch (e) { + return left("Error applying argument to script: ".concat(e.toString())); + } + } catch (e1) { + return left("Error serializing arguments: ".concat(e1.toString())); } - } catch (e1) { - return left("Error serializing arguments: ".concat(e1.toString())); - } - return right(lib.PlutusScript.new_with_version(appliedScript, version)); -}; + return right(lib.PlutusScript.new_with_version(appliedScript, version)); + }; +} diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index 626faddd4..e42976d2b 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -8,13 +8,20 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.minAdaForOutput = maybe => txOutput => dataCost => { - try { - return maybe.just(lib.min_ada_for_output(txOutput, dataCost)); - } catch (_) { - return maybe.nothing; - } -}; +export function minAdaForOutput(maybe) { + return txOutput => dataCost => { + try { + return maybe.just(lib.min_ada_for_output(txOutput, dataCost)); + } catch (_) { + return maybe.nothing; + } + }; +} + +export function newCoinsPerWord(n) { + return lib.DataCost.new_coins_per_word(n); +} -exports.newCoinsPerWord = n => lib.DataCost.new_coins_per_word(n); -exports.newCoinsPerByte = n => lib.DataCost.new_coins_per_byte(n); +export function newCoinsPerByte(n) { + return lib.DataCost.new_coins_per_byte(n); +} diff --git a/src/Internal/Base64.js b/src/Internal/Base64.js index 5bd33d96a..1db305d09 100644 --- a/src/Internal/Base64.js +++ b/src/Internal/Base64.js @@ -1,13 +1,13 @@ -const base64 = require("base64-js"); +import base64 from "base64-js"; +export var fromByteArray = base64.fromByteArray; +export var toByteArray = base64.toByteArray; -exports.fromByteArray = base64.fromByteArray; - -exports.toByteArray = base64.toByteArray; - -exports._decodeBase64 = maybe => str => { - try { - return maybe.just(base64.toByteArray(str)); - } catch (_) { - return maybe.nothing; - } -}; +export function _decodeBase64(maybe) { + return str => { + try { + return maybe.just(base64.toByteArray(str)); + } catch (_) { + return maybe.nothing; + } + }; +} diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index d118568db..629a943c7 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -158,11 +158,11 @@ import Data.Set (Set) import Data.Set (union) as Set import Data.Show.Generic (genericShow) import Data.String.Utils (startsWith) -import Data.Symbol (SProxy(SProxy)) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) import Partial.Unsafe (unsafePartial) +import Type.Proxy (Proxy(Proxy)) -------------------------------------------------------------------------------- -- `Transaction` @@ -693,56 +693,56 @@ instance EncodeAeson Certificate where -------------------------------------------------------------------------------- _inputs :: Lens' TxBody (Set TransactionInput) -_inputs = _Newtype <<< prop (SProxy :: SProxy "inputs") +_inputs = _Newtype <<< prop (Proxy :: Proxy "inputs") _outputs :: Lens' TxBody (Array TransactionOutput) -_outputs = _Newtype <<< prop (SProxy :: SProxy "outputs") +_outputs = _Newtype <<< prop (Proxy :: Proxy "outputs") _fee :: Lens' TxBody (Coin) -_fee = _Newtype <<< prop (SProxy :: SProxy "fee") +_fee = _Newtype <<< prop (Proxy :: Proxy "fee") _ttl :: Lens' TxBody (Maybe Slot) -_ttl = _Newtype <<< prop (SProxy :: SProxy "ttl") +_ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") _certs :: Lens' TxBody (Maybe (Array Certificate)) -_certs = _Newtype <<< prop (SProxy :: SProxy "certs") +_certs = _Newtype <<< prop (Proxy :: Proxy "certs") _withdrawals :: Lens' TxBody (Maybe (Map RewardAddress Coin)) -_withdrawals = _Newtype <<< prop (SProxy :: SProxy "withdrawals") +_withdrawals = _Newtype <<< prop (Proxy :: Proxy "withdrawals") _update :: Lens' TxBody (Maybe Update) -_update = _Newtype <<< prop (SProxy :: SProxy "update") +_update = _Newtype <<< prop (Proxy :: Proxy "update") _auxiliaryDataHash :: Lens' TxBody (Maybe AuxiliaryDataHash) -_auxiliaryDataHash = _Newtype <<< prop (SProxy :: SProxy "auxiliaryDataHash") +_auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") _validityStartInterval :: Lens' TxBody (Maybe Slot) _validityStartInterval = - _Newtype <<< prop (SProxy :: SProxy "validityStartInterval") + _Newtype <<< prop (Proxy :: Proxy "validityStartInterval") _mint :: Lens' TxBody (Maybe Mint) -_mint = _Newtype <<< prop (SProxy :: SProxy "mint") +_mint = _Newtype <<< prop (Proxy :: Proxy "mint") _scriptDataHash :: Lens' TxBody (Maybe ScriptDataHash) -_scriptDataHash = _Newtype <<< prop (SProxy :: SProxy "scriptDataHash") +_scriptDataHash = _Newtype <<< prop (Proxy :: Proxy "scriptDataHash") _collateral :: Lens' TxBody (Maybe (Array TransactionInput)) -_collateral = _Newtype <<< prop (SProxy :: SProxy "collateral") +_collateral = _Newtype <<< prop (Proxy :: Proxy "collateral") _requiredSigners :: Lens' TxBody (Maybe (Array RequiredSigner)) -_requiredSigners = _Newtype <<< prop (SProxy :: SProxy "requiredSigners") +_requiredSigners = _Newtype <<< prop (Proxy :: Proxy "requiredSigners") _networkId :: Lens' TxBody (Maybe NetworkId) -_networkId = _Newtype <<< prop (SProxy :: SProxy "networkId") +_networkId = _Newtype <<< prop (Proxy :: Proxy "networkId") _referenceInputs :: Lens' TxBody (Set TransactionInput) -_referenceInputs = _Newtype <<< prop (SProxy :: SProxy "referenceInputs") +_referenceInputs = _Newtype <<< prop (Proxy :: Proxy "referenceInputs") _collateralReturn :: Lens' TxBody (Maybe TransactionOutput) -_collateralReturn = _Newtype <<< prop (SProxy :: SProxy "collateralReturn") +_collateralReturn = _Newtype <<< prop (Proxy :: Proxy "collateralReturn") _totalCollateral :: Lens' TxBody (Maybe Coin) -_totalCollateral = _Newtype <<< prop (SProxy :: SProxy "totalCollateral") +_totalCollateral = _Newtype <<< prop (Proxy :: Proxy "totalCollateral") -------------------------------------------------------------------------------- -- `TransactionWitnessSet` diff --git a/src/Internal/Deserialization/BigInt.js b/src/Internal/Deserialization/BigInt.js index cd7997304..0fd6fef55 100644 --- a/src/Internal/Deserialization/BigInt.js +++ b/src/Internal/Deserialization/BigInt.js @@ -1 +1,3 @@ -exports._BigInt_to_str = x => x.to_str(); +export function _BigInt_to_str(x) { + return x.to_str(); +} diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index 802458ed3..4f8820334 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -8,10 +8,12 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._fromBytes = helper => name => bytes => { - try { - return helper.valid(lib[name].from_bytes(bytes)); - } catch (e) { - return helper.error(name + ".from_bytes() raised " + e); - } -}; +export function _fromBytes(helper) { + return name => bytes => { + try { + return helper.valid(lib[name].from_bytes(bytes)); + } catch (e) { + return helper.error(name + ".from_bytes() raised " + e); + } + }; +} diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index 51a83714d..0e76d24ad 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -8,40 +8,50 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.freshPrivateKey = () => { +export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); -}; +} -exports._publicKeyFromBech32 = maybe => bech32 => { - try { - return maybe.just(lib.PublicKey.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } -}; +export function _publicKeyFromBech32(maybe) { + return bech32 => { + try { + return maybe.just(lib.PublicKey.from_bech32(bech32)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports._ed25519SignatureFromBech32 = maybe => bech32 => { - try { - return maybe.just(lib.Ed25519Signature.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } -}; +export function _ed25519SignatureFromBech32(maybe) { + return bech32 => { + try { + return maybe.just(lib.Ed25519Signature.from_bech32(bech32)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports._privateKeyFromBytes = maybe => bytes => { - try { - return maybe.just(lib.PrivateKey.from_normal_bytes(bytes)); - } catch (_) { - return maybe.nothing; - } -}; +export function _privateKeyFromBytes(maybe) { + return bytes => { + try { + return maybe.just(lib.PrivateKey.from_normal_bytes(bytes)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports.privateKeyToBech32 = privateKey => privateKey.to_bech32(); +export function privateKeyToBech32(privateKey) { + return privateKey.to_bech32(); +} -exports._privateKeyFromBech32 = maybe => bech32 => { - try { - return maybe.just(lib.PrivateKey.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } -}; +export function _privateKeyFromBech32(maybe) { + return bech32 => { + try { + return maybe.just(lib.PrivateKey.from_bech32(bech32)); + } catch (_) { + return maybe.nothing; + } + }; +} diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index b2d596da3..3dfeb32ce 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -8,12 +8,14 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._convertLanguage = langCtors => cslLang => { - if (cslLang.kind() == lib.LanguageKind.PlutusV1) { - return langCtors.plutusV1; - } else if (cslLang.kind() == lib.LanguageKind.PlutusV2) { - return langCtors.plutusV2; - } else { - throw "_convertLanguage: Unsupported language kind: " + cslLang.kind(); - } -}; +export function _convertLanguage(langCtors) { + return cslLang => { + if (cslLang.kind() == lib.LanguageKind.PlutusV1) { + return langCtors.plutusV1; + } else if (cslLang.kind() == lib.LanguageKind.PlutusV2) { + return langCtors.plutusV2; + } else { + throw "_convertLanguage: Unsupported language kind: " + cslLang.kind(); + } + }; +} diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 567e64871..5c26a853e 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -8,34 +8,43 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._convertNativeScript = handler => ns => { - switch (ns.kind()) { - case lib.NativeScriptKind.ScriptPubkey: - return handler.scriptPubkey(ns.as_script_pubkey()); - case lib.NativeScriptKind.ScriptAll: - return handler.scriptAll(ns.as_script_all()); - case lib.NativeScriptKind.ScriptAny: - return handler.scriptAny(ns.as_script_any()); - case lib.NativeScriptKind.ScriptNOfK: - return handler.scriptNOfK(ns.as_script_n_of_k()); - case lib.NativeScriptKind.TimelockStart: - return handler.timelockStart(ns.as_timelock_start()); - case lib.NativeScriptKind.TimelockExpiry: - return handler.timelockExpiry(ns.as_timelock_expiry()); - default: - throw "Impossible native script kind: " + ns.kind(); - } -}; +export function _convertNativeScript(handler) { + return ns => { + switch (ns.kind()) { + case lib.NativeScriptKind.ScriptPubkey: + return handler.scriptPubkey(ns.as_script_pubkey()); + case lib.NativeScriptKind.ScriptAll: + return handler.scriptAll(ns.as_script_all()); + case lib.NativeScriptKind.ScriptAny: + return handler.scriptAny(ns.as_script_any()); + case lib.NativeScriptKind.ScriptNOfK: + return handler.scriptNOfK(ns.as_script_n_of_k()); + case lib.NativeScriptKind.TimelockStart: + return handler.timelockStart(ns.as_timelock_start()); + case lib.NativeScriptKind.TimelockExpiry: + return handler.timelockExpiry(ns.as_timelock_expiry()); + default: + throw "Impossible native script kind: " + ns.kind(); + } + }; +} const call = property => object => object[property](); -exports.scriptPubkey_addr_keyhash = call("addr_keyhash"); -exports.scriptAllScripts = helper => - helper.unpackFromProperty("native_scripts"); -exports.scriptAnyScripts = helper => - helper.unpackFromProperty("native_scripts"); -exports.scriptNOfKScripts = helper => - helper.unpackFromProperty("native_scripts"); -exports.scriptNOfK_n = call("n"); -exports.timelockStart_slot = call("slot_bignum"); -exports.timelockExpiry_slot = call("slot_bignum"); +export var scriptPubkey_addr_keyhash = call("addr_keyhash"); + +export function scriptAllScripts(helper) { + return helper.unpackFromProperty("native_scripts"); +} + +export function scriptAnyScripts(helper) { + return helper.unpackFromProperty("native_scripts"); +} + +export function scriptNOfKScripts(helper) { + return helper.unpackFromProperty("native_scripts"); +} + +export var scriptNOfK_n = call("n"); +export var timelockStart_slot = call("slot_bignum"); +export var timelockExpiry_slot = call("slot_bignum"); diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index 5542bdd10..eee107750 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -8,34 +8,46 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._convertPlutusData = handle => pd => { - switch (pd.kind()) { - case lib.PlutusDataKind.ConstrPlutusData: - return handle.constr(pd.as_constr_plutus_data()); - case lib.PlutusDataKind.Map: - return handle.map(pd.as_map()); - case lib.PlutusDataKind.List: - return handle.list(pd.as_list()); - case lib.PlutusDataKind.Integer: - return handle.integer(pd.as_integer()); - case lib.PlutusDataKind.Bytes: - return handle.bytes(pd.as_bytes()); - default: - throw "Impossible PlutusData kind: " + pd.kind(); - } -}; +export function _convertPlutusData(handle) { + return pd => { + switch (pd.kind()) { + case lib.PlutusDataKind.ConstrPlutusData: + return handle.constr(pd.as_constr_plutus_data()); + case lib.PlutusDataKind.Map: + return handle.map(pd.as_map()); + case lib.PlutusDataKind.List: + return handle.list(pd.as_list()); + case lib.PlutusDataKind.Integer: + return handle.integer(pd.as_integer()); + case lib.PlutusDataKind.Bytes: + return handle.bytes(pd.as_bytes()); + default: + throw "Impossible PlutusData kind: " + pd.kind(); + } + }; +} + +export function _unpackPlutusList(containerHelper) { + return containerHelper.unpack; +} -exports._unpackPlutusList = containerHelper => containerHelper.unpack; -exports._ConstrPlutusData_alternative = x => x.alternative(); -exports._ConstrPlutusData_data = x => x.data(); +export function _ConstrPlutusData_alternative(x) { + return x.alternative(); +} -exports._unpackPlutusMap = containerHelper => tuple => plutusMap => { - const keys = containerHelper.unpack(plutusMap.keys()); - const res = []; - for (let key of keys) { - // Assuming that `PlutusMap.get()` never fails on elements from result of - // its `.keys()` call. - res.push(tuple(key)(plutusMap.get(key))); - } - return res; -}; +export function _ConstrPlutusData_data(x) { + return x.data(); +} + +export function _unpackPlutusMap(containerHelper) { + return tuple => plutusMap => { + const keys = containerHelper.unpack(plutusMap.keys()); + const res = []; + for (let key of keys) { + // Assuming that `PlutusMap.get()` never fails on elements from result of + // its `.keys()` call. + res.push(tuple(key)(plutusMap.get(key))); + } + return res; + }; +} diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index e0f990c2e..2b626fa0b 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -14,13 +14,24 @@ const callMaybe = property => maybe => object => { return res != null ? maybe.just(res) : maybe.nothing; }; -exports._txIsValid = tx => tx.is_valid(); -exports._txWitnessSet = tx => tx.witness_set(); -exports._txBody = tx => tx.body(); -exports._txAuxiliaryData = maybe => tx => { - const ad = tx.auxiliary_data(); - return ad == null ? maybe.nothing : maybe.just(ad); -}; +export function _txIsValid(tx) { + return tx.is_valid(); +} + +export function _txWitnessSet(tx) { + return tx.witness_set(); +} + +export function _txBody(tx) { + return tx.body(); +} + +export function _txAuxiliaryData(maybe) { + return tx => { + const ad = tx.auxiliary_data(); + return ad == null ? maybe.nothing : maybe.just(ad); + }; +} const maybeGetter_ = fmap => propstr => maybe => obj => { if (typeof propstr != "string") { @@ -34,277 +45,346 @@ const maybeGetter = maybeGetter_(a => a); const maybeGetterMulti = propstr => containerHelper => maybeGetter_(o => containerHelper.unpack(o))(propstr); -exports._txAuxiliaryData = maybeGetter("auxiliary_data"); -exports._adGeneralMetadata = maybeGetter("metadata"); -exports._adNativeScripts = maybeGetter("native_scripts"); -exports._adPlutusScripts = maybeGetter("plutus_scripts"); +export var _txAuxiliaryData = maybeGetter("auxiliary_data"); +export var _adGeneralMetadata = maybeGetter("metadata"); +export var _adNativeScripts = maybeGetter("native_scripts"); +export var _adPlutusScripts = maybeGetter("plutus_scripts"); // inputs(): TransactionInputs; -exports._txBodyInputs = containerhelper => body => - containerhelper.unpack(body.inputs()); +export function _txBodyInputs(containerhelper) { + return body => + containerhelper.unpack(body.inputs()); +} + // outputs(): TransactionOutputs; -exports._txBodyOutputs = containerhelper => body => - containerhelper.unpack(body.outputs()); +export function _txBodyOutputs(containerhelper) { + return body => + containerhelper.unpack(body.outputs()); +} + // fee(): BigNum; -exports._txBodyFee = body => body.fee(); +export function _txBodyFee(body) { + return body.fee(); +} + // ttl(): number | void; -exports._txBodyTtl = maybeGetter("ttl_bignum"); +export var _txBodyTtl = maybeGetter("ttl_bignum"); + // certs(): Certificates | void; -exports._txBodyCerts = maybeGetterMulti("certs"); +export var _txBodyCerts = maybeGetterMulti("certs"); + // withdrawals(): Withdrawals | void; -exports._txBodyWithdrawals = maybeGetter("withdrawals"); +export var _txBodyWithdrawals = maybeGetter("withdrawals"); + // update(): Update | void; -exports._txBodyUpdate = maybeGetter("update"); +export var _txBodyUpdate = maybeGetter("update"); + // auxiliary_data_hash(): AuxiliaryDataHash | void; -exports._txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); +export var _txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); + // validity_start_interval(): number | void; -exports._txBodyValidityStartInterval = maybeGetter( +export var _txBodyValidityStartInterval = maybeGetter( "validity_start_interval_bignum" ); + // multiassets(): Mint | void; -exports._txBodyMultiAssets = maybeGetter("multiassets"); -exports._txBodyReferenceInputs = maybe => containerhelper => body => - body.reference_inputs() - ? maybe.just(containerhelper.unpack(body.reference_inputs())) - : maybe.nothing; +export var _txBodyMultiAssets = maybeGetter("multiassets"); + +export function _txBodyReferenceInputs(maybe) { + return containerhelper => body => + body.reference_inputs() + ? maybe.just(containerhelper.unpack(body.reference_inputs())) + : maybe.nothing; +} + // script_data_hash(): ScriptDataHash | void; -exports._txBodyScriptDataHash = maybeGetter("script_data_hash"); +export var _txBodyScriptDataHash = maybeGetter("script_data_hash"); + // collateral(): Array TransactionInput | void; -exports._txBodyCollateral = maybeGetterMulti("collateral"); +export var _txBodyCollateral = maybeGetterMulti("collateral"); + // required_signers(): Ed25519KeyHashes | void; -exports._txBodyRequiredSigners = maybeGetterMulti("required_signers"); +export var _txBodyRequiredSigners = maybeGetterMulti("required_signers"); + // network_id(): number | void; -exports._txBodyNetworkId = testnet => mainnet => - maybeGetter_(o => { - switch (o.kind()) { - case lib.NetworkIdKind.Testnet: - return testnet; - case lib.NetworkIdKind.Mainnet: - return mainnet; - default: - throw "Unknown NetworkIdKind: " + o.kind(); - } - })("network_id"); +export function _txBodyNetworkId(testnet) { + return mainnet => + maybeGetter_(o => { + switch (o.kind()) { + case lib.NetworkIdKind.Testnet: + return testnet; + case lib.NetworkIdKind.Mainnet: + return mainnet; + default: + throw "Unknown NetworkIdKind: " + o.kind(); + } + })("network_id"); +} // collateral_return(): TransactionOutput | void; -exports._txBodyCollateralReturn = maybeGetter("collateral_return"); +export var _txBodyCollateralReturn = maybeGetter("collateral_return"); // total_collateral(): BigNum | void -exports._txBodyTotalCollateral = maybeGetter("total_collateral"); +export var _txBodyTotalCollateral = maybeGetter("total_collateral"); // foreign import _unpackWithdrawals :: ContainerHelper -> CSL.Withdrawals -> Array(Tuple CSL.RewardAddress CSL.BigNum) -exports._unpackWithdrawals = containerhelper => - containerhelper.unpackKeyIndexed; - -exports._unpackUpdate = containerhelper => update => { - const pppus = containerhelper.unpackKeyIndexed( - update.proposed_protocol_parameter_updates() - ); - return { epoch: update.epoch(), paramUpdates: pppus }; -}; +export function _unpackWithdrawals(containerhelper) { + return containerhelper.unpackKeyIndexed; +} -exports._unpackMint = containerhelper => containerhelper.unpackKeyIndexed; - -exports._unpackMintAssets = containerhelper => containerhelper.unpackKeyIndexed; - -exports._convertCert = certConvHelper => cert => { - switch (cert.kind()) { - case lib.CertificateKind.StakeRegistration: - return certConvHelper.stakeRegistration( - cert.as_stake_registration().stake_credential() - ); - case lib.CertificateKind.StakeDeregistration: - return certConvHelper.stakeDeregistration( - cert.as_stake_deregistration().stake_credential() - ); - case lib.CertificateKind.StakeDelegation: - return certConvHelper.stakeDelegation( - cert.as_stake_delegation().stake_credential() - )(cert.as_stake_delegation().pool_keyhash()); - case lib.CertificateKind.PoolRegistration: - return certConvHelper.poolRegistration( - cert.as_pool_registration().pool_params() - ); - case lib.CertificateKind.PoolRetirement: - return certConvHelper.poolRetirement( - cert.as_pool_retirement().pool_keyhash() - )(cert.as_pool_retirement().epoch()); - case lib.CertificateKind.GenesisKeyDelegation: - return certConvHelper.genesisKeyDelegation( - cert.as_genesis_key_delegation().genesishash() - )(cert.as_genesis_key_delegation().genesis_delegate_hash())( - cert.as_genesis_key_delegation().vrf_keyhash() - ); - case lib.CertificateKind.MoveInstantaneousRewardsCert: - const mirCert = cert.as_move_instantaneous_rewards_cert(); - const mir = mirCert.move_instantaneous_reward(); - switch (mir.kind()) { - case lib.MIRKind.ToOtherPot: - return certConvHelper.moveInstantaneousRewardsToOtherPotCert( - mir.pot() - )(mir.as_to_other_pot()); - case lib.MIRKind.ToStakeCredentials: - return certConvHelper.moveInstantaneousRewardsToStakeCreds(mir.pot())( - mir.as_to_stake_creds() - ); - default: - throw ( - "MoveInstantaneousReward convertion failed for kind" + mir.kind() - ); - } - default: - throw ("Cert conversion failed for kind: ", cert.kind()); - } -}; +export function _unpackUpdate(containerhelper) { + return update => { + const pppus = containerhelper.unpackKeyIndexed( + update.proposed_protocol_parameter_updates() + ); + return { epoch: update.epoch(), paramUpdates: pppus }; + }; +} + +export function _unpackMint(containerhelper) { + return containerhelper.unpackKeyIndexed; +} -exports._unpackProtocolParamUpdate = maybe => ppu => { - const optional = x => (x == null ? maybe.nothing : maybe.just(x)); +export function _unpackMintAssets(containerhelper) { + return containerhelper.unpackKeyIndexed; +} - return { - minfeeA: optional(ppu.minfee_a()), - minfeeB: optional(ppu.minfee_b()), - maxBlockBodySize: optional(ppu.max_block_body_size()), - maxTxSize: optional(ppu.max_tx_size()), - maxBlockHeaderSize: optional(ppu.max_block_header_size()), - keyDeposit: optional(ppu.key_deposit()), - poolDeposit: optional(ppu.pool_deposit()), - maxEpoch: optional(ppu.max_epoch()), - nOpt: optional(ppu.n_opt()), - poolPledgeInfluence: optional(ppu.pool_pledge_influence()), - expansionRate: optional(ppu.expansion_rate()), - treasuryGrowthRate: optional(ppu.treasury_growth_rate()), - protocolVersion: optional(ppu.protocol_version()), - minPoolCost: optional(ppu.min_pool_cost()), - adaPerUtxoByte: optional(ppu.ada_per_utxo_byte()), - costModels: optional(ppu.cost_models()), - executionCosts: optional(ppu.execution_costs()), - maxTxExUnits: optional(ppu.max_tx_ex_units()), - maxBlockExUnits: optional(ppu.max_block_ex_units()), - maxValueSize: optional(ppu.max_value_size()), - collateralPercentage: optional(ppu.collateral_percentage()), - maxCollateralInputs: optional(ppu.max_collateral_inputs()), +export function _convertCert(certConvHelper) { + return cert => { + switch (cert.kind()) { + case lib.CertificateKind.StakeRegistration: + return certConvHelper.stakeRegistration( + cert.as_stake_registration().stake_credential() + ); + case lib.CertificateKind.StakeDeregistration: + return certConvHelper.stakeDeregistration( + cert.as_stake_deregistration().stake_credential() + ); + case lib.CertificateKind.StakeDelegation: + return certConvHelper.stakeDelegation( + cert.as_stake_delegation().stake_credential() + )(cert.as_stake_delegation().pool_keyhash()); + case lib.CertificateKind.PoolRegistration: + return certConvHelper.poolRegistration( + cert.as_pool_registration().pool_params() + ); + case lib.CertificateKind.PoolRetirement: + return certConvHelper.poolRetirement( + cert.as_pool_retirement().pool_keyhash() + )(cert.as_pool_retirement().epoch()); + case lib.CertificateKind.GenesisKeyDelegation: + return certConvHelper.genesisKeyDelegation( + cert.as_genesis_key_delegation().genesishash() + )(cert.as_genesis_key_delegation().genesis_delegate_hash())( + cert.as_genesis_key_delegation().vrf_keyhash() + ); + case lib.CertificateKind.MoveInstantaneousRewardsCert: + const mirCert = cert.as_move_instantaneous_rewards_cert(); + const mir = mirCert.move_instantaneous_reward(); + switch (mir.kind()) { + case lib.MIRKind.ToOtherPot: + return certConvHelper.moveInstantaneousRewardsToOtherPotCert( + mir.pot() + )(mir.as_to_other_pot()); + case lib.MIRKind.ToStakeCredentials: + return certConvHelper.moveInstantaneousRewardsToStakeCreds(mir.pot())( + mir.as_to_stake_creds() + ); + default: + throw ( + "MoveInstantaneousReward convertion failed for kind" + mir.kind() + ); + } + default: + throw ("Cert conversion failed for kind: ", cert.kind()); + } }; -}; +} + +export function _unpackProtocolParamUpdate(maybe) { + return ppu => { + const optional = x => (x == null ? maybe.nothing : maybe.just(x)); + + return { + minfeeA: optional(ppu.minfee_a()), + minfeeB: optional(ppu.minfee_b()), + maxBlockBodySize: optional(ppu.max_block_body_size()), + maxTxSize: optional(ppu.max_tx_size()), + maxBlockHeaderSize: optional(ppu.max_block_header_size()), + keyDeposit: optional(ppu.key_deposit()), + poolDeposit: optional(ppu.pool_deposit()), + maxEpoch: optional(ppu.max_epoch()), + nOpt: optional(ppu.n_opt()), + poolPledgeInfluence: optional(ppu.pool_pledge_influence()), + expansionRate: optional(ppu.expansion_rate()), + treasuryGrowthRate: optional(ppu.treasury_growth_rate()), + protocolVersion: optional(ppu.protocol_version()), + minPoolCost: optional(ppu.min_pool_cost()), + adaPerUtxoByte: optional(ppu.ada_per_utxo_byte()), + costModels: optional(ppu.cost_models()), + executionCosts: optional(ppu.execution_costs()), + maxTxExUnits: optional(ppu.max_tx_ex_units()), + maxBlockExUnits: optional(ppu.max_block_ex_units()), + maxValueSize: optional(ppu.max_value_size()), + collateralPercentage: optional(ppu.collateral_percentage()), + maxCollateralInputs: optional(ppu.max_collateral_inputs()), + }; + }; +} -exports._unpackCostModels = containerhelper => containerhelper.unpackKeyIndexed; +export function _unpackCostModels(containerhelper) { + return containerhelper.unpackKeyIndexed; +} -exports._unpackCostModel = cm => { +export function _unpackCostModel(cm) { const res = []; for (let op = 0; op < cm.len(); op++) { res.push(cm.get(op).to_str()); } return res; -}; +} -exports._convertNonce = nonceCtors => cslNonce => { - const hashBytes = cslNonce.get_hash(); - return hashBytes == null - ? nonceCtors.identityNonce - : nonceCtors.hashNonce(hashBytes); -}; +export function _convertNonce(nonceCtors) { + return cslNonce => { + const hashBytes = cslNonce.get_hash(); + return hashBytes == null + ? nonceCtors.identityNonce + : nonceCtors.hashNonce(hashBytes); + }; +} -exports._unpackMetadatums = containerHelper => containerHelper.unpackKeyIndexed; - -exports._unpackMetadataMap = containerHelper => - containerHelper.unpackKeyIndexed; - -exports._unpackMetadataList = containerHelper => containerHelper.unpack; - -exports._convertMetadatum = metadataCtors => cslMetadatum => { - switch (cslMetadatum.kind()) { - case lib.TransactionMetadatumKind.MetadataMap: - return metadataCtors.from_map(cslMetadatum.as_map()); - case lib.TransactionMetadatumKind.MetadataList: - return metadataCtors.from_list(cslMetadatum.as_list()); - case lib.TransactionMetadatumKind.Int: - return metadataCtors.from_int(cslMetadatum.as_int()); - case lib.TransactionMetadatumKind.Bytes: - return metadataCtors.from_bytes(cslMetadatum.as_bytes()); - case lib.TransactionMetadatumKind.Text: - return metadataCtors.from_text(cslMetadatum.as_text()); - default: - throw "Could not convert to known types."; - } -}; +export function _unpackMetadatums(containerHelper) { + return containerHelper.unpackKeyIndexed; +} -exports._unpackExUnits = exunits => { +export function _unpackMetadataMap(containerHelper) { + return containerHelper.unpackKeyIndexed; +} + +export function _unpackMetadataList(containerHelper) { + return containerHelper.unpack; +} + +export function _convertMetadatum(metadataCtors) { + return cslMetadatum => { + switch (cslMetadatum.kind()) { + case lib.TransactionMetadatumKind.MetadataMap: + return metadataCtors.from_map(cslMetadatum.as_map()); + case lib.TransactionMetadatumKind.MetadataList: + return metadataCtors.from_list(cslMetadatum.as_list()); + case lib.TransactionMetadatumKind.Int: + return metadataCtors.from_int(cslMetadatum.as_int()); + case lib.TransactionMetadatumKind.Bytes: + return metadataCtors.from_bytes(cslMetadatum.as_bytes()); + case lib.TransactionMetadatumKind.Text: + return metadataCtors.from_text(cslMetadatum.as_text()); + default: + throw "Could not convert to known types."; + } + }; +} + +export function _unpackExUnits(exunits) { return { mem: exunits.mem(), steps: exunits.steps(), }; -}; +} -exports._unpackUnitInterval = ui => { +export function _unpackUnitInterval(ui) { return { numerator: ui.numerator(), denominator: ui.denominator(), }; -}; +} -exports._unpackProtocolVersion = cslPV => ({ - major: cslPV.major(), - minor: cslPV.minor(), -}); +export function _unpackProtocolVersion(cslPV) { + return { + major: cslPV.major(), + minor: cslPV.minor(), + }; +} -exports._unpackExUnitsPrices = cslEup => { +export function _unpackExUnitsPrices(cslEup) { return { memPrice: cslEup.mem_price(), stepPrice: cslEup.step_price(), }; -}; +} -exports.poolParamsOperator = call("operator"); -exports.poolParamsVrfKeyhash = call("vrf_keyhash"); -exports.poolParamsPledge = call("pledge"); -exports.poolParamsCost = call("cost"); -exports.poolParamsMargin = call("margin"); -exports.poolParamsRewardAccount = call("reward_account"); -exports.poolParamsPoolOwners = containerHelper => poolParams => - containerHelper.unpack(poolParams.pool_owners()); -exports.poolParamsRelays = containerHelper => poolParams => - containerHelper.unpack(poolParams.relays()); -exports.poolParamsPoolMetadata = callMaybe("pool_metadata"); - -exports.convertRelay_ = helper => relay => { - switch (relay.kind()) { - case lib.RelayKind.SingleHostAddr: - return helper.asSingleHostAddr(relay.as_single_host_addr()); - case lib.RelayKind.SingleHostName: - return helper.asSingleHostName(relay.as_single_host_name()); - case lib.RelayKind.MultiHostName: - return helper.asMultiHostName(relay.as_multi_host_name()); - default: - throw "convertRelay_: impossible happened: invalid Relay"; - } -}; +export var poolParamsOperator = call("operator"); +export var poolParamsVrfKeyhash = call("vrf_keyhash"); +export var poolParamsPledge = call("pledge"); +export var poolParamsCost = call("cost"); +export var poolParamsMargin = call("margin"); +export var poolParamsRewardAccount = call("reward_account"); -exports.convertIpv6_ = ipv6 => ipv6.ip(); +export function poolParamsPoolOwners(containerHelper) { + return poolParams => + containerHelper.unpack(poolParams.pool_owners()); +} -exports.convertIpv4_ = ipv6 => ipv6.ip(); +export function poolParamsRelays(containerHelper) { + return poolParams => + containerHelper.unpack(poolParams.relays()); +} -exports.convertSingleHostAddr_ = maybe => cont => singleHostAddr => { - const port = singleHostAddr.port(); - const ipv4 = singleHostAddr.ipv4(); - const ipv6 = singleHostAddr.ipv6(); +export var poolParamsPoolMetadata = callMaybe("pool_metadata"); + +export function convertRelay_(helper) { + return relay => { + switch (relay.kind()) { + case lib.RelayKind.SingleHostAddr: + return helper.asSingleHostAddr(relay.as_single_host_addr()); + case lib.RelayKind.SingleHostName: + return helper.asSingleHostName(relay.as_single_host_name()); + case lib.RelayKind.MultiHostName: + return helper.asMultiHostName(relay.as_multi_host_name()); + default: + throw "convertRelay_: impossible happened: invalid Relay"; + } + }; +} - return cont(port ? maybe.just(port) : maybe.nothing)( - ipv4 ? maybe.just(ipv4) : maybe.nothing - )(ipv6 ? maybe.just(ipv6) : maybe.nothing); -}; +export function convertIpv6_(ipv6) { + return ipv6.ip(); +} -exports.convertSingleHostName_ = maybe => cont => singleHostName => { - const port = singleHostName.port(); - return cont(port ? maybe.just(port) : maybe.nothing)( - singleHostName.dns_name().record() - ); -}; +export function convertIpv4_(ipv6) { + return ipv6.ip(); +} + +export function convertSingleHostAddr_(maybe) { + return cont => singleHostAddr => { + const port = singleHostAddr.port(); + const ipv4 = singleHostAddr.ipv4(); + const ipv6 = singleHostAddr.ipv6(); + + return cont(port ? maybe.just(port) : maybe.nothing)( + ipv4 ? maybe.just(ipv4) : maybe.nothing + )(ipv6 ? maybe.just(ipv6) : maybe.nothing); + }; +} -exports.convertMultiHostName_ = multiHostName => - multiHostName.dns_name().record(); +export function convertSingleHostName_(maybe) { + return cont => singleHostName => { + const port = singleHostName.port(); + return cont(port ? maybe.just(port) : maybe.nothing)( + singleHostName.dns_name().record() + ); + }; +} + +export function convertMultiHostName_(multiHostName) { + return multiHostName.dns_name().record(); +} -exports.unpackMIRToStakeCredentials_ = - containerHelper => mirToStakeCredentials => +export function unpackMIRToStakeCredentials_(containerHelper) { + return mirToStakeCredentials => containerHelper.unpackKeyIndexed(mirToStakeCredentials); +} -exports.convertPoolMetadata_ = cont => poolMetadata => - cont(poolMetadata.url().url())(poolMetadata.pool_metadata_hash()); +export function convertPoolMetadata_(cont) { + return poolMetadata => + cont(poolMetadata.url().url())(poolMetadata.pool_metadata_hash()); +} diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index e87e5eb37..9b22f6678 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -40,28 +40,34 @@ const extractDict = tuple => dict => { return res; }; -exports.getInput = call("input"); -exports.getOutput = call("output"); -exports.getTransactionHash = call("transaction_id"); -exports.getTransactionIndex = call("index"); -exports.getAddress = call("address"); -exports.getPlutusData = callMaybe("plutus_data"); -exports.getScriptRef = callMaybe("script_ref"); -exports.withScriptRef = ccNativeScript => ccPlutusScript => scriptRef => { - if (scriptRef.is_native_script()) { - return ccNativeScript(scriptRef.native_script()); - } else if (scriptRef.is_plutus_script()) { - return ccPlutusScript(scriptRef.plutus_script()); - } else { - throw "Impossible happened: withScriptRef: not a script"; - } -}; +export var getInput = call("input"); +export var getOutput = call("output"); +export var getTransactionHash = call("transaction_id"); +export var getTransactionIndex = call("index"); +export var getAddress = call("address"); +export var getPlutusData = callMaybe("plutus_data"); +export var getScriptRef = callMaybe("script_ref"); + +export function withScriptRef(ccNativeScript) { + return ccPlutusScript => scriptRef => { + if (scriptRef.is_native_script()) { + return ccNativeScript(scriptRef.native_script()); + } else if (scriptRef.is_plutus_script()) { + return ccPlutusScript(scriptRef.plutus_script()); + } else { + throw "Impossible happened: withScriptRef: not a script"; + } + }; +} + +export var getAmount = call("amount"); +export var getCoin = call("coin"); +export var getMultiAsset = callMaybe("multiasset"); +export {extractDict as extractMultiAsset}; +export {extractDict as extractAssets}; +export var getDataHash = callMaybe("data_hash"); -exports.getAmount = call("amount"); -exports.getCoin = call("coin"); -exports.getMultiAsset = callMaybe("multiasset"); -exports.extractMultiAsset = extractDict; -exports.extractAssets = extractDict; -exports.getDataHash = callMaybe("data_hash"); -exports.mkTransactionUnspentOutput = input => output => - lib.TransactionUnspentOutput.new(input, output); +export function mkTransactionUnspentOutput(input) { + return output => + lib.TransactionUnspentOutput.new(input, output); +} diff --git a/src/Internal/Deserialization/WitnessSet.js b/src/Internal/Deserialization/WitnessSet.js index 752cc47bc..e9b388b29 100644 --- a/src/Internal/Deserialization/WitnessSet.js +++ b/src/Internal/Deserialization/WitnessSet.js @@ -18,35 +18,39 @@ const containerExtractor = obj => { return res; }; -exports.getVkeywitnesses = callMaybe("vkeys"); -exports.extractWitnesses = containerExtractor; -exports.getVkey = call("vkey"); -exports.getSignature = call("signature"); -exports.vkeyPublicKey = call("public_key"); -exports.publicKeyToBech32 = call("to_bech32"); -exports.signatureToBech32 = call("to_bech32"); -exports.getNativeScripts = callMaybe("native_scripts"); -exports.extractNativeScripts = containerExtractor; -exports.nativeScriptAs = maybe => prop => res => ns => - ns[prop]() == null ? maybe.nothing : maybe.just(res); -exports.getBootstraps = callMaybe("bootstraps"); -exports.extractBootstraps = containerExtractor; -exports.getBootstrapVkey = call("vkey"); -exports.getBootstrapSignature = call("signature"); -exports.getBootstrapChainCode = call("chain_code"); -exports.getBootstrapAttributes = call("attributes"); -exports.getPlutusScripts = callMaybe("plutus_scripts"); -exports.extractPlutusScripts = containerExtractor; -exports.plutusScriptBytes = call("bytes"); -exports.plutusScriptVersion = call("language_version"); -exports.getWitnessSetPlutusData = callMaybe("plutus_data"); -exports.extractPlutusData = containerExtractor; -exports.getRedeemers = callMaybe("redeemers"); -exports.getRedeemerTag = call("tag"); -exports.getRedeemerIndex = call("index"); -exports.extractRedeemers = containerExtractor; -exports.getRedeemerTagKind = call("kind"); -exports.getRedeemerPlutusData = call("data"); -exports.getExUnits = call("ex_units"); -exports.getExUnitsMem = call("mem"); -exports.getExUnitsSteps = call("steps"); +export var getVkeywitnesses = callMaybe("vkeys"); +export {containerExtractor as extractWitnesses}; +export var getVkey = call("vkey"); +export var getSignature = call("signature"); +export var vkeyPublicKey = call("public_key"); +export var publicKeyToBech32 = call("to_bech32"); +export var signatureToBech32 = call("to_bech32"); +export var getNativeScripts = callMaybe("native_scripts"); +export {containerExtractor as extractNativeScripts}; + +export function nativeScriptAs(maybe) { + return prop => res => ns => + ns[prop]() == null ? maybe.nothing : maybe.just(res); +} + +export var getBootstraps = callMaybe("bootstraps"); +export {containerExtractor as extractBootstraps}; +export var getBootstrapVkey = call("vkey"); +export var getBootstrapSignature = call("signature"); +export var getBootstrapChainCode = call("chain_code"); +export var getBootstrapAttributes = call("attributes"); +export var getPlutusScripts = callMaybe("plutus_scripts"); +export {containerExtractor as extractPlutusScripts}; +export var plutusScriptBytes = call("bytes"); +export var plutusScriptVersion = call("language_version"); +export var getWitnessSetPlutusData = callMaybe("plutus_data"); +export {containerExtractor as extractPlutusData}; +export var getRedeemers = callMaybe("redeemers"); +export var getRedeemerTag = call("tag"); +export var getRedeemerIndex = call("index"); +export {containerExtractor as extractRedeemers}; +export var getRedeemerTagKind = call("kind"); +export var getRedeemerPlutusData = call("data"); +export var getExUnits = call("ex_units"); +export var getExUnitsMem = call("mem"); +export var getExUnitsSteps = call("steps"); diff --git a/src/Internal/FfiHelpers.js b/src/Internal/FfiHelpers.js index 457e224b5..bd67788e1 100644 --- a/src/Internal/FfiHelpers.js +++ b/src/Internal/FfiHelpers.js @@ -11,34 +11,36 @@ const unpack = obj => { const unpackFromProperty = prop => obj => unpack(obj[prop]()); -exports._containerHelper = r => ({ - unpack, - unpackFromProperty, - // unpacks an associative container where keys are stored in .keys() - // and values for that keys might be missing. - unpackKeyIndexed: obj => { - const res = []; - for (let i = 0; i < obj.len(); i++) { - let k = obj.keys().get(i); - let v = obj.get(k); - if (v == null) continue; - res.push(r.tuple(k)(v)); - } - return res; - }, - // Abstracts away packing array of something into a monomorphic container. - pack: (container, elements) => { - const res = container.new(); - elements.forEach(elem => res.add(elem)); - return res; - }, - // Abstracts away packing a list of KV-pairs into a map-like structure. - packMap: (container, entries) => { - const res = container.new(); - entries.forEach(entry => { - const [key, value] = r.untuple(entry); - res.insert(key, value); - }); - return res; - }, -}); +export function _containerHelper(r) { + return { + unpack, + unpackFromProperty, + // unpacks an associative container where keys are stored in .keys() + // and values for that keys might be missing. + unpackKeyIndexed: obj => { + const res = []; + for (let i = 0; i < obj.len(); i++) { + let k = obj.keys().get(i); + let v = obj.get(k); + if (v == null) continue; + res.push(r.tuple(k)(v)); + } + return res; + }, + // Abstracts away packing array of something into a monomorphic container. + pack: (container, elements) => { + const res = container.new(); + elements.forEach(elem => res.add(elem)); + return res; + }, + // Abstracts away packing a list of KV-pairs into a map-like structure. + packMap: (container, entries) => { + const res = container.new(); + entries.forEach(entry => { + const [key, value] = r.untuple(entry); + res.insert(key, value); + }); + return res; + }, + }; +} diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 0d9f2065d..319382353 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -1,8 +1,9 @@ /* global BROWSER_RUNTIME */ -const Blake2 = require("blakejs"); -const SHA256 = require("jssha/dist/sha256"); -const SHA3 = require("jssha/dist/sha3"); +import Blake2 from "blakejs"; + +import SHA256 from "jssha/dist/sha256"; +import SHA3 from "jssha/dist/sha3"; let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { @@ -12,27 +13,29 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.blake2b224Hash = bytesToHash => { +export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); -}; +} -exports.blake2b224HashHex = bytesToHash => { +export function blake2b224HashHex(bytesToHash) { return Blake2.blake2bHex(bytesToHash, null, 28); -}; +} -exports.blake2b256Hash = bytesToHash => { +export function blake2b256Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 32); -}; +} -exports.blake2b256HashHex = bytesToHash => { +export function blake2b256HashHex(bytesToHash) { return Blake2.blake2bHex(bytesToHash, null, 32); -}; +} -exports.hashPlutusData = plutusData => { +export function hashPlutusData(plutusData) { return lib.hash_plutus_data(plutusData); -}; +} -exports.hashPlutusScript = script => script.hash(); +export function hashPlutusScript(script) { + return script.hash(); +} const SHA256_HASH_VARIANT = "SHA-256"; const SHA3_256_HASH_VARIANT = "SHA3-256"; @@ -40,26 +43,26 @@ const SHA3_256_HASH_VARIANT = "SHA3-256"; const UINT8ARRAY_FORMAT = "UINT8ARRAY"; const HEX_FORMAT = "HEX"; -exports.sha256Hash = bytesToHash => { +export function sha256Hash(bytesToHash) { const shaObj = new SHA256(SHA256_HASH_VARIANT, UINT8ARRAY_FORMAT); shaObj.update(bytesToHash); return shaObj.getHash(UINT8ARRAY_FORMAT); -}; +} -exports.sha256HashHex = bytesToHash => { +export function sha256HashHex(bytesToHash) { const shaObj = new SHA256(SHA256_HASH_VARIANT, UINT8ARRAY_FORMAT); shaObj.update(bytesToHash); return shaObj.getHash(HEX_FORMAT); -}; +} -exports.sha3_256Hash = bytesToHash => { +export function sha3_256Hash(bytesToHash) { const shaObj = new SHA3(SHA3_256_HASH_VARIANT, UINT8ARRAY_FORMAT); shaObj.update(bytesToHash); return shaObj.getHash(UINT8ARRAY_FORMAT); -}; +} -exports.sha3_256HashHex = bytesToHash => { +export function sha3_256HashHex(bytesToHash) { const shaObj = new SHA3(SHA3_256_HASH_VARIANT, UINT8ARRAY_FORMAT); shaObj.update(bytesToHash); return shaObj.getHash(HEX_FORMAT); -}; +} diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 7a0c537e7..305c14915 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -1,6 +1,6 @@ /* global BROWSER_RUNTIME */ -const ReconnectingWebSocket = require("reconnecting-websocket"); +import ReconnectingWebSocket from "reconnecting-websocket"; let OurWebSocket; if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { @@ -17,88 +17,106 @@ class NoPerMessageDeflateWebSocket extends OurWebSocket { } } -exports._mkWebSocket = logger => url => () => { - try { - let ws; - if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - ws = new ReconnectingWebSocket.default(url); - } else { - ws = new ReconnectingWebSocket(url, [], { - WebSocket: NoPerMessageDeflateWebSocket, - }); +export function _mkWebSocket(logger) { + return url => () => { + try { + let ws; + if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + ws = new ReconnectingWebSocket.default(url); + } else { + ws = new ReconnectingWebSocket(url, [], { + WebSocket: NoPerMessageDeflateWebSocket, + }); + } + ws.finalizers = []; + logger("Created a new WebSocket")(); + return ws; + } catch (e) { + logger("Failed to create a new WebSocket"); + throw e; } - ws.finalizers = []; - logger("Created a new WebSocket")(); - return ws; - } catch (e) { - logger("Failed to create a new WebSocket"); - throw e; - } -}; + }; +} -exports._onWsConnect = ws => fn => () => { - ws.addEventListener("open", fn); - ws.finalizers.push(() => { - ws.removeEventListener("open", fn); - }); -}; +export function _onWsConnect(ws) { + return fn => () => { + ws.addEventListener("open", fn); + ws.finalizers.push(() => { + ws.removeEventListener("open", fn); + }); + }; +} -exports._onWsError = ws => fn => () => { - const listener = function (event) { - if ( - "message" in event && - typeof event.message === "string" && - event.message.length > 0 - ) { - fn(event.message)(); - } else if ("error" in event && event.error instanceof Error) { - fn(event.error.toString())(); - } else { - fn(event.toString())(); - } +export function _onWsError(ws) { + return fn => () => { + const listener = function (event) { + if ( + "message" in event && + typeof event.message === "string" && + event.message.length > 0 + ) { + fn(event.message)(); + } else if ("error" in event && event.error instanceof Error) { + fn(event.error.toString())(); + } else { + fn(event.toString())(); + } + }; + ws.addEventListener("error", listener); + ws.finalizers.push(() => { + ws.removeEventListener("error", listener); + }); + return listener; }; - ws.addEventListener("error", listener); - ws.finalizers.push(() => { - ws.removeEventListener("error", listener); - }); - return listener; -}; +} -exports._removeOnWsError = ws => listener => () => - ws.removeEventListener("error", listener); +export function _removeOnWsError(ws) { + return listener => () => + ws.removeEventListener("error", listener); +} -exports._onWsMessage = ws => logger => fn => () => { - const listener = function func(event) { - const str = event.data; - logger(`message: ${str}`)(); - fn(str)(); +export function _onWsMessage(ws) { + return logger => fn => () => { + const listener = function func(event) { + const str = event.data; + logger(`message: ${str}`)(); + fn(str)(); + }; + ws.addEventListener("message", listener); + ws.finalizers.push(() => { + ws.removeEventListener("message", listener); + }); }; - ws.addEventListener("message", listener); - ws.finalizers.push(() => { - ws.removeEventListener("message", listener); - }); -}; +} -exports._wsFinalize = ws => () => { - for (let finalizer of ws.finalizers) { - /* eslint-disable no-empty */ - try { - finalizer(); - } catch (_) {} - /* eslint-enable */ - } - ws.finalizers = []; -}; +export function _wsFinalize(ws) { + return () => { + for (let finalizer of ws.finalizers) { + /* eslint-disable no-empty */ + try { + finalizer(); + } catch (_) {} + /* eslint-enable */ + } + ws.finalizers = []; + }; +} -exports._wsSend = ws => logger => str => () => { - logger(`sending: ${str}`)(); - ws.send(str); -}; +export function _wsSend(ws) { + return logger => str => () => { + logger(`sending: ${str}`)(); + ws.send(str); + }; +} -exports._wsReconnect = ws => () => { - ws.reconnect(); -}; +export function _wsReconnect(ws) { + return () => { + ws.reconnect(); + }; +} -exports._wsClose = ws => () => { - ws.close(); -}; +export function _wsClose(ws) { + return () => { + ws.close(); + }; +} diff --git a/src/Internal/Metadata/ToMetadata.purs b/src/Internal/Metadata/ToMetadata.purs index bb1db286e..9b9659713 100644 --- a/src/Internal/Metadata/ToMetadata.purs +++ b/src/Internal/Metadata/ToMetadata.purs @@ -10,13 +10,10 @@ import Ctl.Internal.Types.Int (Int, fromBigInt) as Int import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataMap, MetadataList, Int, Bytes, Text) ) -import Data.Array (fromFoldable) as Array import Data.BigInt (BigInt) -import Data.Foldable (class Foldable) import Data.Map (Map) import Data.Map (fromFoldable, toUnfoldable) as Map import Data.Maybe (fromJust) -import Data.NonEmpty (NonEmpty) import Data.Profunctor.Strong ((***)) import Data.Tuple (Tuple) import Partial.Unsafe (unsafePartial) @@ -49,9 +46,6 @@ instance else instance ToMetadata a => ToMetadata (Array a) where toMetadata = MetadataList <<< map toMetadata -instance (Foldable f, ToMetadata a) => ToMetadata (NonEmpty f a) where - toMetadata = toMetadata <<< Array.fromFoldable - instance ToMetadata Int.Int where toMetadata = Int diff --git a/src/Internal/Plutip/PortCheck.js b/src/Internal/Plutip/PortCheck.js index b9440791b..dedb2434a 100644 --- a/src/Internal/Plutip/PortCheck.js +++ b/src/Internal/Plutip/PortCheck.js @@ -1,24 +1,26 @@ -const net = require("net"); +import net from "net"; -exports._isPortAvailable = port => () => - new Promise((resolve, reject) => { - const server = net - .createServer() - .once("error", function (err) { - if (err.code == "EADDRINUSE") { - resolve(false); - } else { - reject( - "Failed check for port availability (port: " + - port + - ", error: " + - err.code + - ")" - ); - } - }) - .once("listening", () => { - server.once("close", () => resolve(true)).close(); - }) - .listen(port); - }); +export function _isPortAvailable(port) { + return () => + new Promise((resolve, reject) => { + const server = net + .createServer() + .once("error", function (err) { + if (err.code == "EADDRINUSE") { + resolve(false); + } else { + reject( + "Failed check for port availability (port: " + + port + + ", error: " + + err.code + + ")" + ); + } + }) + .once("listening", () => { + server.once("close", () => resolve(true)).close(); + }) + .listen(port); + }); +} diff --git a/src/Internal/Plutip/Spawn.js b/src/Internal/Plutip/Spawn.js index 4e4273f3a..93cba32e6 100644 --- a/src/Internal/Plutip/Spawn.js +++ b/src/Internal/Plutip/Spawn.js @@ -1,20 +1,26 @@ "use strict"; -exports.clearLineHandler = readline => () => { - readline.removeAllListeners("line"); -}; +export function clearLineHandler(readline) { + return () => { + readline.removeAllListeners("line"); + }; +} -const fs = require("fs"); +import fs from "fs"; -exports._rmdirSync = path => () => fs.rmSync(path, { recursive: true }); +export function _rmdirSync(path) { + return () => fs.rmSync(path, { recursive: true }); +} -exports.removeOnSignal = - ({ signal, callback }) => - () => { +export function removeOnSignal({ signal, callback }) { + return () => { process.removeListener(signal, callback); }; +} -exports.onSignalImpl = signal => callback => () => { - process.on(signal, callback); - return { signal, callback }; -}; +export function onSignalImpl(signal) { + return callback => () => { + process.on(signal, callback); + return { signal, callback }; + }; +} diff --git a/src/Internal/Plutip/Utils.js b/src/Internal/Plutip/Utils.js index 279fd085a..ab594520c 100644 --- a/src/Internal/Plutip/Utils.js +++ b/src/Internal/Plutip/Utils.js @@ -1,3 +1,5 @@ -const os = require("os"); +import os from "os"; -exports.tmpdir = () => os.tmpdir(); +export function tmpdir() { + return os.tmpdir(); +} diff --git a/src/Internal/Plutus/Types/AssocMap.purs b/src/Internal/Plutus/Types/AssocMap.purs index 9b5bcb5f6..15e16e384 100644 --- a/src/Internal/Plutus/Types/AssocMap.purs +++ b/src/Internal/Plutus/Types/AssocMap.purs @@ -20,13 +20,14 @@ module Ctl.Internal.Plutus.Types.AssocMap import Prelude -import Aeson (class DecodeAeson, class EncodeAeson) +import Aeson (Aeson, class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.PlutusData (PlutusData(Map)) as PD import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array import Data.Array ((:)) -import Data.Bifunctor (bimap) +import Data.Bifunctor (bimap, rmap) +import Data.Bitraversable (rtraverse) import Data.Foldable ( class Foldable , foldMap @@ -67,8 +68,14 @@ derive instance Generic (Map k v) _ derive instance Newtype (Map k v) _ derive newtype instance (Eq k, Eq v) => Eq (Map k v) derive newtype instance (Ord k, Ord v) => Ord (Map k v) -derive newtype instance (EncodeAeson k, EncodeAeson v) => EncodeAeson (Map k v) -derive newtype instance (DecodeAeson k, DecodeAeson v) => DecodeAeson (Map k v) + +instance (EncodeAeson k, EncodeAeson v) => EncodeAeson (Map k v) where + encodeAeson = encodeAeson <<< map (rmap encodeAeson) <<< unwrap + +instance (DecodeAeson k, DecodeAeson v) => DecodeAeson (Map k v) where + decodeAeson x = Map <$> + (traverse (rtraverse decodeAeson) + =<< (decodeAeson x :: _ (Array (Tuple k Aeson)))) instance (Show k, Show v) => Show (Map k v) where show = genericShow diff --git a/src/Internal/QueryM/UniqueId.js b/src/Internal/QueryM/UniqueId.js index c4c2faf40..a96dee7ac 100644 --- a/src/Internal/QueryM/UniqueId.js +++ b/src/Internal/QueryM/UniqueId.js @@ -1,3 +1,5 @@ -const uniqid = require("uniqid"); +import uniqid from "uniqid"; -exports.uniqueId = str => () => uniqid(str); +export function uniqueId(str) { + return () => uniqid(str); +} diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index d66f01e93..d39b29bb7 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -10,177 +10,270 @@ lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); -exports.hashTransaction = body => () => lib.hash_transaction(body); - -exports.newValue = coin => () => lib.Value.new(coin); - -exports.newValueFromAssets = multiasset => () => - lib.Value.new_from_assets(multiasset); - -exports.valueSetCoin = setter("coin"); +export function hashTransaction(body) { + return () => lib.hash_transaction(body); +} -exports.newTransactionInput = transaction_id => index => () => - lib.TransactionInput.new(transaction_id, index); +export function newValue(coin) { + return () => lib.Value.new(coin); +} -exports.newTransactionInputs = () => lib.TransactionInputs.new(); +export function newValueFromAssets(multiasset) { + return () => + lib.Value.new_from_assets(multiasset); +} -exports.addTransactionInput = inputs => input => () => inputs.add(input); +export var valueSetCoin = setter("coin"); -exports.newTransactionOutput = address => amount => () => - lib.TransactionOutput.new(address, amount); +export function newTransactionInput(transaction_id) { + return index => () => + lib.TransactionInput.new(transaction_id, index); +} -exports.newTransactionOutputs = () => lib.TransactionOutputs.new(); +export function newTransactionInputs() { + return lib.TransactionInputs.new(); +} -exports.addTransactionOutput = outputs => output => () => outputs.add(output); +export function addTransactionInput(inputs) { + return input => () => inputs.add(input); +} -exports.newTransactionBody = inputs => outputs => fee => () => - lib.TransactionBody.new_tx_body(inputs, outputs, fee); +export function newTransactionOutput(address) { + return amount => () => + lib.TransactionOutput.new(address, amount); +} -exports.setTxIsValid = tx => isValid => () => tx.set_is_valid(isValid); +export function newTransactionOutputs() { + return lib.TransactionOutputs.new(); +} -exports.newTransaction = body => witness_set => auxiliary_data => () => - lib.Transaction.new(body, witness_set, auxiliary_data); +export function addTransactionOutput(outputs) { + return output => () => outputs.add(output); +} -exports.newTransaction_ = body => witness_set => () => - lib.Transaction.new(body, witness_set); +export function newTransactionBody(inputs) { + return outputs => fee => () => + lib.TransactionBody.new_tx_body(inputs, outputs, fee); +} -exports.newTransactionUnspentOutput = input => output => () => - lib.TransactionUnspentOutput.new(input, output); +export function setTxIsValid(tx) { + return isValid => () => tx.set_is_valid(isValid); +} -exports.newMultiAsset = () => lib.MultiAsset.new(); +export function newTransaction(body) { + return witness_set => auxiliary_data => () => + lib.Transaction.new(body, witness_set, auxiliary_data); +} -exports.insertMultiAsset = multiasset => key => value => () => - multiasset.insert(key, value); +export function newTransaction_(body) { + return witness_set => () => + lib.Transaction.new(body, witness_set); +} -exports.newAssets = () => lib.Assets.new(); +export function newTransactionUnspentOutput(input) { + return output => () => + lib.TransactionUnspentOutput.new(input, output); +} -exports.insertAssets = assets => key => value => () => - assets.insert(key, value); +export function newMultiAsset() { + return lib.MultiAsset.new(); +} -exports.newAssetName = name => () => lib.AssetName.new(name); +export function insertMultiAsset(multiasset) { + return key => value => () => + multiasset.insert(key, value); +} -exports.transactionOutputSetDataHash = setter("data_hash"); +export function newAssets() { + return lib.Assets.new(); +} -exports.transactionOutputSetPlutusData = setter("plutus_data"); +export function insertAssets(assets) { + return key => value => () => + assets.insert(key, value); +} -exports.transactionOutputSetScriptRef = setter("script_ref"); +export function newAssetName(name) { + return () => lib.AssetName.new(name); +} -exports.scriptRefNewNativeScript = nativeScript => - lib.ScriptRef.new_native_script(nativeScript); +export var transactionOutputSetDataHash = setter("data_hash"); +export var transactionOutputSetPlutusData = setter("plutus_data"); +export var transactionOutputSetScriptRef = setter("script_ref"); -exports.scriptRefNewPlutusScript = plutusScript => - lib.ScriptRef.new_plutus_script(plutusScript); +export function scriptRefNewNativeScript(nativeScript) { + return lib.ScriptRef.new_native_script(nativeScript); +} -exports.newVkeywitnesses = () => lib.Vkeywitnesses.new(); +export function scriptRefNewPlutusScript(plutusScript) { + return lib.ScriptRef.new_plutus_script(plutusScript); +} -exports.makeVkeywitness = hash => key => () => lib.make_vkey_witness(hash, key); +export function newVkeywitnesses() { + return lib.Vkeywitnesses.new(); +} -exports.newVkeywitness = vkey => signature => () => - lib.Vkeywitness.new(vkey, signature); +export function makeVkeywitness(hash) { + return key => () => lib.make_vkey_witness(hash, key); +} -exports.addVkeywitness = witnesses => witness => () => witnesses.add(witness); +export function newVkeywitness(vkey) { + return signature => () => + lib.Vkeywitness.new(vkey, signature); +} -exports.newVkeyFromPublicKey = public_key => () => lib.Vkey.new(public_key); +export function addVkeywitness(witnesses) { + return witness => () => witnesses.add(witness); +} -exports.publicKeyHash = pk => pk.hash(); +export function newVkeyFromPublicKey(public_key) { + return () => lib.Vkey.new(public_key); +} -exports.transactionWitnessSetSetVkeys = setter("vkeys"); +export function publicKeyHash(pk) { + return pk.hash(); +} -exports.newCostmdls = () => lib.Costmdls.new(); +export var transactionWitnessSetSetVkeys = setter("vkeys"); -exports.defaultCostmdls = () => - lib.TxBuilderConstants.plutus_vasil_cost_models(); +export function newCostmdls() { + return lib.Costmdls.new(); +} -exports.costmdlsSetCostModel = cms => lang => cm => () => cms.insert(lang, cm); +export function defaultCostmdls() { + return lib.TxBuilderConstants.plutus_vasil_cost_models(); +} -exports.newCostModel = () => lib.CostModel.new(); +export function costmdlsSetCostModel(cms) { + return lang => cm => () => cms.insert(lang, cm); +} -exports.costModelSetCost = cm => op => cost => () => cm.set(op, cost); +export function newCostModel() { + return lib.CostModel.new(); +} -exports.newPlutusV1 = () => lib.Language.new_plutus_v1(); +export function costModelSetCost(cm) { + return op => cost => () => cm.set(op, cost); +} -exports.newPlutusV2 = () => lib.Language.new_plutus_v2(); +export function newPlutusV1() { + return lib.Language.new_plutus_v1(); +} -exports._hashScriptData = rs => cms => ds => () => { - const list = lib.PlutusList.new(); - ds.forEach(d => list.add(d)); - return lib.hash_script_data(rs, cms, list); -}; +export function newPlutusV2() { + return lib.Language.new_plutus_v2(); +} -exports._hashScriptDataNoDatums = rs => cms => () => - lib.hash_script_data(rs, cms); +export function _hashScriptData(rs) { + return cms => ds => () => { + const list = lib.PlutusList.new(); + ds.forEach(d => list.add(d)); + return lib.hash_script_data(rs, cms, list); + }; +} -exports.newRedeemers = () => lib.Redeemers.new(); +export function _hashScriptDataNoDatums(rs) { + return cms => () => + lib.hash_script_data(rs, cms); +} -exports.addRedeemer = rs => r => () => rs.add(r); +export function newRedeemers() { + return lib.Redeemers.new(); +} -exports.setTxBodyReferenceInputs = txBody => referenceInputs => () => - txBody.set_reference_inputs(referenceInputs); +export function addRedeemer(rs) { + return r => () => rs.add(r); +} -exports.setTxBodyScriptDataHash = setter("script_data_hash"); +export function setTxBodyReferenceInputs(txBody) { + return referenceInputs => () => + txBody.set_reference_inputs(referenceInputs); +} -exports.setTxBodyMint = setter("mint"); +export var setTxBodyScriptDataHash = setter("script_data_hash"); +export var setTxBodyMint = setter("mint"); -exports.newMint = () => lib.Mint.new(); +export function newMint() { + return lib.Mint.new(); +} -exports._bigIntToInt = maybe => bigInt => { - try { - const str = bigInt.to_str(); - if (str[0] == "-") { - return maybe.just( - lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))) - ); - } else { - return maybe.just(lib.Int.new(lib.BigNum.from_str(str))); +export function _bigIntToInt(maybe) { + return bigInt => { + try { + const str = bigInt.to_str(); + if (str[0] == "-") { + return maybe.just( + lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))) + ); + } else { + return maybe.just(lib.Int.new(lib.BigNum.from_str(str))); + } + } catch (_) { + return maybe.nothing; } - } catch (_) { - return maybe.nothing; - } -}; - -exports.newMintAssets = lib.MintAssets.new; + }; +} -exports.insertMintAssets = mint => scriptHash => mintAssets => () => - mint.insert(scriptHash, mintAssets); +export var newMintAssets = lib.MintAssets.new; -exports.insertMintAsset = mintAssets => assetName => int => () => - mintAssets.insert(assetName, int); +export function insertMintAssets(mint) { + return scriptHash => mintAssets => () => + mint.insert(scriptHash, mintAssets); +} -exports.networkIdTestnet = () => lib.NetworkId.testnet(); +export function insertMintAsset(mintAssets) { + return assetName => int => () => + mintAssets.insert(assetName, int); +} -exports.networkIdMainnet = () => lib.NetworkId.mainnet(); +export function networkIdTestnet() { + return lib.NetworkId.testnet(); +} -exports.setTxBodyCollateralReturn = txBody => collateralReturn => () => - txBody.set_collateral_return(collateralReturn); +export function networkIdMainnet() { + return lib.NetworkId.mainnet(); +} -exports.setTxBodyTotalCollateral = txBody => totalCollateral => () => - txBody.set_total_collateral(totalCollateral); +export function setTxBodyCollateralReturn(txBody) { + return collateralReturn => () => + txBody.set_collateral_return(collateralReturn); +} -exports.setTxBodyTtl = setter("ttl"); +export function setTxBodyTotalCollateral(txBody) { + return totalCollateral => () => + txBody.set_total_collateral(totalCollateral); +} -exports.setTxBodyCerts = setter("certs"); +export var setTxBodyTtl = setter("ttl"); +export var setTxBodyCerts = setter("certs"); -exports.newCertificates = () => lib.Certificates.new(); +export function newCertificates() { + return lib.Certificates.new(); +} -exports.newStakeRegistrationCertificate = stakeCredential => () => - lib.Certificate.new_stake_registration( - lib.StakeRegistration.new(stakeCredential) - ); +export function newStakeRegistrationCertificate(stakeCredential) { + return () => + lib.Certificate.new_stake_registration( + lib.StakeRegistration.new(stakeCredential) + ); +} -exports.newStakeDeregistrationCertificate = stakeCredential => () => - lib.Certificate.new_stake_deregistration( - lib.StakeDeregistration.new(stakeCredential) - ); +export function newStakeDeregistrationCertificate(stakeCredential) { + return () => + lib.Certificate.new_stake_deregistration( + lib.StakeDeregistration.new(stakeCredential) + ); +} -exports.newStakeDelegationCertificate = - stakeCredential => ed25519KeyHash => () => +export function newStakeDelegationCertificate(stakeCredential) { + return ed25519KeyHash => () => lib.Certificate.new_stake_delegation( lib.StakeDelegation.new(stakeCredential, ed25519KeyHash) ); +} -exports.newPoolRegistrationCertificate = - operator => - vrfKeyhash => +export function newPoolRegistrationCertificate(operator) { + return vrfKeyhash => pledge => cost => margin => @@ -204,143 +297,172 @@ exports.newPoolRegistrationCertificate = ) ) ); +} -exports.newUnitInterval = numerator => denominator => () => - lib.UnitInterval.new(numerator, denominator); +export function newUnitInterval(numerator) { + return denominator => () => + lib.UnitInterval.new(numerator, denominator); +} -exports.newPoolRetirementCertificate = poolKeyHash => epoch => () => - lib.Certificate.new_pool_retirement( - lib.PoolRetirement.new(poolKeyHash, epoch) - ); +export function newPoolRetirementCertificate(poolKeyHash) { + return epoch => () => + lib.Certificate.new_pool_retirement( + lib.PoolRetirement.new(poolKeyHash, epoch) + ); +} -exports.newGenesisKeyDelegationCertificate = - genesisHash => genesisDelegateHash => vrfKeyhash => () => +export function newGenesisKeyDelegationCertificate(genesisHash) { + return genesisDelegateHash => vrfKeyhash => () => lib.Certificate.new_genesis_key_delegation( lib.GenesisKeyDelegation.new(genesisHash, genesisDelegateHash, vrfKeyhash) ); +} -exports.addCert = certificates => certificate => () => - certificates.add(certificate); - -exports.setTxBodyCollateral = setter("collateral"); +export function addCert(certificates) { + return certificate => () => + certificates.add(certificate); +} -exports.setTxBodyNetworkId = setter("network_id"); +export var setTxBodyCollateral = setter("collateral"); +export var setTxBodyNetworkId = setter("network_id"); -exports.transactionBodySetRequiredSigners = - containerHelper => body => keyHashes => () => +export function transactionBodySetRequiredSigners(containerHelper) { + return body => keyHashes => () => body.set_required_signers( containerHelper.pack(lib.Ed25519KeyHashes, keyHashes) ); +} -exports.transactionBodySetValidityStartInterval = setter( +export var transactionBodySetValidityStartInterval = setter( "validity_start_interval_bignum" ); -exports.transactionBodySetAuxiliaryDataHash = txBody => hash => () => - txBody.set_auxiliary_data_hash(hash); - -exports.convertPoolOwners = containerHelper => keyHashes => () => - containerHelper.pack(lib.Ed25519KeyHashes, keyHashes); - -exports.packRelays = containerHelper => relays => - containerHelper.pack(lib.Relays, relays); - -exports.newIpv4 = data => () => lib.Ipv4.new(data); - -exports.newIpv6 = data => () => lib.Ipv6.new(data); - -exports.newSingleHostAddr = port => ipv4 => ipv6 => () => - lib.Relay.new_single_host_addr(lib.SingleHostAddr.new(port, ipv4, ipv6)); - -exports.newSingleHostName = port => dnsName => () => - lib.Relay.new_single_host_name( - lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)) - ); - -exports.newMultiHostName = dnsName => () => - lib.Relay.new_multi_host_name( - lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)) - ); - -exports.newPoolMetadata = url => hash => () => - lib.PoolMetadata.new(lib.URL.new(url), hash); - -exports.newMoveInstantaneousRewardToOtherPot = pot => amount => () => - lib.MoveInstantaneousReward.new_to_other_pot(pot, amount); - -exports.newMoveInstantaneousRewardToStakeCreds = pot => amounts => () => - lib.MoveInstantaneousReward.new_to_stake_creds(pot, amounts); - -exports.newMIRToStakeCredentials = containerHelper => entries => () => - containerHelper.packMap(lib.MIRToStakeCredentials, entries); - -exports.newMoveInstantaneousRewardsCertificate = mir => () => - lib.Certificate.new_move_instantaneous_rewards_cert( - lib.MoveInstantaneousRewardsCert.new(mir) - ); - -exports.newWithdrawals = containerHelper => entries => () => - containerHelper.packMap(lib.Withdrawals, entries); - -exports.setTxBodyWithdrawals = setter("withdrawals"); - -exports.setTxBodyUpdate = setter("update"); - -exports.newUpdate = ppUpdates => epoch => () => - lib.Update.new(ppUpdates, epoch); - -exports.ppuSetMinfeeA = setter("minfee_a"); - -exports.ppuSetMinfeeB = setter("minfee_b"); - -exports.ppuSetMaxBlockBodySize = setter("max_block_body_size"); - -exports.ppuSetMaxTxSize = setter("max_tx_size"); +export function transactionBodySetAuxiliaryDataHash(txBody) { + return hash => () => + txBody.set_auxiliary_data_hash(hash); +} -exports.ppuSetMaxBlockHeaderSize = setter("max_block_header_size"); +export function convertPoolOwners(containerHelper) { + return keyHashes => () => + containerHelper.pack(lib.Ed25519KeyHashes, keyHashes); +} -exports.ppuSetKeyDeposit = setter("key_deposit"); +export function packRelays(containerHelper) { + return relays => + containerHelper.pack(lib.Relays, relays); +} -exports.ppuSetPoolDeposit = setter("pool_deposit"); +export function newIpv4(data) { + return () => lib.Ipv4.new(data); +} -exports.ppuSetMaxEpoch = setter("max_epoch"); +export function newIpv6(data) { + return () => lib.Ipv6.new(data); +} -exports.ppuSetNOpt = setter("n_opt"); +export function newSingleHostAddr(port) { + return ipv4 => ipv6 => () => + lib.Relay.new_single_host_addr(lib.SingleHostAddr.new(port, ipv4, ipv6)); +} -exports.ppuSetPoolPledgeInfluence = setter("pool_pledge_influence"); +export function newSingleHostName(port) { + return dnsName => () => + lib.Relay.new_single_host_name( + lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)) + ); +} -exports.ppuSetExpansionRate = setter("expansion_rate"); +export function newMultiHostName(dnsName) { + return () => + lib.Relay.new_multi_host_name( + lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)) + ); +} -exports.ppuSetTreasuryGrowthRate = setter("treasury_growth_rate"); +export function newPoolMetadata(url) { + return hash => () => + lib.PoolMetadata.new(lib.URL.new(url), hash); +} -exports.newProtocolVersion = major => minor => () => - lib.ProtocolVersion.new(major, minor); +export function newMoveInstantaneousRewardToOtherPot(pot) { + return amount => () => + lib.MoveInstantaneousReward.new_to_other_pot(pot, amount); +} -exports.ppuSetProtocolVersion = ppu => version => () => - ppu.set_protocol_version(version); +export function newMoveInstantaneousRewardToStakeCreds(pot) { + return amounts => () => + lib.MoveInstantaneousReward.new_to_stake_creds(pot, amounts); +} -exports.ppuSetMinPoolCost = setter("min_pool_cost"); +export function newMIRToStakeCredentials(containerHelper) { + return entries => () => + containerHelper.packMap(lib.MIRToStakeCredentials, entries); +} -exports.ppuSetAdaPerUtxoByte = setter("ada_per_utxo_byte"); +export function newMoveInstantaneousRewardsCertificate(mir) { + return () => + lib.Certificate.new_move_instantaneous_rewards_cert( + lib.MoveInstantaneousRewardsCert.new(mir) + ); +} -exports.ppuSetCostModels = setter("cost_models"); +export function newWithdrawals(containerHelper) { + return entries => () => + containerHelper.packMap(lib.Withdrawals, entries); +} -exports.newExUnitPrices = mem_price => step_price => () => - lib.ExUnitPrices.new(mem_price, step_price); +export var setTxBodyWithdrawals = setter("withdrawals"); +export var setTxBodyUpdate = setter("update"); -exports.ppuSetExecutionCosts = setter("execution_costs"); +export function newUpdate(ppUpdates) { + return epoch => () => + lib.Update.new(ppUpdates, epoch); +} -exports.ppuSetMaxTxExUnits = setter("max_tx_ex_units"); +export var ppuSetMinfeeA = setter("minfee_a"); +export var ppuSetMinfeeB = setter("minfee_b"); +export var ppuSetMaxBlockBodySize = setter("max_block_body_size"); +export var ppuSetMaxTxSize = setter("max_tx_size"); +export var ppuSetMaxBlockHeaderSize = setter("max_block_header_size"); +export var ppuSetKeyDeposit = setter("key_deposit"); +export var ppuSetPoolDeposit = setter("pool_deposit"); +export var ppuSetMaxEpoch = setter("max_epoch"); +export var ppuSetNOpt = setter("n_opt"); +export var ppuSetPoolPledgeInfluence = setter("pool_pledge_influence"); +export var ppuSetExpansionRate = setter("expansion_rate"); +export var ppuSetTreasuryGrowthRate = setter("treasury_growth_rate"); + +export function newProtocolVersion(major) { + return minor => () => + lib.ProtocolVersion.new(major, minor); +} -exports.ppuSetMaxBlockExUnits = setter("max_block_ex_units"); +export function ppuSetProtocolVersion(ppu) { + return version => () => + ppu.set_protocol_version(version); +} -exports.ppuSetMaxValueSize = setter("max_value_size"); +export var ppuSetMinPoolCost = setter("min_pool_cost"); +export var ppuSetAdaPerUtxoByte = setter("ada_per_utxo_byte"); +export var ppuSetCostModels = setter("cost_models"); -exports.ppuSetCollateralPercentage = setter("collateral_percentage"); +export function newExUnitPrices(mem_price) { + return step_price => () => + lib.ExUnitPrices.new(mem_price, step_price); +} -exports.ppuSetMaxCollateralInputs = setter("max_collateral_inputs"); +export var ppuSetExecutionCosts = setter("execution_costs"); +export var ppuSetMaxTxExUnits = setter("max_tx_ex_units"); +export var ppuSetMaxBlockExUnits = setter("max_block_ex_units"); +export var ppuSetMaxValueSize = setter("max_value_size"); +export var ppuSetCollateralPercentage = setter("collateral_percentage"); +export var ppuSetMaxCollateralInputs = setter("max_collateral_inputs"); -exports.newProtocolParamUpdate = () => lib.ProtocolParamUpdate.new(); +export function newProtocolParamUpdate() { + return lib.ProtocolParamUpdate.new(); +} -exports.newProposedProtocolParameterUpdates = containerHelper => kvs => () => - containerHelper.packMap(lib.ProposedProtocolParameterUpdates, kvs); +export function newProposedProtocolParameterUpdates(containerHelper) { + return kvs => () => + containerHelper.packMap(lib.ProposedProtocolParameterUpdates, kvs); +} diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index b9f664e97..7764c1160 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -31,121 +31,140 @@ const callNetworkId = callMethodParameterless("network_id"); const callPaymentCred = callMethodParameterless("payment_cred"); const callStakeCred = callMethodParameterless("stake_cred"); -exports.withStakeCredential = cbObj => stakeCred => { - return stakeCred.kind() == lib.StakeCredKind.Key - ? cbObj.onKeyHash(stakeCred.to_keyhash()) - : cbObj.onScriptHash(stakeCred.to_scripthash()); -}; +export function withStakeCredential(cbObj) { + return stakeCred => { + return stakeCred.kind() == lib.StakeCredKind.Key + ? cbObj.onKeyHash(stakeCred.to_keyhash()) + : cbObj.onScriptHash(stakeCred.to_scripthash()); + }; +} -exports.keyHashCredential = lib.StakeCredential.from_keyhash; -exports.scriptHashCredential = lib.StakeCredential.from_scripthash; +export var keyHashCredential = lib.StakeCredential.from_keyhash; +export var scriptHashCredential = lib.StakeCredential.from_scripthash; +export {callToBytes as addressBytes}; +export {callToBytes as byronAddressBytes}; +export {callToBytes as stakeCredentialToBytes}; +export {callToBech32 as addressBech32}; -exports.addressBytes = callToBytes; -exports.byronAddressBytes = callToBytes; -exports.stakeCredentialToBytes = callToBytes; +export function _addressNetworkId(toAdt) { + return addr => { + return toAdt(callNetworkId(addr)); + }; +} -exports.addressBech32 = callToBech32; -exports._addressNetworkId = toAdt => addr => { - return toAdt(callNetworkId(addr)); -}; -exports._byronAddressNetworkId = toAdt => addr => { - return toAdt(callNetworkId(addr)); -}; +export function _byronAddressNetworkId(toAdt) { + return addr => { + return toAdt(callNetworkId(addr)); + }; +} -exports._addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); -exports._stakeCredentialFromBytes = callClassStaticMaybe( +export var _addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); + +export var _stakeCredentialFromBytes = callClassStaticMaybe( "StakeCredential", "from_bytes" ); -exports._byronAddressFromBytes = callClassStaticMaybe( + +export var _byronAddressFromBytes = callClassStaticMaybe( "ByronAddress", "from_bytes" ); -exports._addressFromBech32 = callClassStaticMaybe("Address", "from_bech32"); +export var _addressFromBech32 = callClassStaticMaybe("Address", "from_bech32"); -exports._byronAddressFromBase58 = callClassStaticMaybe( +export var _byronAddressFromBase58 = callClassStaticMaybe( "ByronAddress", "from_base58" ); -exports._baseAddressFromAddress = callClassStaticMaybe( +export var _baseAddressFromAddress = callClassStaticMaybe( "BaseAddress", "from_address" ); -exports._byronAddressFromAddress = callClassStaticMaybe( + +export var _byronAddressFromAddress = callClassStaticMaybe( "ByronAddress", "from_address" ); -exports._enterpriseAddressFromAddress = callClassStaticMaybe( + +export var _enterpriseAddressFromAddress = callClassStaticMaybe( "EnterpriseAddress", "from_address" ); -exports._pointerAddressFromAddress = callClassStaticMaybe( + +export var _pointerAddressFromAddress = callClassStaticMaybe( "PointerAddress", "from_address" ); -exports._rewardAddressFromAddress = callClassStaticMaybe( + +export var _rewardAddressFromAddress = callClassStaticMaybe( "RewardAddress", "from_address" ); -exports.baseAddressToAddress = callToAddress; -exports.byronAddressToAddress = callToAddress; -exports.enterpriseAddressToAddress = callToAddress; -exports.pointerAddressToAddress = callToAddress; -exports.rewardAddressToAddress = callToAddress; - -exports.baseAddressPaymentCred = callPaymentCred; -exports.rewardAddressPaymentCred = callPaymentCred; -exports.enterpriseAddressPaymentCred = callPaymentCred; -exports.pointerAddressPaymentCred = callPaymentCred; - -exports.baseAddressDelegationCred = callStakeCred; - -exports.byronAddressAttributes = callMethodParameterless("attributes"); -exports.byronAddressIsValid = lib.ByronAddress.is_valid; -exports.byronAddressToBase58 = callMethodParameterless("to_base58"); -exports.byronProtocolMagic = callMethodParameterless("byron_protocol_magic"); - -exports.icarusFromKey = bip32pubkey => byronProtocolMagic => { - return lib.ByronAddress.icarus_from_key(bip32pubkey, byronProtocolMagic); -}; +export {callToAddress as baseAddressToAddress}; +export {callToAddress as byronAddressToAddress}; +export {callToAddress as enterpriseAddressToAddress}; +export {callToAddress as pointerAddressToAddress}; +export {callToAddress as rewardAddressToAddress}; +export {callPaymentCred as baseAddressPaymentCred}; +export {callPaymentCred as rewardAddressPaymentCred}; +export {callPaymentCred as enterpriseAddressPaymentCred}; +export {callPaymentCred as pointerAddressPaymentCred}; +export {callStakeCred as baseAddressDelegationCred}; +export var byronAddressAttributes = callMethodParameterless("attributes"); +export var byronAddressIsValid = lib.ByronAddress.is_valid; +export var byronAddressToBase58 = callMethodParameterless("to_base58"); +export var byronProtocolMagic = callMethodParameterless("byron_protocol_magic"); + +export function icarusFromKey(bip32pubkey) { + return byronProtocolMagic => { + return lib.ByronAddress.icarus_from_key(bip32pubkey, byronProtocolMagic); + }; +} -exports.pointerAddressStakePointer = pa => { +export function pointerAddressStakePointer(pa) { const pointerForeign = pa.stake_pointer(); return { slot: pointerForeign.slot_bignum(), txIx: pointerForeign.tx_index_bignum(), certIx: pointerForeign.cert_index_bignum(), }; -}; +} -exports._enterpriseAddress = netIdToInt => inpRec => { - return lib.EnterpriseAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred - ); -}; +export function _enterpriseAddress(netIdToInt) { + return inpRec => { + return lib.EnterpriseAddress.new( + netIdToInt(inpRec.network), + inpRec.paymentCred + ); + }; +} -exports._rewardAddress = netIdToInt => inpRec => { - return lib.RewardAddress.new(netIdToInt(inpRec.network), inpRec.paymentCred); -}; +export function _rewardAddress(netIdToInt) { + return inpRec => { + return lib.RewardAddress.new(netIdToInt(inpRec.network), inpRec.paymentCred); + }; +} -exports._baseAddress = netIdToInt => inpRec => { - return lib.BaseAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred, - inpRec.delegationCred - ); -}; +export function _baseAddress(netIdToInt) { + return inpRec => { + return lib.BaseAddress.new( + netIdToInt(inpRec.network), + inpRec.paymentCred, + inpRec.delegationCred + ); + }; +} -exports._pointerAddress = netIdToInt => inpRec => { - const p = inpRec.stakePointer; - const pointerForeign = lib.Pointer.new_pointer(p.slot, p.txIx, p.certIx); - return lib.PointerAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred, - pointerForeign - ); -}; +export function _pointerAddress(netIdToInt) { + return inpRec => { + const p = inpRec.stakePointer; + const pointerForeign = lib.Pointer.new_pointer(p.slot, p.txIx, p.certIx); + return lib.PointerAddress.new( + netIdToInt(inpRec.network), + inpRec.paymentCred, + pointerForeign + ); + }; +} diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 130262830..0d58cce2f 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -10,33 +10,46 @@ lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); -exports.newAuxiliaryData = () => lib.AuxiliaryData.new(); - -exports._hashAuxiliaryData = auxiliaryData => - lib.hash_auxiliary_data(auxiliaryData); - -exports.setAuxiliaryDataNativeScripts = setter("native_scripts"); +export function newAuxiliaryData() { + return lib.AuxiliaryData.new(); +} -exports.setAuxiliaryDataPlutusScripts = setter("plutus_scripts"); +export function _hashAuxiliaryData(auxiliaryData) { + return lib.hash_auxiliary_data(auxiliaryData); +} -exports.setAuxiliaryDataGeneralTransactionMetadata = setter("metadata"); +export var setAuxiliaryDataNativeScripts = setter("native_scripts"); +export var setAuxiliaryDataPlutusScripts = setter("plutus_scripts"); +export var setAuxiliaryDataGeneralTransactionMetadata = setter("metadata"); -exports.newGeneralTransactionMetadata = containerHelper => entries => () => - containerHelper.packMap(lib.GeneralTransactionMetadata, entries); +export function newGeneralTransactionMetadata(containerHelper) { + return entries => () => + containerHelper.packMap(lib.GeneralTransactionMetadata, entries); +} -exports.newMetadataMap = containerHelper => entries => () => - lib.TransactionMetadatum.new_map( - containerHelper.packMap(lib.MetadataMap, entries) - ); +export function newMetadataMap(containerHelper) { + return entries => () => + lib.TransactionMetadatum.new_map( + containerHelper.packMap(lib.MetadataMap, entries) + ); +} -exports.newMetadataList = containerHelper => entries => () => - lib.TransactionMetadatum.new_list( - containerHelper.pack(lib.MetadataList, entries) - ); +export function newMetadataList(containerHelper) { + return entries => () => + lib.TransactionMetadatum.new_list( + containerHelper.pack(lib.MetadataList, entries) + ); +} -exports.newMetadataInt = int => () => lib.TransactionMetadatum.new_int(int); +export function newMetadataInt(int) { + return () => lib.TransactionMetadatum.new_int(int); +} -exports.newMetadataBytes = bytes => () => - lib.TransactionMetadatum.new_bytes(bytes); +export function newMetadataBytes(bytes) { + return () => + lib.TransactionMetadatum.new_bytes(bytes); +} -exports.newMetadataText = text => () => lib.TransactionMetadatum.new_text(text); +export function newMetadataText(text) { + return () => lib.TransactionMetadatum.new_text(text); +} diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index 6997bf4af..79f0d2bc8 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -8,10 +8,12 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._BigInt_from_str = helper => str => { - try { - return helper.just(lib.BigInt.from_str(str)); - } catch (_) { - return helper.nothing; - } -}; +export function _BigInt_from_str(helper) { + return str => { + try { + return helper.just(lib.BigInt.from_str(str)); + } catch (_) { + return helper.nothing; + } + }; +} diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 88a7af703..861e937d6 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -8,17 +8,21 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.hashToBytes = hash => { +export function hashToBytes(hash) { return hash.to_bytes(); -}; +} -exports.hashFromBytes = name => maybe => bytes => { - return hashFromImpl(lib[name].from_bytes)(maybe)(bytes); -}; +export function hashFromBytes(name) { + return maybe => bytes => { + return hashFromImpl(lib[name].from_bytes)(maybe)(bytes); + }; +} -exports.hashToBech32Unsafe = prefix => hash => { - return hash.to_bech32(prefix); -}; +export function hashToBech32Unsafe(prefix) { + return hash => { + return hash.to_bech32(prefix); + }; +} const hashFromImpl = hashClassFrom => maybe => input => { let ret = null; @@ -33,25 +37,33 @@ const hashFromImpl = hashClassFrom => maybe => input => { return maybe.just(ret); }; -exports.hashToBech32Impl = maybe => prefix => hash => { - let ret = null; - try { - ret = hash.to_bech32(prefix); - } catch (e) { - // Do nothing - } - if (ret == null) { - return maybe.nothing; - } - return maybe.just(ret); -}; +export function hashToBech32Impl(maybe) { + return prefix => hash => { + let ret = null; + try { + ret = hash.to_bech32(prefix); + } catch (e) { + // Do nothing + } + if (ret == null) { + return maybe.nothing; + } + return maybe.just(ret); + }; +} -exports._ed25519KeyHashFromBech32Impl = maybe => bech32str => { - return hashFromImpl(lib.Ed25519KeyHash.from_bech32)(maybe)(bech32str); -}; +export function _ed25519KeyHashFromBech32Impl(maybe) { + return bech32str => { + return hashFromImpl(lib.Ed25519KeyHash.from_bech32)(maybe)(bech32str); + }; +} -exports._scriptHashFromBech32Impl = maybe => bech32str => { - return hashFromImpl(lib.ScriptHash.from_bech32)(maybe)(bech32str); -}; +export function _scriptHashFromBech32Impl(maybe) { + return bech32str => { + return hashFromImpl(lib.ScriptHash.from_bech32)(maybe)(bech32str); + }; +} -exports.nativeScriptHash = script => script.hash(); +export function nativeScriptHash(script) { + return script.hash(); +} diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js index f15d7dedf..36f6b4a07 100644 --- a/src/Internal/Serialization/Keys.js +++ b/src/Internal/Serialization/Keys.js @@ -2,13 +2,15 @@ const bytesFromKey = key => key.as_bytes(); -exports.bytesFromPublicKey = bytesFromKey; -exports.bytesFromPrivateKey = bytesFromKey; +export {bytesFromKey as bytesFromPublicKey}; +export {bytesFromKey as bytesFromPrivateKey}; -exports.publicKeyFromPrivateKey = private_key => private_key.to_public(); +export function publicKeyFromPrivateKey(private_key) { + return private_key.to_public(); +} const bech32FromX = key => key.to_bech32(); -exports.bech32FromPublicKey = bech32FromX; -exports.bech32FromPrivateKey = bech32FromX; -exports.bech32FromEd25519Signature = bech32FromX; +export {bech32FromX as bech32FromPublicKey}; +export {bech32FromX as bech32FromPrivateKey}; +export {bech32FromX as bech32FromEd25519Signature}; diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index c24676a3a..9733f55ab 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -8,14 +8,18 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._minFee = maybe => tx => txFeeFixed => txFeePerByte => { - try { - const linearFee = lib.LinearFee.new(txFeePerByte, txFeeFixed); - return maybe.just(lib.min_fee(tx, linearFee)); - } catch (_) { - return maybe.nothing; - } -}; +export function _minFee(maybe) { + return tx => txFeeFixed => txFeePerByte => { + try { + const linearFee = lib.LinearFee.new(txFeePerByte, txFeeFixed); + return maybe.just(lib.min_fee(tx, linearFee)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports._minScriptFee = exUnitPrices => tx => - lib.min_script_fee(tx, exUnitPrices); +export function _minScriptFee(exUnitPrices) { + return tx => + lib.min_script_fee(tx, exUnitPrices); +} diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index ea4f798a5..f4fa1fb42 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -10,17 +10,38 @@ lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); const mkScript = prop => arg => lib.NativeScript[prop](arg); -exports.mkScriptPubkey = keyHash => lib.ScriptPubkey.new(keyHash); -exports.nativeScript_new_script_pubkey = mkScript("new_script_pubkey"); -exports.nativeScript_new_script_all = mkScript("new_script_all"); -exports.nativeScript_new_script_any = mkScript("new_script_any"); -exports.nativeScript_new_script_n_of_k = mkScript("new_script_n_of_k"); -exports.nativeScript_new_timelock_start = mkScript("new_timelock_start"); -exports.nativeScript_new_timelock_expiry = mkScript("new_timelock_expiry"); -exports._packNativeScripts = helper => nss => - helper.pack(lib.NativeScripts, nss); -exports.mkScriptAll = nss => lib.ScriptAll.new(nss); -exports.mkScriptAny = nss => lib.ScriptAny.new(nss); -exports.mkScriptNOfK = n => nss => lib.ScriptNOfK.new(n, nss); -exports.mkTimelockExpiry = n => lib.TimelockExpiry.new_timelockexpiry(n); -exports.mkTimelockStart = n => lib.TimelockStart.new_timelockstart(n); +export function mkScriptPubkey(keyHash) { + return lib.ScriptPubkey.new(keyHash); +} + +export var nativeScript_new_script_pubkey = mkScript("new_script_pubkey"); +export var nativeScript_new_script_all = mkScript("new_script_all"); +export var nativeScript_new_script_any = mkScript("new_script_any"); +export var nativeScript_new_script_n_of_k = mkScript("new_script_n_of_k"); +export var nativeScript_new_timelock_start = mkScript("new_timelock_start"); +export var nativeScript_new_timelock_expiry = mkScript("new_timelock_expiry"); + +export function _packNativeScripts(helper) { + return nss => + helper.pack(lib.NativeScripts, nss); +} + +export function mkScriptAll(nss) { + return lib.ScriptAll.new(nss); +} + +export function mkScriptAny(nss) { + return lib.ScriptAny.new(nss); +} + +export function mkScriptNOfK(n) { + return nss => lib.ScriptNOfK.new(n, nss); +} + +export function mkTimelockExpiry(n) { + return lib.TimelockExpiry.new_timelockexpiry(n); +} + +export function mkTimelockStart(n) { + return lib.TimelockStart.new_timelockstart(n); +} diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 580cdcfdd..abe7cc793 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -8,29 +8,51 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports._mkPlutusData_bytes = bytes => lib.PlutusData.new_bytes(bytes); -exports._mkPlutusData_list = list => lib.PlutusData.new_list(list); -exports._mkPlutusData_map = list => lib.PlutusData.new_map(list); -exports._mkPlutusData_integer = int => lib.PlutusData.new_integer(int); -exports._mkPlutusData_constr = constr => - lib.PlutusData.new_constr_plutus_data(constr); - -exports._packPlutusList = containerHelper => elems => - containerHelper.pack(lib.PlutusList, elems); -exports._mkConstrPlutusData = n => list => lib.ConstrPlutusData.new(n, list); - -exports._bigIntFromString = maybe => str => { - try { - return maybe.just(lib.BigInt.from_str(str)); - } catch (_) { - return maybe.nothing; - } -}; - -exports._packMap = first => second => kvs => { - const res = lib.PlutusMap.new(); - for (let kv of kvs) { - res.insert(first(kv), second(kv)); - } - return res; -}; +export function _mkPlutusData_bytes(bytes) { + return lib.PlutusData.new_bytes(bytes); +} + +export function _mkPlutusData_list(list) { + return lib.PlutusData.new_list(list); +} + +export function _mkPlutusData_map(list) { + return lib.PlutusData.new_map(list); +} + +export function _mkPlutusData_integer(int) { + return lib.PlutusData.new_integer(int); +} + +export function _mkPlutusData_constr(constr) { + return lib.PlutusData.new_constr_plutus_data(constr); +} + +export function _packPlutusList(containerHelper) { + return elems => + containerHelper.pack(lib.PlutusList, elems); +} + +export function _mkConstrPlutusData(n) { + return list => lib.ConstrPlutusData.new(n, list); +} + +export function _bigIntFromString(maybe) { + return str => { + try { + return maybe.just(lib.BigInt.from_str(str)); + } catch (_) { + return maybe.nothing; + } + }; +} + +export function _packMap(first) { + return second => kvs => { + const res = lib.PlutusMap.new(); + for (let kv of kvs) { + res.insert(first(kv), second(kv)); + } + return res; + }; +} diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index af3c7ec8c..607f6575e 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -8,8 +8,14 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.newPlutusV1Script = bytes => lib.PlutusScript.new(bytes); +export function newPlutusV1Script(bytes) { + return lib.PlutusScript.new(bytes); +} -exports.newPlutusV2Script = bytes => lib.PlutusScript.new_v2(bytes); +export function newPlutusV2Script(bytes) { + return lib.PlutusScript.new_v2(bytes); +} -exports.plutusScriptBytes = script => script.bytes(); +export function plutusScriptBytes(script) { + return script.bytes(); +} diff --git a/src/Internal/Serialization/ToBytes.js b/src/Internal/Serialization/ToBytes.js index 6107d0d2a..7ec989fca 100644 --- a/src/Internal/Serialization/ToBytes.js +++ b/src/Internal/Serialization/ToBytes.js @@ -1 +1,3 @@ -exports._toBytes = sth => sth.to_bytes(); +export function _toBytes(sth) { + return sth.to_bytes(); +} diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 8596ffc6a..8394a1ad5 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -8,55 +8,94 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.newTransactionWitnessSet = () => lib.TransactionWitnessSet.new(); +export function newTransactionWitnessSet() { + return lib.TransactionWitnessSet.new(); +} -exports.newPublicKey = bech32 => () => lib.PublicKey.from_bech32(bech32); +export function newPublicKey(bech32) { + return () => lib.PublicKey.from_bech32(bech32); +} -exports.newVkeyFromPublicKey = public_key => () => lib.Vkey.new(public_key); +export function newVkeyFromPublicKey(public_key) { + return () => lib.Vkey.new(public_key); +} -exports.newVkeywitnesses = () => lib.Vkeywitnesses.new(); +export function newVkeywitnesses() { + return lib.Vkeywitnesses.new(); +} -exports.newVkeywitness = vkey => signature => () => - lib.Vkeywitness.new(vkey, signature); +export function newVkeywitness(vkey) { + return signature => () => + lib.Vkeywitness.new(vkey, signature); +} -exports.addVkeywitness = witnesses => witness => () => witnesses.add(witness); +export function addVkeywitness(witnesses) { + return witness => () => witnesses.add(witness); +} -exports.newPlutusScripts = () => lib.PlutusScripts.new(); +export function newPlutusScripts() { + return lib.PlutusScripts.new(); +} -exports.addPlutusScript = scripts => script => () => scripts.add(script); +export function addPlutusScript(scripts) { + return script => () => scripts.add(script); +} -exports.transactionWitnessSetSetVkeys = ws => vkeys => () => - ws.set_vkeys(vkeys); +export function transactionWitnessSetSetVkeys(ws) { + return vkeys => () => + ws.set_vkeys(vkeys); +} -exports.txWitnessSetSetPlutusScripts = ws => scripts => () => - ws.set_plutus_scripts(scripts); +export function txWitnessSetSetPlutusScripts(ws) { + return scripts => () => + ws.set_plutus_scripts(scripts); +} -exports.transactionWitnessSetSetNativeScripts = ws => scripts => () => - ws.set_native_scripts(scripts); +export function transactionWitnessSetSetNativeScripts(ws) { + return scripts => () => + ws.set_native_scripts(scripts); +} -exports._wsSetBootstraps = helper => ws => bootstraps => () => - ws.set_bootstraps(helper.pack(lib.BootstrapWitnesses, bootstraps)); +export function _wsSetBootstraps(helper) { + return ws => bootstraps => () => + ws.set_bootstraps(helper.pack(lib.BootstrapWitnesses, bootstraps)); +} -exports.newBootstrapWitness = - vkey => signature => chain_code => attributes => () => { +export function newBootstrapWitness(vkey) { + return signature => chain_code => attributes => () => { lib.BootstrapWitness.new(vkey, signature, chain_code, attributes); }; +} -exports._wsSetPlutusData = helper => ws => plutus_data => () => - ws.set_plutus_data(helper.pack(lib.PlutusList, plutus_data)); +export function _wsSetPlutusData(helper) { + return ws => plutus_data => () => + ws.set_plutus_data(helper.pack(lib.PlutusList, plutus_data)); +} -exports.newRedeemer = tag => index => data => ex_units => () => - lib.Redeemer.new(tag, index, data, ex_units); +export function newRedeemer(tag) { + return index => data => ex_units => () => + lib.Redeemer.new(tag, index, data, ex_units); +} -exports._newRedeemerTag = tag => () => lib.RedeemerTag["new_" + tag](); +export function _newRedeemerTag(tag) { + return () => lib.RedeemerTag["new_" + tag](); +} -exports.newExUnits = mem => steps => lib.ExUnits.new(mem, steps); +export function newExUnits(mem) { + return steps => lib.ExUnits.new(mem, steps); +} -exports._wsSetRedeemers = helper => ws => redeemers => () => - ws.set_redeemers(helper.pack(lib.Redeemers, redeemers)); +export function _wsSetRedeemers(helper) { + return ws => redeemers => () => + ws.set_redeemers(helper.pack(lib.Redeemers, redeemers)); +} -exports._mkRedeemers = helper => redeemers => - helper.pack(lib.Redeemers, redeemers); +export function _mkRedeemers(helper) { + return redeemers => + helper.pack(lib.Redeemers, redeemers); +} -exports._wsSetPlutusScripts = helper => ws => scripts => () => - ws.set_plutus_scripts(helper.pack(lib.PlutusScripts, scripts)); +export function _wsSetPlutusScripts(helper) { + return ws => scripts => () => + ws.set_plutus_scripts(helper.pack(lib.PlutusScripts, scripts)); +} diff --git a/src/Internal/Test/E2E/Feedback.js b/src/Internal/Test/E2E/Feedback.js index a78681ce1..00ce74f53 100644 --- a/src/Internal/Test/E2E/Feedback.js +++ b/src/Internal/Test/E2E/Feedback.js @@ -1 +1,3 @@ -exports._publishTestFeedback = value => () => (window.ctlTestFeedback = value); +export function _publishTestFeedback(value) { + return () => (window.ctlTestFeedback = value); +} diff --git a/src/Internal/Test/E2E/Feedback/Browser.js b/src/Internal/Test/E2E/Feedback/Browser.js index 6137ec57a..6968cee19 100644 --- a/src/Internal/Test/E2E/Feedback/Browser.js +++ b/src/Internal/Test/E2E/Feedback/Browser.js @@ -1,11 +1,15 @@ -exports._pushBrowserEvent = message => () => { - if (typeof window.ctlE2ECommunications != "object") { - window.ctlE2ECommunications = []; - } - window.ctlE2ECommunications.push(message); -}; +export function _pushBrowserEvent(message) { + return () => { + if (typeof window.ctlE2ECommunications != "object") { + window.ctlE2ECommunications = []; + } + window.ctlE2ECommunications.push(message); + }; +} -exports._getClusterSetup = maybe => () => - window.ctlE2EClusterSetup - ? maybe.just(window.ctlE2EClusterSetup) - : maybe.nothing; +export function _getClusterSetup(maybe) { + return () => + window.ctlE2EClusterSetup + ? maybe.just(window.ctlE2EClusterSetup) + : maybe.nothing; +} diff --git a/src/Internal/Test/E2E/Route.js b/src/Internal/Test/E2E/Route.js index 7d827c8de..cf7c28ae2 100644 --- a/src/Internal/Test/E2E/Route.js +++ b/src/Internal/Test/E2E/Route.js @@ -1,69 +1,75 @@ -exports._queryString = () => window.location.search; +export function _queryString() { + return window.location.search; +} const createLink = (example, wallet) => '' + wallet + ""; -exports._writeExampleHTML = example => wallets => () => { - const ul = document.getElementById("examples"); - const li = document.createElement("li"); - li.innerHTML = `${example}: ${wallets - .map(w => createLink(example, w)) - .join(" ")}`; - ul.appendChild(li); -}; +export function _writeExampleHTML(example) { + return wallets => () => { + const ul = document.getElementById("examples"); + const li = document.createElement("li"); + li.innerHTML = `${example}: ${wallets + .map(w => createLink(example, w)) + .join(" ")}`; + ul.appendChild(li); + }; +} -exports._addLinks = configs => tests => () => { - const configSelectEl = document.createElement("select"); - const testNameSelectEl = document.createElement("select"); - const linkEl = document.createElement("a"); - linkEl.textContent = "➡ RUN EXAMPLE"; +export function _addLinks(configs) { + return tests => () => { + const configSelectEl = document.createElement("select"); + const testNameSelectEl = document.createElement("select"); + const linkEl = document.createElement("a"); + linkEl.textContent = "➡ RUN EXAMPLE"; - const h1El = document.createElement("h3"); - h1El.textContent = "Example runner"; + const h1El = document.createElement("h3"); + h1El.textContent = "Example runner"; - const selectEnvironmentEl = document.createElement("span"); - selectEnvironmentEl.textContent = "Environment: "; + const selectEnvironmentEl = document.createElement("span"); + selectEnvironmentEl.textContent = "Environment: "; - const selectExampleEl = document.createElement("span"); - selectExampleEl.textContent = "Example: "; + const selectExampleEl = document.createElement("span"); + selectExampleEl.textContent = "Example: "; - document.body.appendChild(h1El); - document.body.appendChild(selectEnvironmentEl); + document.body.appendChild(h1El); + document.body.appendChild(selectEnvironmentEl); - const updateUrl = () => { - linkEl.href = "?" + configSelectEl.value + ":" + testNameSelectEl.value; - }; + const updateUrl = () => { + linkEl.href = "?" + configSelectEl.value + ":" + testNameSelectEl.value; + }; - configs.forEach((config, ix) => { - const optionEl = document.createElement("option"); - optionEl.textContent = config; - optionEl.value = config; - configSelectEl.appendChild(optionEl); - if (document.location.search.startsWith("?" + config + ":")) { - configSelectEl.selectedIndex = ix; - } - }); - document.body.appendChild(configSelectEl); - document.body.appendChild(document.createElement("br")); + configs.forEach((config, ix) => { + const optionEl = document.createElement("option"); + optionEl.textContent = config; + optionEl.value = config; + configSelectEl.appendChild(optionEl); + if (document.location.search.startsWith("?" + config + ":")) { + configSelectEl.selectedIndex = ix; + } + }); + document.body.appendChild(configSelectEl); + document.body.appendChild(document.createElement("br")); - document.body.appendChild(selectExampleEl); + document.body.appendChild(selectExampleEl); - tests.forEach((test, ix) => { - const optionEl = document.createElement("option"); - optionEl.textContent = test; - optionEl.value = test; - testNameSelectEl.appendChild(optionEl); - if (document.location.search.endsWith(":" + test)) { - testNameSelectEl.selectedIndex = ix; - } - }); - document.body.appendChild(testNameSelectEl); + tests.forEach((test, ix) => { + const optionEl = document.createElement("option"); + optionEl.textContent = test; + optionEl.value = test; + testNameSelectEl.appendChild(optionEl); + if (document.location.search.endsWith(":" + test)) { + testNameSelectEl.selectedIndex = ix; + } + }); + document.body.appendChild(testNameSelectEl); - updateUrl(); - document.body.appendChild(document.createElement("br")); + updateUrl(); + document.body.appendChild(document.createElement("br")); - document.body.appendChild(linkEl); + document.body.appendChild(linkEl); - configSelectEl.onchange = updateUrl; - testNameSelectEl.onchange = updateUrl; -}; + configSelectEl.onchange = updateUrl; + testNameSelectEl.onchange = updateUrl; + }; +} diff --git a/src/Internal/Test/E2E/Runner.js b/src/Internal/Test/E2E/Runner.js index 58ca7ffd5..0e57d9e2d 100644 --- a/src/Internal/Test/E2E/Runner.js +++ b/src/Internal/Test/E2E/Runner.js @@ -1,9 +1,11 @@ -exports._retrieveJQuery = page => () => - page.evaluate(() => - window - .fetch( - "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" - ) - .then(res => res.text()) - .catch(_ => "") - ); +export function _retrieveJQuery(page) { + return () => + page.evaluate(() => + window + .fetch( + "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" + ) + .then(res => res.text()) + .catch(_ => "") + ); +} diff --git a/src/Internal/Test/E2E/Wallets.js b/src/Internal/Test/E2E/Wallets.js index db78ffc21..a01ba8313 100644 --- a/src/Internal/Test/E2E/Wallets.js +++ b/src/Internal/Test/E2E/Wallets.js @@ -1,4 +1,8 @@ -exports._typeInto = selector => text => page => () => - page.focus(selector).then(() => page.keyboard.type(text)); +export function _typeInto(selector) { + return text => page => () => + page.focus(selector).then(() => page.keyboard.type(text)); +} -exports.pageUrl = page => () => page.url(); +export function pageUrl(page) { + return () => page.url(); +} diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 70ba1439b..da69caf7f 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -8,34 +8,43 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.bnCompare = lhs => rhs => lhs.compare(rhs); - -exports.zero = lib.BigNum.zero(); - -exports.one = lib.BigNum.one(); +export function bnCompare(lhs) { + return rhs => lhs.compare(rhs); +} -exports.bnAdd = maybe => lhs => rhs => { - try { - return maybe.just(lhs.checked_add(rhs)); - } catch (_) { - return maybe.nothing; - } -}; +export var zero = lib.BigNum.zero(); +export var one = lib.BigNum.one(); + +export function bnAdd(maybe) { + return lhs => rhs => { + try { + return maybe.just(lhs.checked_add(rhs)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports.bnMul = maybe => lhs => rhs => { - try { - return maybe.just(lhs.checked_mul(rhs)); - } catch (_) { - return maybe.nothing; - } -}; +export function bnMul(maybe) { + return lhs => rhs => { + try { + return maybe.just(lhs.checked_mul(rhs)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports._fromString = maybe => str => { - try { - return maybe.just(lib.BigNum.from_str(str)); - } catch (_) { - return maybe.nothing; - } -}; +export function _fromString(maybe) { + return str => { + try { + return maybe.just(lib.BigNum.from_str(str)); + } catch (_) { + return maybe.nothing; + } + }; +} -exports.toString = bn => bn.to_str(); +export function toString(bn) { + return bn.to_str(); +} diff --git a/src/Internal/Types/ByteArray.js b/src/Internal/Types/ByteArray.js index 8f204f55a..09bf1f2b1 100644 --- a/src/Internal/Types/ByteArray.js +++ b/src/Internal/Types/ByteArray.js @@ -1,36 +1,42 @@ // From instance for Array in prelude -exports.ord_ = f => xs => ys => { - let i = 0; - const xlen = xs.length; - const ylen = ys.length; - while (i < xlen && i < ylen) { - let o = f(xs[i])(ys[i]); - if (o !== 0) { - return o; +export function ord_(f) { + return xs => ys => { + let i = 0; + const xlen = xs.length; + const ylen = ys.length; + while (i < xlen && i < ylen) { + let o = f(xs[i])(ys[i]); + if (o !== 0) { + return o; + } + i++; } - i++; - } - if (xlen === ylen) { - return 0; - } else if (xlen > ylen) { - return -1; - } else { - return 1; - } -}; + if (xlen === ylen) { + return 0; + } else if (xlen > ylen) { + return -1; + } else { + return 1; + } + }; +} -exports.concat_ = xs => ys => { - const res = new Uint8Array(xs.length + ys.length); - for (let i = 0; i < xs.length; i++) { - res[i] = xs[i]; - } - for (let i = 0; i < ys.length; i++) { - res[i + xs.length] = ys[i]; - } - return res; -}; +export function concat_(xs) { + return ys => { + const res = new Uint8Array(xs.length + ys.length); + for (let i = 0; i < xs.length; i++) { + res[i] = xs[i]; + } + for (let i = 0; i < ys.length; i++) { + res[i + xs.length] = ys[i]; + } + return res; + }; +} -exports.byteArrayToHex = arr => Buffer.from(arr).toString("hex"); +export function byteArrayToHex(arr) { + return Buffer.from(arr).toString("hex"); +} /* adapted from https://github.com/WebReflection/uint8-to-utf16/blob/master/esm/index.js * (someone who knows javascript should like import that or something) @@ -38,7 +44,7 @@ exports.byteArrayToHex = arr => Buffer.from(arr).toString("hex"); const { ceil } = Math; const { fromCharCode } = String; -exports.byteArrayToUTF16le = uint8array => { +export function byteArrayToUTF16le(uint8array) { let extra = 0; const output = []; const { length } = uint8array; @@ -51,44 +57,57 @@ exports.byteArrayToUTF16le = uint8array => { ); output.push(fromCharCode(extra)); return output.join(""); -}; +} -exports.hexToByteArray_ = nothing => just => hex => { - let bytes = []; - for (let c = 0; c < hex.length; c += 2) { - const chunk = hex.substr(c, 2); - if (/[0-9a-f]{2}/i.test(chunk)) { - bytes.push(parseInt(chunk, 16)); - } else { - return nothing; +export function hexToByteArray_(nothing) { + return just => hex => { + let bytes = []; + for (let c = 0; c < hex.length; c += 2) { + const chunk = hex.substr(c, 2); + if (/[0-9a-f]{2}/i.test(chunk)) { + bytes.push(parseInt(chunk, 16)); + } else { + return nothing; + } } - } - return just(new Uint8Array(bytes)); -}; + return just(new Uint8Array(bytes)); + }; +} -exports.hexToByteArrayUnsafe = hex => { +export function hexToByteArrayUnsafe(hex) { let bytes = []; for (let c = 0; c < hex.length; c += 2) { bytes.push(parseInt(hex.substr(c, 2), 16)); } return new Uint8Array(bytes); -}; +} -exports.byteArrayFromIntArrayUnsafe = ints => new Uint8Array(ints); +export function byteArrayFromIntArrayUnsafe(ints) { + return new Uint8Array(ints); +} -exports.byteArrayFromInt16ArrayUnsafe = ints => - new Uint8Array(ints.buffer, ints.byteOffset, ints.byteLength); +export function byteArrayFromInt16ArrayUnsafe(ints) { + return new Uint8Array(ints.buffer, ints.byteOffset, ints.byteLength); +} -exports.byteArrayFromIntArray_ = nothing => just => ints => { - if (ints.every(i => i < 256 && i >= 0)) { - return just(new Uint8Array(ints)); - } else { - return nothing; - } -}; +export function byteArrayFromIntArray_(nothing) { + return just => ints => { + if (ints.every(i => i < 256 && i >= 0)) { + return just(new Uint8Array(ints)); + } else { + return nothing; + } + }; +} -exports.byteArrayToIntArray = bytes => Array.from(bytes); +export function byteArrayToIntArray(bytes) { + return Array.from(bytes); +} -exports.byteLength = bytes => bytes.byteLength; +export function byteLength(bytes) { + return bytes.byteLength; +} -exports.subarray = start => end => bytes => bytes.subarray(start, end); +export function subarray(start) { + return end => bytes => bytes.subarray(start, end); +} diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index 301a3d772..fe21eb664 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -8,6 +8,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -exports.newPositive = lib.Int.new; -exports.newNegative = lib.Int.new_negative; -exports._intToStr = n => n.to_str(); +export var newPositive = lib.Int.new; +export var newNegative = lib.Int.new_negative; + +export function _intToStr(n) { + return n.to_str(); +} diff --git a/src/Internal/Types/TokenName.js b/src/Internal/Types/TokenName.js index 24e44f82c..8f1b9c785 100644 --- a/src/Internal/Types/TokenName.js +++ b/src/Internal/Types/TokenName.js @@ -8,16 +8,18 @@ if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { OurTextDecoder = TextDecoder; } -exports._decodeUtf8 = buffer => left => right => { - let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails +export function _decodeUtf8(buffer) { + return left => right => { + let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails - try { - return right(decoder.decode(buffer)); - } catch (err) { - return left(err.toString()); - } -}; + try { + return right(decoder.decode(buffer)); + } catch (err) { + return left(err.toString()); + } + }; +} // FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/548 const call = property => object => object[property](); -exports.assetNameName = call("name"); +export var assetNameName = call("name"); diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 851fceb14..ea7d712c4 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -40,7 +40,7 @@ const enableWallet = wallet => () => { } }; -exports._enableWallet = enableWallet; +export {enableWallet as _enableWallet}; const isWalletAvailable = walletName => () => { checkNotNode(); @@ -51,36 +51,44 @@ const isWalletAvailable = walletName => () => { ); }; -exports._isWalletAvailable = isWalletAvailable; +export {isWalletAvailable as _isWalletAvailable}; -exports._isEnabled = walletName => () => { - if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].isEnabled(); - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } -}; +export function _isEnabled(walletName) { + return () => { + if (isWalletAvailable(walletName)()) { + return window.cardano[walletName].isEnabled(); + } else { + throw new Error("Wallet `" + walletName + "` is not available"); + } + }; +} -exports._apiVersion = walletName => () => { - if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].apiVersion; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } -}; +export function _apiVersion(walletName) { + return () => { + if (isWalletAvailable(walletName)()) { + return window.cardano[walletName].apiVersion; + } else { + throw new Error("Wallet `" + walletName + "` is not available"); + } + }; +} -exports._name = walletName => () => { - if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].name; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } -}; +export function _name(walletName) { + return () => { + if (isWalletAvailable(walletName)()) { + return window.cardano[walletName].name; + } else { + throw new Error("Wallet `" + walletName + "` is not available"); + } + }; +} -exports._icon = walletName => () => { - if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].icon; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } -}; +export function _icon(walletName) { + return () => { + if (isWalletAvailable(walletName)()) { + return window.cardano[walletName].icon; + } else { + throw new Error("Wallet `" + walletName + "` is not available"); + } + }; +} diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 3a5cb5387..bdff56d6a 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -7,26 +7,32 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = require("@emurgo/cardano-serialization-lib-nodejs"); } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -const bip39 = require("bip39"); +import bip39 from "bip39"; const HARDENED = 0x80000000; -exports._bip32PrivateKeyFromMnemonic = left => right => phrase => { - try { - return right( - lib.Bip32PrivateKey.from_bip39_entropy( - Uint8Array.from( - Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") - ), - new Uint8Array() // passphrase (not currently implemented) - ) - ); - } catch (e) { - return left(e.toString()); - } -}; +export function _bip32PrivateKeyFromMnemonic(left) { + return right => phrase => { + try { + return right( + lib.Bip32PrivateKey.from_bip39_entropy( + Uint8Array.from( + Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") + ), + new Uint8Array() // passphrase (not currently implemented) + ) + ); + } catch (e) { + return left(e.toString()); + } + }; +} -exports.bip32ToPrivateKey = privateKey => privateKey.to_raw_key(); +export function bip32ToPrivateKey(privateKey) { + return privateKey.to_raw_key(); +} -exports.derivePrivateKey = path => hardened => privateKey => - privateKey.derive(path | (hardened ? HARDENED : 0)); +export function derivePrivateKey(path) { + return hardened => privateKey => + privateKey.derive(path | (hardened ? HARDENED : 0)); +} diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index 7414ae307..efd296d2e 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -1,33 +1,53 @@ /* global BROWSER_RUNTIME */ -exports._getNetworkId = conn => () => conn.getNetworkId(); - -exports._getUtxos = maybe => conn => () => - conn.getUtxos().then(res => (res === null ? maybe.nothing : maybe.just(res))); - -exports._getCollateral = maybe => conn => () => - conn.experimental - .getCollateral() - .then(utxos => - utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing - ); - -exports._getBalance = conn => () => conn.getBalance(); - -exports._getAddresses = conn => conn.getUsedAddresses; - -exports._getUnusedAddresses = conn => () => conn.getUnusedAddresses(); - -exports._getChangeAddress = conn => () => conn.getChangeAddress(); - -exports._getRewardAddresses = conn => () => conn.getRewardAddresses(); - -exports._signTx = txHex => conn => () => - conn.signTx(txHex, true).catch(e => { - throw JSON.stringify(e); - }); - -exports._signData = address => payload => conn => () => - conn.signData(address, payload).catch(e => { - throw JSON.stringify(e); - }); +export function _getNetworkId(conn) { + return () => conn.getNetworkId(); +} + +export function _getUtxos(maybe) { + return conn => () => + conn.getUtxos().then(res => (res === null ? maybe.nothing : maybe.just(res))); +} + +export function _getCollateral(maybe) { + return conn => () => + conn.experimental + .getCollateral() + .then(utxos => + utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing + ); +} + +export function _getBalance(conn) { + return () => conn.getBalance(); +} + +export function _getAddresses(conn) { + return conn.getUsedAddresses; +} + +export function _getUnusedAddresses(conn) { + return () => conn.getUnusedAddresses(); +} + +export function _getChangeAddress(conn) { + return () => conn.getChangeAddress(); +} + +export function _getRewardAddresses(conn) { + return () => conn.getRewardAddresses(); +} + +export function _signTx(txHex) { + return conn => () => + conn.signTx(txHex, true).catch(e => { + throw JSON.stringify(e); + }); +} + +export function _signData(address) { + return payload => conn => () => + conn.signData(address, payload).catch(e => { + throw JSON.stringify(e); + }); +} diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js index 79e1dab9f..7cc4117b8 100644 --- a/src/Internal/Wallet/Cip30/SignData.js +++ b/src/Internal/Wallet/Cip30/SignData.js @@ -12,100 +12,120 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { // ----------------------------------------------------------------------------- // newCoseSign1Builder :: ByteArray -> Headers -> Effect COSESign1Builder -exports.newCoseSign1Builder = payload => headers => () => { - return lib.COSESign1Builder.new(headers, payload, false); -}; +export function newCoseSign1Builder(payload) { + return headers => () => { + return lib.COSESign1Builder.new(headers, payload, false); + }; +} // makeDataToSign :: COSESign1Builder -> ByteArray -exports.makeDataToSign = builder => { +export function makeDataToSign(builder) { return builder.make_data_to_sign().to_bytes(); -}; +} // sign :: PrivateKey -> ByteArray -> ByteArray -exports.sign = privateKey => message => { - return privateKey.sign(message).to_bytes(); -}; +export function sign(privateKey) { + return message => { + return privateKey.sign(message).to_bytes(); + }; +} // buildSignature :: COSESign1Builder -> ByteArray -> ByteArray -exports.buildSignature = builder => signedSigStruct => { - return builder.build(signedSigStruct).to_bytes(); -}; +export function buildSignature(builder) { + return signedSigStruct => { + return builder.build(signedSigStruct).to_bytes(); + }; +} // ----------------------------------------------------------------------------- // Headers // ----------------------------------------------------------------------------- // newHeaders :: HeaderMap -> ProtectedHeaderMap -> Headers -exports.newHeaders = unprotectedHeaders => protectedHeaders => { - return lib.Headers.new(protectedHeaders, unprotectedHeaders); -}; +export function newHeaders(unprotectedHeaders) { + return protectedHeaders => { + return lib.Headers.new(protectedHeaders, unprotectedHeaders); + }; +} // ----------------------------------------------------------------------------- // ProtectedHeaderMap // ----------------------------------------------------------------------------- // newProtectedHeaderMap :: HeaderMap -> ProtectedHeaderMap -exports.newProtectedHeaderMap = headerMap => { +export function newProtectedHeaderMap(headerMap) { return lib.ProtectedHeaderMap.new(headerMap); -}; +} // ----------------------------------------------------------------------------- // HeaderMap // ----------------------------------------------------------------------------- // newHeaderMap :: Effect HeaderMap -exports.newHeaderMap = () => { +export function newHeaderMap() { return lib.HeaderMap.new(); -}; +} // setAlgHeaderToEdDsa :: HeaderMap -> Effect Unit -exports.setAlgHeaderToEdDsa = headerMap => () => { - const label = lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA); - headerMap.set_algorithm_id(label); -}; +export function setAlgHeaderToEdDsa(headerMap) { + return () => { + const label = lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA); + headerMap.set_algorithm_id(label); + }; +} // setAddressHeader :: ByteArray -> HeaderMap -> Effect Unit -exports.setAddressHeader = addressBytes => headerMap => () => { - const label = lib.Label.new_text("address"); - const value = lib.CBORValue.new_bytes(addressBytes); - headerMap.set_header(label, value); -}; +export function setAddressHeader(addressBytes) { + return headerMap => () => { + const label = lib.Label.new_text("address"); + const value = lib.CBORValue.new_bytes(addressBytes); + headerMap.set_header(label, value); + }; +} // ----------------------------------------------------------------------------- // COSEKey // ----------------------------------------------------------------------------- // newCoseKeyWithOkpType :: Effect COSEKey -exports.newCoseKeyWithOkpType = () => { +export function newCoseKeyWithOkpType() { return lib.COSEKey.new(lib.Label.from_key_type(lib.KeyType.OKP)); -}; +} // setCoseKeyAlgHeaderToEdDsa :: COSEKey -> Effect Unit -exports.setCoseKeyAlgHeaderToEdDsa = key => () => { - key.set_algorithm_id(lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA)); -}; +export function setCoseKeyAlgHeaderToEdDsa(key) { + return () => { + key.set_algorithm_id(lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA)); + }; +} // setCoseKeyCrvHeaderToEd25519 :: COSEKey -> Effect Unit -exports.setCoseKeyCrvHeaderToEd25519 = key => () => { - key.set_header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) - ), - lib.CBORValue.new_int( - lib.Int.new_i32(6) // Ed25519 (6) - ) - ); -}; +export function setCoseKeyCrvHeaderToEd25519(key) { + return () => { + key.set_header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) + ), + lib.CBORValue.new_int( + lib.Int.new_i32(6) // Ed25519 (6) + ) + ); + }; +} // setCoseKeyXHeader :: RawBytes -> COSEKey -> Effect Unit -exports.setCoseKeyXHeader = publicKeyBytes => key => () => { - key.set_header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) - ), - lib.CBORValue.new_bytes(publicKeyBytes) // public key bytes - ); -}; +export function setCoseKeyXHeader(publicKeyBytes) { + return key => () => { + key.set_header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) + ), + lib.CBORValue.new_bytes(publicKeyBytes) // public key bytes + ); + }; +} // bytesFromCoseKey :: COSEKey -> CborBytes -exports.bytesFromCoseKey = key => key.to_bytes(); +export function bytesFromCoseKey(key) { + return key.to_bytes(); +} diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index 4b62dab59..a92d55cb8 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -1,51 +1,53 @@ /* eslint-disable no-global-assign */ -exports.injectCip30Mock = walletName => mock => () => { - const hadWindow = typeof window != "undefined"; +export function injectCip30Mock(walletName) { + return mock => () => { + const hadWindow = typeof window != "undefined"; - if ( - typeof window == "object" && - typeof window.cardano == "object" && - typeof window.cardano[walletName] != "undefined" - ) { - throw ( - "injectCip30Mock: refusing to overwrite existing wallet (" + - walletName + - ")" - ); - } - - if (typeof window == "undefined") { - window = { cardano: {} }; - } else if (typeof window.cardano == "undefined") { - window.cardano = {}; - } - - window.cardano[walletName] = { - enable: () => { - return new Promise((resolve, _reject) => - resolve({ - getNetworkId: mock.getNetworkId, - getUtxos: mock.getUtxos, - experimental: { - getCollateral: mock.getCollateral, - }, - getBalance: mock.getBalance, - getUsedAddresses: mock.getUsedAddresses, - getUnusedAddresses: mock.getUnusedAddresses, - getChangeAddress: mock.getChangeAddress, - getRewardAddresses: mock.getRewardAddresses, - signTx: mock.signTx, - signData: mock.signData, - }) + if ( + typeof window == "object" && + typeof window.cardano == "object" && + typeof window.cardano[walletName] != "undefined" + ) { + throw ( + "injectCip30Mock: refusing to overwrite existing wallet (" + + walletName + + ")" ); - }, - }; + } - return () => { - delete window.cardano[walletName]; - if (!hadWindow) { - window = undefined; + if (typeof window == "undefined") { + window = { cardano: {} }; + } else if (typeof window.cardano == "undefined") { + window.cardano = {}; } + + window.cardano[walletName] = { + enable: () => { + return new Promise((resolve, _reject) => + resolve({ + getNetworkId: mock.getNetworkId, + getUtxos: mock.getUtxos, + experimental: { + getCollateral: mock.getCollateral, + }, + getBalance: mock.getBalance, + getUsedAddresses: mock.getUsedAddresses, + getUnusedAddresses: mock.getUnusedAddresses, + getChangeAddress: mock.getChangeAddress, + getRewardAddresses: mock.getRewardAddresses, + signTx: mock.signTx, + signData: mock.signData, + }) + ); + }, + }; + + return () => { + delete window.cardano[walletName]; + if (!hadWindow) { + window = undefined; + } + }; }; -}; +} diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js index b3ec19246..cd7684ad2 100644 --- a/test/ApplyArgs.js +++ b/test/ApplyArgs.js @@ -164,4 +164,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -exports.scripts = scripts; +export {scripts}; diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 69ce9d44b..33b62a195 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -33,22 +33,26 @@ const fromBytes = name => bytes => () => { // ----------------------------------------------------------------------------- // verifySignature :: COSESign1 -> PublicKey -> CborBytes -> Effect Boolean -exports.verifySignature = coseSign1 => publicKey => sigStructBytes => () => { - const signature = csl.Ed25519Signature.from_bytes(coseSign1.signature()); - return publicKey.verify(sigStructBytes, signature); -}; +export function verifySignature(coseSign1) { + return publicKey => sigStructBytes => () => { + const signature = csl.Ed25519Signature.from_bytes(coseSign1.signature()); + return publicKey.verify(sigStructBytes, signature); + }; +} // ----------------------------------------------------------------------------- // COSESign1 // ----------------------------------------------------------------------------- // _fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 -exports.fromBytesCoseSign1 = fromBytes("COSESign1"); +export var fromBytesCoseSign1 = fromBytes("COSESign1"); // getSignedData :: COSESign1 -> Effect CborBytes -exports.getSignedData = coseSign1 => () => { - return coseSign1.signed_data(null, null).to_bytes(); -}; +export function getSignedData(coseSign1) { + return () => { + return coseSign1.signed_data(null, null).to_bytes(); + }; +} // getCoseSign1ProtectedHeaders :: COSESign1 -> HeaderMap const getCoseSign1ProtectedHeaders = coseSign1 => { @@ -56,64 +60,80 @@ const getCoseSign1ProtectedHeaders = coseSign1 => { }; // getCoseSign1ProtectedHeaderAlg :: MaybeFfiHelper -> COSESign1 -> Maybe Int -exports._getCoseSign1ProtectedHeaderAlg = maybe => coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - return opt_chain(maybe, protectedHeaders, "algorithm_id", "as_int", "as_i32"); -}; +export function _getCoseSign1ProtectedHeaderAlg(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + return opt_chain(maybe, protectedHeaders, "algorithm_id", "as_int", "as_i32"); + }; +} // _getCoseSign1ProtectedHeaderAddress // :: MaybeFfiHelper -> COSESign1 -> Maybe CborBytes -exports._getCoseSign1ProtectedHeaderAddress = maybe => coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - const cborValue = protectedHeaders.header(lib.Label.new_text("address")); - return opt_chain(maybe, cborValue, "as_bytes"); -}; +export function _getCoseSign1ProtectedHeaderAddress(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + const cborValue = protectedHeaders.header(lib.Label.new_text("address")); + return opt_chain(maybe, cborValue, "as_bytes"); + }; +} // _getCoseSign1ProtectedHeaderKid // :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes -exports._getCoseSign1ProtectedHeaderKid = maybe => coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - return opt_chain(maybe, protectedHeaders, "key_id"); -}; +export function _getCoseSign1ProtectedHeaderKid(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + return opt_chain(maybe, protectedHeaders, "key_id"); + }; +} // ----------------------------------------------------------------------------- // COSEKey // ----------------------------------------------------------------------------- // _fromBytesCoseKey :: CborBytes -> Effect COSEKey -exports.fromBytesCoseKey = fromBytes("COSEKey"); +export var fromBytesCoseKey = fromBytes("COSEKey"); // _getCoseKeyHeaderKty :: MaybeFfiHelper -> COSEKey -> Maybe Int -exports._getCoseKeyHeaderKty = maybe => coseKey => { - return opt_chain(maybe, coseKey.key_type(), "as_int", "as_i32"); -}; +export function _getCoseKeyHeaderKty(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey.key_type(), "as_int", "as_i32"); + }; +} // _getCoseKeyHeaderAlg :: MaybeFfiHelper -> COSEKey -> Maybe Int -exports._getCoseKeyHeaderAlg = maybe => coseKey => { - return opt_chain(maybe, coseKey, "algorithm_id", "as_int", "as_i32"); -}; +export function _getCoseKeyHeaderAlg(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey, "algorithm_id", "as_int", "as_i32"); + }; +} // _getCoseKeyHeaderCrv :: MaybeFfiHelper -> COSEKey -> Maybe Int -exports._getCoseKeyHeaderCrv = maybe => coseKey => { - const cborValue = coseKey.header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) - ) - ); - return opt_chain(maybe, cborValue, "as_int", "as_i32"); -}; +export function _getCoseKeyHeaderCrv(maybe) { + return coseKey => { + const cborValue = coseKey.header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) + ) + ); + return opt_chain(maybe, cborValue, "as_int", "as_i32"); + }; +} // _getCoseKeyHeaderX :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes -exports._getCoseKeyHeaderX = maybe => coseKey => { - const cborValue = coseKey.header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) - ) - ); - return opt_chain(maybe, cborValue, "as_bytes"); -}; +export function _getCoseKeyHeaderX(maybe) { + return coseKey => { + const cborValue = coseKey.header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) + ) + ); + return opt_chain(maybe, cborValue, "as_bytes"); + }; +} // _getCoseKeyHeaderKid :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes -exports._getCoseKeyHeaderKid = maybe => coseKey => { - return opt_chain(maybe, coseKey, "key_id"); -}; +export function _getCoseKeyHeaderKid(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey, "key_id"); + }; +} From 856ed1d24b42c158f3a56affc7086060e0ecfd33 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 15:35:07 +0200 Subject: [PATCH 242/478] build: select affjax driver based on environment (node or browser) --- src/Internal/Affjax.js | 32 +++++++++++++++++++++ src/Internal/Affjax.purs | 33 ++++++++++++++++++++++ src/Internal/ProcessConstraints/State.purs | 20 ++++++------- src/Internal/QueryM.purs | 3 +- src/Internal/QueryM/Kupo.purs | 3 +- src/Internal/Service/Blockfrost.purs | 3 +- 6 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 src/Internal/Affjax.js create mode 100644 src/Internal/Affjax.purs diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js new file mode 100644 index 000000000..73e5a02e8 --- /dev/null +++ b/src/Internal/Affjax.js @@ -0,0 +1,32 @@ +import XHR from "xhr2"; +import urllib from "url"; + +const browserDriver = { + newXHR: function () { + return new XMLHttpRequest(); + }, + fixupUrl: function (url) { + return url || "/"; + } +}; + +const nodeDriver = { + newXHR: function () { + return new XHR(); + }, + fixupUrl: function (url, xhr) { + if (xhr.nodejsBaseUrl === null) { + var u = urllib.parse(url); + u.protocol = u.protocol || "http:"; + u.hostname = u.hostname || "localhost"; + return urllib.format(u); + } else { + return url || "/"; + } + }, +}; + +export const driver = + typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME + ? browserDriver + : nodeDriver; diff --git a/src/Internal/Affjax.purs b/src/Internal/Affjax.purs new file mode 100644 index 000000000..1d654e4cc --- /dev/null +++ b/src/Internal/Affjax.purs @@ -0,0 +1,33 @@ +module Ctl.Internal.Affjax + ( request + ) where + +import Prelude + +import Affjax (AffjaxDriver) +import Affjax (Error, Request, Response) as Affjax +import Affjax (request) as Affjax +import Data.Either (Either) +import Effect.Aff (Aff) + +foreign import driver :: AffjaxDriver + +-- | Makes an HTTP request. +-- | +-- | The example below performs a `GET` request to the URL `/resource` and +-- | interprets the response body as JSON. +-- | +-- | ```purescript +-- | import Affjax.ResponseFormat (json) +-- | ... +-- | request (defaultRequest { url = "/resource", method = Left GET, responseFormat = json}) +-- | ``` +-- | +-- | For common cases helper functions can often be used insteAX of `request` . +-- | For instance, the above example is equivalent to the following. +-- | +-- | ```purescript +-- | get json "/resource" +-- | ``` +request :: forall a. Affjax.Request a -> Aff (Either Affjax.Error (Affjax.Response a)) +request = Affjax.request driver diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 9874e3973..5f842fce1 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -38,8 +38,8 @@ import Data.Lens.Record (prop) import Data.Lens.Types (Lens') import Data.Map (Map) import Data.Show.Generic (genericShow) -import Data.Symbol (SProxy(SProxy)) import Data.Tuple.Nested ((/\)) +import Type.Proxy (Proxy(Proxy)) -- A `StateT` ontop of `QueryM` ~ ReaderT QueryConfig Aff`. -- The state is `ConstraintProcessingState`, which keeps track of the unbalanced @@ -76,45 +76,45 @@ type ConstraintProcessingState (a :: Type) = _cpsTransaction :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction -_cpsTransaction = prop (SProxy :: SProxy "transaction") +_cpsTransaction = prop (Proxy :: Proxy "transaction") _cpsUsedUtxos :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Map TransactionInput TransactionOutput) -_cpsUsedUtxos = prop (SProxy :: SProxy "usedUtxos") +_cpsUsedUtxos = prop (Proxy :: Proxy "usedUtxos") _valueSpentBalancesInputs :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances -_valueSpentBalancesInputs = prop (SProxy :: SProxy "valueSpentBalancesInputs") +_valueSpentBalancesInputs = prop (Proxy :: Proxy "valueSpentBalancesInputs") _valueSpentBalancesOutputs :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances -_valueSpentBalancesOutputs = prop (SProxy :: SProxy "valueSpentBalancesOutputs") +_valueSpentBalancesOutputs = prop (Proxy :: Proxy "valueSpentBalancesOutputs") _datums :: forall (a :: Type). Lens' (ConstraintProcessingState a) (Array Datum) -_datums = prop (SProxy :: SProxy "datums") +_datums = prop (Proxy :: Proxy "datums") _costModels :: forall (a :: Type). Lens' (ConstraintProcessingState a) Costmdls -_costModels = prop (SProxy :: SProxy "costModels") +_costModels = prop (Proxy :: Proxy "costModels") _redeemers :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Array UnindexedRedeemer) -_redeemers = prop (SProxy :: SProxy "redeemers") +_redeemers = prop (Proxy :: Proxy "redeemers") _lookups :: forall (a :: Type). Lens' (ConstraintProcessingState a) (ScriptLookups a) -_lookups = prop (SProxy :: SProxy "lookups") +_lookups = prop (Proxy :: Proxy "lookups") _refScriptsUtxoMap :: forall (a :: Type) . Lens' (ConstraintProcessingState a) (Map TransactionInput Plutus.TransactionOutputWithRefScript) -_refScriptsUtxoMap = prop (SProxy :: SProxy "refScriptsUtxoMap") +_refScriptsUtxoMap = prop (Proxy :: Proxy "refScriptsUtxoMap") -- | The balances we track for computing the missing 'Value' (if any) -- | that needs to be added to the transaction. diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index f5ef2c1b8..df099e9ba 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -59,7 +59,7 @@ import Aeson , parseJsonStringToAeson , stringifyAeson ) -import Affjax (Error, Response, defaultRequest, request) as Affjax +import Affjax (Error, Response, defaultRequest) as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader import Affjax.ResponseFormat as Affjax.ResponseFormat @@ -78,6 +78,7 @@ import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.JsWebSocket diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 17ce07cd5..bb05ca609 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -21,7 +21,7 @@ import Aeson , getFieldOptional' , isNull ) -import Affjax (Error, Response, defaultRequest, request) as Affjax +import Affjax (Error, Response, defaultRequest) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) import Contract.Log (logTrace') @@ -31,6 +31,7 @@ import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Parallel (parTraverse) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 3c09cf979..2cafe3339 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -77,7 +77,7 @@ import Aeson , (.:) , (.:!) ) -import Affjax (Error, Response, URL, defaultRequest, printError, request) as Affjax +import Affjax (Error, Response, URL, defaultRequest, printError) as Affjax import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat @@ -96,6 +96,7 @@ import Control.Monad.Maybe.Trans (MaybeT(MaybeT), runMaybeT) import Control.Monad.Reader.Class (ask, asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) import Control.Parallel (parTraverse) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Cardano.Types.NativeScript ( NativeScript ( ScriptAll From 4c66024831d2e6da2c82e758c4d21904dbc4b41a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 15:55:22 +0200 Subject: [PATCH 243/478] style: fix formatting --- Makefile | 2 +- examples/AlwaysMints.js | 2 +- examples/AlwaysSucceeds.js | 2 +- examples/ECDSA.js | 2 +- examples/ExUnits.js | 2 +- examples/IncludeDatum.js | 2 +- examples/Lose7Ada.js | 2 +- examples/MintsMultipleTokens.js | 6 +- examples/MultipleRedeemers.js | 6 +- examples/OneShotMinting.js | 2 +- examples/OtherTypeTextEnvelope.js | 2 +- examples/PlutusV2/InlineDatum.js | 2 +- examples/PlutusV2/OneShotMinting.js | 2 +- examples/PlutusV2/Scripts/AlwaysMints.js | 2 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 2 +- examples/Schnorr.js | 2 +- flake.nix | 2 +- src/Internal/Affjax.js | 10 +- src/Internal/Affjax.purs | 3 +- src/Internal/Base64.js | 4 +- src/Internal/Deserialization/NativeScript.js | 8 +- src/Internal/Deserialization/Transaction.js | 71 +++---- src/Internal/Deserialization/UnspentOutput.js | 29 ++- src/Internal/Deserialization/WitnessSet.js | 60 +++--- src/Internal/JsWebSocket.js | 3 +- src/Internal/Plutus/Types/AssocMap.purs | 13 +- src/Internal/Serialization.js | 189 ++++++++---------- src/Internal/Serialization/Address.js | 70 ++++--- src/Internal/Serialization/AuxiliaryData.js | 9 +- src/Internal/Serialization/Keys.js | 10 +- src/Internal/Serialization/MinFee.js | 3 +- src/Internal/Serialization/NativeScript.js | 15 +- src/Internal/Serialization/PlutusData.js | 3 +- src/Internal/Serialization/WitnessSet.js | 15 +- src/Internal/Types/BigNum.js | 4 +- src/Internal/Types/Int.js | 4 +- src/Internal/Types/TokenName.js | 2 +- src/Internal/Wallet.js | 4 +- src/Internal/Wallet/Cip30.js | 4 +- test/ApplyArgs.js | 2 +- test/Wallet/Cip30/SignData.js | 12 +- 41 files changed, 285 insertions(+), 304 deletions(-) diff --git a/Makefile b/Makefile index c0d17da31..fbf143289 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ check-format: check-explicit-exports check-examples-imports check-whitespace @purs-tidy check ${ps-sources} @nixpkgs-fmt --check ${nix-sources} @prettier --loglevel warn -c ${js-sources} - @eslint --quiet ${js-sources} + @eslint --quiet ${js-sources} --parser-options 'sourceType: module' format: @purs-tidy format-in-place ${ps-sources} diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js index 49601ff1c..f859dd074 100644 --- a/examples/AlwaysMints.js +++ b/examples/AlwaysMints.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -export {script as alwaysMints}; +export { script as alwaysMints }; diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js index edc58cb33..7ee323003 100644 --- a/examples/AlwaysSucceeds.js +++ b/examples/AlwaysSucceeds.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as alwaysSucceeds}; +export { script as alwaysSucceeds }; diff --git a/examples/ECDSA.js b/examples/ECDSA.js index c3cb277e2..a1d874fd3 100644 --- a/examples/ECDSA.js +++ b/examples/ECDSA.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -export {script as validateECDSA}; +export { script as validateECDSA }; diff --git a/examples/ExUnits.js b/examples/ExUnits.js index 157ecde3d..3e0039a9a 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as exUnits}; +export { script as exUnits }; diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js index a66b971c0..fa1910b6b 100644 --- a/examples/IncludeDatum.js +++ b/examples/IncludeDatum.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as includeDatum}; +export { script as includeDatum }; diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js index 160a30565..0b7f92ab7 100644 --- a/examples/Lose7Ada.js +++ b/examples/Lose7Ada.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as alwaysFails}; +export { script as alwaysFails }; diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js index 3c31afcee..98f9152cd 100644 --- a/examples/MintsMultipleTokens.js +++ b/examples/MintsMultipleTokens.js @@ -19,6 +19,6 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { redeemerInt3 = readScript("redeemer3"); } -export {redeemerInt1}; -export {redeemerInt2}; -export {redeemerInt3}; +export { redeemerInt1 }; +export { redeemerInt2 }; +export { redeemerInt3 }; diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js index 31479907d..f24ce0146 100644 --- a/examples/MultipleRedeemers.js +++ b/examples/MultipleRedeemers.js @@ -19,6 +19,6 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { vredeemerInt3 = readScript("redeemer3-validator"); } -export {vredeemerInt1}; -export {vredeemerInt2}; -export {vredeemerInt3}; +export { vredeemerInt1 }; +export { vredeemerInt2 }; +export { vredeemerInt3 }; diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js index 7ae56d760..214afcd26 100644 --- a/examples/OneShotMinting.js +++ b/examples/OneShotMinting.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as oneShotMinting}; +export { script as oneShotMinting }; diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index be56ab824..6a27e2121 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -14,4 +14,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -export {script as otherTypeTextEnvelope}; +export { script as otherTypeTextEnvelope }; diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index dbdad10b7..4d65a94e9 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -15,4 +15,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as checkDatumIsInline}; +export { script as checkDatumIsInline }; diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index 9892c1ce0..c4e3a66a6 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -15,4 +15,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as oneShotMinting}; +export { script as oneShotMinting }; diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js index 120ecadd1..995ee1f57 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ b/examples/PlutusV2/Scripts/AlwaysMints.js @@ -11,4 +11,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "utf8" ); } -export {script as alwaysMintsV2}; +export { script as alwaysMintsV2 }; diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index b67c3d665..63748d5aa 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as alwaysSucceedsV2}; +export { script as alwaysSucceedsV2 }; diff --git a/examples/Schnorr.js b/examples/Schnorr.js index 0de34e6a3..2bb28622c 100644 --- a/examples/Schnorr.js +++ b/examples/Schnorr.js @@ -12,4 +12,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {script as validateSchnorr}; +export { script as validateSchnorr }; diff --git a/flake.nix b/flake.nix index 8b6b9d4e0..e1c7996ec 100644 --- a/flake.nix +++ b/flake.nix @@ -258,7 +258,7 @@ }; }; runtime = - ( + ( final: prev: let inherit (prev) system; diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js index 73e5a02e8..282ec7f1b 100644 --- a/src/Internal/Affjax.js +++ b/src/Internal/Affjax.js @@ -1,3 +1,5 @@ +/* global BROWSER_RUNTIME */ + import XHR from "xhr2"; import urllib from "url"; @@ -7,7 +9,7 @@ const browserDriver = { }, fixupUrl: function (url) { return url || "/"; - } + }, }; const nodeDriver = { @@ -16,7 +18,7 @@ const nodeDriver = { }, fixupUrl: function (url, xhr) { if (xhr.nodejsBaseUrl === null) { - var u = urllib.parse(url); + let u = urllib.parse(url); u.protocol = u.protocol || "http:"; u.hostname = u.hostname || "localhost"; return urllib.format(u); @@ -26,7 +28,7 @@ const nodeDriver = { }, }; -export const driver = - typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME +export const driver = + typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME ? browserDriver : nodeDriver; diff --git a/src/Internal/Affjax.purs b/src/Internal/Affjax.purs index 1d654e4cc..a03371e65 100644 --- a/src/Internal/Affjax.purs +++ b/src/Internal/Affjax.purs @@ -29,5 +29,6 @@ foreign import driver :: AffjaxDriver -- | ```purescript -- | get json "/resource" -- | ``` -request :: forall a. Affjax.Request a -> Aff (Either Affjax.Error (Affjax.Response a)) +request + :: forall a. Affjax.Request a -> Aff (Either Affjax.Error (Affjax.Response a)) request = Affjax.request driver diff --git a/src/Internal/Base64.js b/src/Internal/Base64.js index 1db305d09..bd6760894 100644 --- a/src/Internal/Base64.js +++ b/src/Internal/Base64.js @@ -1,6 +1,6 @@ import base64 from "base64-js"; -export var fromByteArray = base64.fromByteArray; -export var toByteArray = base64.toByteArray; +export const fromByteArray = base64.fromByteArray; +export const toByteArray = base64.toByteArray; export function _decodeBase64(maybe) { return str => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 5c26a853e..fdc5dc64c 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -31,7 +31,7 @@ export function _convertNativeScript(handler) { const call = property => object => object[property](); -export var scriptPubkey_addr_keyhash = call("addr_keyhash"); +export const scriptPubkey_addr_keyhash = call("addr_keyhash"); export function scriptAllScripts(helper) { return helper.unpackFromProperty("native_scripts"); @@ -45,6 +45,6 @@ export function scriptNOfKScripts(helper) { return helper.unpackFromProperty("native_scripts"); } -export var scriptNOfK_n = call("n"); -export var timelockStart_slot = call("slot_bignum"); -export var timelockExpiry_slot = call("slot_bignum"); +export const scriptNOfK_n = call("n"); +export const timelockStart_slot = call("slot_bignum"); +export const timelockExpiry_slot = call("slot_bignum"); diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 2b626fa0b..4de02b2e2 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -26,13 +26,6 @@ export function _txBody(tx) { return tx.body(); } -export function _txAuxiliaryData(maybe) { - return tx => { - const ad = tx.auxiliary_data(); - return ad == null ? maybe.nothing : maybe.just(ad); - }; -} - const maybeGetter_ = fmap => propstr => maybe => obj => { if (typeof propstr != "string") { const s = "maybeGetter_ propstr must be a string, got " + propstr; @@ -45,21 +38,19 @@ const maybeGetter = maybeGetter_(a => a); const maybeGetterMulti = propstr => containerHelper => maybeGetter_(o => containerHelper.unpack(o))(propstr); -export var _txAuxiliaryData = maybeGetter("auxiliary_data"); -export var _adGeneralMetadata = maybeGetter("metadata"); -export var _adNativeScripts = maybeGetter("native_scripts"); -export var _adPlutusScripts = maybeGetter("plutus_scripts"); +export const _txAuxiliaryData = maybeGetter("auxiliary_data"); +export const _adGeneralMetadata = maybeGetter("metadata"); +export const _adNativeScripts = maybeGetter("native_scripts"); +export const _adPlutusScripts = maybeGetter("plutus_scripts"); // inputs(): TransactionInputs; export function _txBodyInputs(containerhelper) { - return body => - containerhelper.unpack(body.inputs()); + return body => containerhelper.unpack(body.inputs()); } // outputs(): TransactionOutputs; export function _txBodyOutputs(containerhelper) { - return body => - containerhelper.unpack(body.outputs()); + return body => containerhelper.unpack(body.outputs()); } // fee(): BigNum; @@ -68,27 +59,27 @@ export function _txBodyFee(body) { } // ttl(): number | void; -export var _txBodyTtl = maybeGetter("ttl_bignum"); +export const _txBodyTtl = maybeGetter("ttl_bignum"); // certs(): Certificates | void; -export var _txBodyCerts = maybeGetterMulti("certs"); +export const _txBodyCerts = maybeGetterMulti("certs"); // withdrawals(): Withdrawals | void; -export var _txBodyWithdrawals = maybeGetter("withdrawals"); +export const _txBodyWithdrawals = maybeGetter("withdrawals"); // update(): Update | void; -export var _txBodyUpdate = maybeGetter("update"); +export const _txBodyUpdate = maybeGetter("update"); // auxiliary_data_hash(): AuxiliaryDataHash | void; -export var _txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); +export const _txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); // validity_start_interval(): number | void; -export var _txBodyValidityStartInterval = maybeGetter( +export const _txBodyValidityStartInterval = maybeGetter( "validity_start_interval_bignum" ); // multiassets(): Mint | void; -export var _txBodyMultiAssets = maybeGetter("multiassets"); +export const _txBodyMultiAssets = maybeGetter("multiassets"); export function _txBodyReferenceInputs(maybe) { return containerhelper => body => @@ -98,13 +89,13 @@ export function _txBodyReferenceInputs(maybe) { } // script_data_hash(): ScriptDataHash | void; -export var _txBodyScriptDataHash = maybeGetter("script_data_hash"); +export const _txBodyScriptDataHash = maybeGetter("script_data_hash"); // collateral(): Array TransactionInput | void; -export var _txBodyCollateral = maybeGetterMulti("collateral"); +export const _txBodyCollateral = maybeGetterMulti("collateral"); // required_signers(): Ed25519KeyHashes | void; -export var _txBodyRequiredSigners = maybeGetterMulti("required_signers"); +export const _txBodyRequiredSigners = maybeGetterMulti("required_signers"); // network_id(): number | void; export function _txBodyNetworkId(testnet) { @@ -122,10 +113,10 @@ export function _txBodyNetworkId(testnet) { } // collateral_return(): TransactionOutput | void; -export var _txBodyCollateralReturn = maybeGetter("collateral_return"); +export const _txBodyCollateralReturn = maybeGetter("collateral_return"); // total_collateral(): BigNum | void -export var _txBodyTotalCollateral = maybeGetter("total_collateral"); +export const _txBodyTotalCollateral = maybeGetter("total_collateral"); // foreign import _unpackWithdrawals :: ContainerHelper -> CSL.Withdrawals -> Array(Tuple CSL.RewardAddress CSL.BigNum) export function _unpackWithdrawals(containerhelper) { @@ -187,9 +178,9 @@ export function _convertCert(certConvHelper) { mir.pot() )(mir.as_to_other_pot()); case lib.MIRKind.ToStakeCredentials: - return certConvHelper.moveInstantaneousRewardsToStakeCreds(mir.pot())( - mir.as_to_stake_creds() - ); + return certConvHelper.moveInstantaneousRewardsToStakeCreds( + mir.pot() + )(mir.as_to_stake_creds()); default: throw ( "MoveInstantaneousReward convertion failed for kind" + mir.kind() @@ -312,24 +303,22 @@ export function _unpackExUnitsPrices(cslEup) { }; } -export var poolParamsOperator = call("operator"); -export var poolParamsVrfKeyhash = call("vrf_keyhash"); -export var poolParamsPledge = call("pledge"); -export var poolParamsCost = call("cost"); -export var poolParamsMargin = call("margin"); -export var poolParamsRewardAccount = call("reward_account"); +export const poolParamsOperator = call("operator"); +export const poolParamsVrfKeyhash = call("vrf_keyhash"); +export const poolParamsPledge = call("pledge"); +export const poolParamsCost = call("cost"); +export const poolParamsMargin = call("margin"); +export const poolParamsRewardAccount = call("reward_account"); export function poolParamsPoolOwners(containerHelper) { - return poolParams => - containerHelper.unpack(poolParams.pool_owners()); + return poolParams => containerHelper.unpack(poolParams.pool_owners()); } export function poolParamsRelays(containerHelper) { - return poolParams => - containerHelper.unpack(poolParams.relays()); + return poolParams => containerHelper.unpack(poolParams.relays()); } -export var poolParamsPoolMetadata = callMaybe("pool_metadata"); +export const poolParamsPoolMetadata = callMaybe("pool_metadata"); export function convertRelay_(helper) { return relay => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 9b22f6678..976b56fb6 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -40,13 +40,13 @@ const extractDict = tuple => dict => { return res; }; -export var getInput = call("input"); -export var getOutput = call("output"); -export var getTransactionHash = call("transaction_id"); -export var getTransactionIndex = call("index"); -export var getAddress = call("address"); -export var getPlutusData = callMaybe("plutus_data"); -export var getScriptRef = callMaybe("script_ref"); +export const getInput = call("input"); +export const getOutput = call("output"); +export const getTransactionHash = call("transaction_id"); +export const getTransactionIndex = call("index"); +export const getAddress = call("address"); +export const getPlutusData = callMaybe("plutus_data"); +export const getScriptRef = callMaybe("script_ref"); export function withScriptRef(ccNativeScript) { return ccPlutusScript => scriptRef => { @@ -60,14 +60,13 @@ export function withScriptRef(ccNativeScript) { }; } -export var getAmount = call("amount"); -export var getCoin = call("coin"); -export var getMultiAsset = callMaybe("multiasset"); -export {extractDict as extractMultiAsset}; -export {extractDict as extractAssets}; -export var getDataHash = callMaybe("data_hash"); +export const getAmount = call("amount"); +export const getCoin = call("coin"); +export const getMultiAsset = callMaybe("multiasset"); +export { extractDict as extractMultiAsset }; +export { extractDict as extractAssets }; +export const getDataHash = callMaybe("data_hash"); export function mkTransactionUnspentOutput(input) { - return output => - lib.TransactionUnspentOutput.new(input, output); + return output => lib.TransactionUnspentOutput.new(input, output); } diff --git a/src/Internal/Deserialization/WitnessSet.js b/src/Internal/Deserialization/WitnessSet.js index e9b388b29..ea8b41a80 100644 --- a/src/Internal/Deserialization/WitnessSet.js +++ b/src/Internal/Deserialization/WitnessSet.js @@ -18,39 +18,39 @@ const containerExtractor = obj => { return res; }; -export var getVkeywitnesses = callMaybe("vkeys"); -export {containerExtractor as extractWitnesses}; -export var getVkey = call("vkey"); -export var getSignature = call("signature"); -export var vkeyPublicKey = call("public_key"); -export var publicKeyToBech32 = call("to_bech32"); -export var signatureToBech32 = call("to_bech32"); -export var getNativeScripts = callMaybe("native_scripts"); -export {containerExtractor as extractNativeScripts}; +export const getVkeywitnesses = callMaybe("vkeys"); +export { containerExtractor as extractWitnesses }; +export const getVkey = call("vkey"); +export const getSignature = call("signature"); +export const vkeyPublicKey = call("public_key"); +export const publicKeyToBech32 = call("to_bech32"); +export const signatureToBech32 = call("to_bech32"); +export const getNativeScripts = callMaybe("native_scripts"); +export { containerExtractor as extractNativeScripts }; export function nativeScriptAs(maybe) { return prop => res => ns => ns[prop]() == null ? maybe.nothing : maybe.just(res); } -export var getBootstraps = callMaybe("bootstraps"); -export {containerExtractor as extractBootstraps}; -export var getBootstrapVkey = call("vkey"); -export var getBootstrapSignature = call("signature"); -export var getBootstrapChainCode = call("chain_code"); -export var getBootstrapAttributes = call("attributes"); -export var getPlutusScripts = callMaybe("plutus_scripts"); -export {containerExtractor as extractPlutusScripts}; -export var plutusScriptBytes = call("bytes"); -export var plutusScriptVersion = call("language_version"); -export var getWitnessSetPlutusData = callMaybe("plutus_data"); -export {containerExtractor as extractPlutusData}; -export var getRedeemers = callMaybe("redeemers"); -export var getRedeemerTag = call("tag"); -export var getRedeemerIndex = call("index"); -export {containerExtractor as extractRedeemers}; -export var getRedeemerTagKind = call("kind"); -export var getRedeemerPlutusData = call("data"); -export var getExUnits = call("ex_units"); -export var getExUnitsMem = call("mem"); -export var getExUnitsSteps = call("steps"); +export const getBootstraps = callMaybe("bootstraps"); +export { containerExtractor as extractBootstraps }; +export const getBootstrapVkey = call("vkey"); +export const getBootstrapSignature = call("signature"); +export const getBootstrapChainCode = call("chain_code"); +export const getBootstrapAttributes = call("attributes"); +export const getPlutusScripts = callMaybe("plutus_scripts"); +export { containerExtractor as extractPlutusScripts }; +export const plutusScriptBytes = call("bytes"); +export const plutusScriptVersion = call("language_version"); +export const getWitnessSetPlutusData = callMaybe("plutus_data"); +export { containerExtractor as extractPlutusData }; +export const getRedeemers = callMaybe("redeemers"); +export const getRedeemerTag = call("tag"); +export const getRedeemerIndex = call("index"); +export { containerExtractor as extractRedeemers }; +export const getRedeemerTagKind = call("kind"); +export const getRedeemerPlutusData = call("data"); +export const getExUnits = call("ex_units"); +export const getExUnitsMem = call("mem"); +export const getExUnitsSteps = call("steps"); diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 305c14915..38873999e 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -71,8 +71,7 @@ export function _onWsError(ws) { } export function _removeOnWsError(ws) { - return listener => () => - ws.removeEventListener("error", listener); + return listener => () => ws.removeEventListener("error", listener); } export function _onWsMessage(ws) { diff --git a/src/Internal/Plutus/Types/AssocMap.purs b/src/Internal/Plutus/Types/AssocMap.purs index 15e16e384..cb773d639 100644 --- a/src/Internal/Plutus/Types/AssocMap.purs +++ b/src/Internal/Plutus/Types/AssocMap.purs @@ -20,7 +20,13 @@ module Ctl.Internal.Plutus.Types.AssocMap import Prelude -import Aeson (Aeson, class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , decodeAeson + , encodeAeson + ) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.PlutusData (PlutusData(Map)) as PD @@ -74,8 +80,9 @@ instance (EncodeAeson k, EncodeAeson v) => EncodeAeson (Map k v) where instance (DecodeAeson k, DecodeAeson v) => DecodeAeson (Map k v) where decodeAeson x = Map <$> - (traverse (rtraverse decodeAeson) - =<< (decodeAeson x :: _ (Array (Tuple k Aeson)))) + ( traverse (rtraverse decodeAeson) + =<< (decodeAeson x :: _ (Array (Tuple k Aeson))) + ) instance (Show k, Show v) => Show (Map k v) where show = genericShow diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index d39b29bb7..4473a01b4 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -19,15 +19,13 @@ export function newValue(coin) { } export function newValueFromAssets(multiasset) { - return () => - lib.Value.new_from_assets(multiasset); + return () => lib.Value.new_from_assets(multiasset); } -export var valueSetCoin = setter("coin"); +export const valueSetCoin = setter("coin"); export function newTransactionInput(transaction_id) { - return index => () => - lib.TransactionInput.new(transaction_id, index); + return index => () => lib.TransactionInput.new(transaction_id, index); } export function newTransactionInputs() { @@ -39,8 +37,7 @@ export function addTransactionInput(inputs) { } export function newTransactionOutput(address) { - return amount => () => - lib.TransactionOutput.new(address, amount); + return amount => () => lib.TransactionOutput.new(address, amount); } export function newTransactionOutputs() { @@ -66,13 +63,11 @@ export function newTransaction(body) { } export function newTransaction_(body) { - return witness_set => () => - lib.Transaction.new(body, witness_set); + return witness_set => () => lib.Transaction.new(body, witness_set); } export function newTransactionUnspentOutput(input) { - return output => () => - lib.TransactionUnspentOutput.new(input, output); + return output => () => lib.TransactionUnspentOutput.new(input, output); } export function newMultiAsset() { @@ -80,8 +75,7 @@ export function newMultiAsset() { } export function insertMultiAsset(multiasset) { - return key => value => () => - multiasset.insert(key, value); + return key => value => () => multiasset.insert(key, value); } export function newAssets() { @@ -89,17 +83,16 @@ export function newAssets() { } export function insertAssets(assets) { - return key => value => () => - assets.insert(key, value); + return key => value => () => assets.insert(key, value); } export function newAssetName(name) { return () => lib.AssetName.new(name); } -export var transactionOutputSetDataHash = setter("data_hash"); -export var transactionOutputSetPlutusData = setter("plutus_data"); -export var transactionOutputSetScriptRef = setter("script_ref"); +export const transactionOutputSetDataHash = setter("data_hash"); +export const transactionOutputSetPlutusData = setter("plutus_data"); +export const transactionOutputSetScriptRef = setter("script_ref"); export function scriptRefNewNativeScript(nativeScript) { return lib.ScriptRef.new_native_script(nativeScript); @@ -118,8 +111,7 @@ export function makeVkeywitness(hash) { } export function newVkeywitness(vkey) { - return signature => () => - lib.Vkeywitness.new(vkey, signature); + return signature => () => lib.Vkeywitness.new(vkey, signature); } export function addVkeywitness(witnesses) { @@ -134,7 +126,7 @@ export function publicKeyHash(pk) { return pk.hash(); } -export var transactionWitnessSetSetVkeys = setter("vkeys"); +export const transactionWitnessSetSetVkeys = setter("vkeys"); export function newCostmdls() { return lib.Costmdls.new(); @@ -173,8 +165,7 @@ export function _hashScriptData(rs) { } export function _hashScriptDataNoDatums(rs) { - return cms => () => - lib.hash_script_data(rs, cms); + return cms => () => lib.hash_script_data(rs, cms); } export function newRedeemers() { @@ -186,12 +177,11 @@ export function addRedeemer(rs) { } export function setTxBodyReferenceInputs(txBody) { - return referenceInputs => () => - txBody.set_reference_inputs(referenceInputs); + return referenceInputs => () => txBody.set_reference_inputs(referenceInputs); } -export var setTxBodyScriptDataHash = setter("script_data_hash"); -export var setTxBodyMint = setter("mint"); +export const setTxBodyScriptDataHash = setter("script_data_hash"); +export const setTxBodyMint = setter("mint"); export function newMint() { return lib.Mint.new(); @@ -214,16 +204,14 @@ export function _bigIntToInt(maybe) { }; } -export var newMintAssets = lib.MintAssets.new; +export const newMintAssets = lib.MintAssets.new; export function insertMintAssets(mint) { - return scriptHash => mintAssets => () => - mint.insert(scriptHash, mintAssets); + return scriptHash => mintAssets => () => mint.insert(scriptHash, mintAssets); } export function insertMintAsset(mintAssets) { - return assetName => int => () => - mintAssets.insert(assetName, int); + return assetName => int => () => mintAssets.insert(assetName, int); } export function networkIdTestnet() { @@ -240,12 +228,11 @@ export function setTxBodyCollateralReturn(txBody) { } export function setTxBodyTotalCollateral(txBody) { - return totalCollateral => () => - txBody.set_total_collateral(totalCollateral); + return totalCollateral => () => txBody.set_total_collateral(totalCollateral); } -export var setTxBodyTtl = setter("ttl"); -export var setTxBodyCerts = setter("certs"); +export const setTxBodyTtl = setter("ttl"); +export const setTxBodyCerts = setter("certs"); export function newCertificates() { return lib.Certificates.new(); @@ -274,34 +261,33 @@ export function newStakeDelegationCertificate(stakeCredential) { export function newPoolRegistrationCertificate(operator) { return vrfKeyhash => - pledge => - cost => - margin => - reward_account => - poolOwners => - relays => - poolMetadata => - () => - lib.Certificate.new_pool_registration( - lib.PoolRegistration.new( - lib.PoolParams.new( - operator, - vrfKeyhash, - pledge, - cost, - margin, - reward_account, - poolOwners, - relays, - poolMetadata + pledge => + cost => + margin => + reward_account => + poolOwners => + relays => + poolMetadata => + () => + lib.Certificate.new_pool_registration( + lib.PoolRegistration.new( + lib.PoolParams.new( + operator, + vrfKeyhash, + pledge, + cost, + margin, + reward_account, + poolOwners, + relays, + poolMetadata + ) ) - ) - ); + ); } export function newUnitInterval(numerator) { - return denominator => () => - lib.UnitInterval.new(numerator, denominator); + return denominator => () => lib.UnitInterval.new(numerator, denominator); } export function newPoolRetirementCertificate(poolKeyHash) { @@ -319,12 +305,11 @@ export function newGenesisKeyDelegationCertificate(genesisHash) { } export function addCert(certificates) { - return certificate => () => - certificates.add(certificate); + return certificate => () => certificates.add(certificate); } -export var setTxBodyCollateral = setter("collateral"); -export var setTxBodyNetworkId = setter("network_id"); +export const setTxBodyCollateral = setter("collateral"); +export const setTxBodyNetworkId = setter("network_id"); export function transactionBodySetRequiredSigners(containerHelper) { return body => keyHashes => () => @@ -333,13 +318,12 @@ export function transactionBodySetRequiredSigners(containerHelper) { ); } -export var transactionBodySetValidityStartInterval = setter( +export const transactionBodySetValidityStartInterval = setter( "validity_start_interval_bignum" ); export function transactionBodySetAuxiliaryDataHash(txBody) { - return hash => () => - txBody.set_auxiliary_data_hash(hash); + return hash => () => txBody.set_auxiliary_data_hash(hash); } export function convertPoolOwners(containerHelper) { @@ -348,8 +332,7 @@ export function convertPoolOwners(containerHelper) { } export function packRelays(containerHelper) { - return relays => - containerHelper.pack(lib.Relays, relays); + return relays => containerHelper.pack(lib.Relays, relays); } export function newIpv4(data) { @@ -380,8 +363,7 @@ export function newMultiHostName(dnsName) { } export function newPoolMetadata(url) { - return hash => () => - lib.PoolMetadata.new(lib.URL.new(url), hash); + return hash => () => lib.PoolMetadata.new(lib.URL.new(url), hash); } export function newMoveInstantaneousRewardToOtherPot(pot) { @@ -407,56 +389,51 @@ export function newMoveInstantaneousRewardsCertificate(mir) { } export function newWithdrawals(containerHelper) { - return entries => () => - containerHelper.packMap(lib.Withdrawals, entries); + return entries => () => containerHelper.packMap(lib.Withdrawals, entries); } -export var setTxBodyWithdrawals = setter("withdrawals"); -export var setTxBodyUpdate = setter("update"); +export const setTxBodyWithdrawals = setter("withdrawals"); +export const setTxBodyUpdate = setter("update"); export function newUpdate(ppUpdates) { - return epoch => () => - lib.Update.new(ppUpdates, epoch); -} - -export var ppuSetMinfeeA = setter("minfee_a"); -export var ppuSetMinfeeB = setter("minfee_b"); -export var ppuSetMaxBlockBodySize = setter("max_block_body_size"); -export var ppuSetMaxTxSize = setter("max_tx_size"); -export var ppuSetMaxBlockHeaderSize = setter("max_block_header_size"); -export var ppuSetKeyDeposit = setter("key_deposit"); -export var ppuSetPoolDeposit = setter("pool_deposit"); -export var ppuSetMaxEpoch = setter("max_epoch"); -export var ppuSetNOpt = setter("n_opt"); -export var ppuSetPoolPledgeInfluence = setter("pool_pledge_influence"); -export var ppuSetExpansionRate = setter("expansion_rate"); -export var ppuSetTreasuryGrowthRate = setter("treasury_growth_rate"); + return epoch => () => lib.Update.new(ppUpdates, epoch); +} + +export const ppuSetMinfeeA = setter("minfee_a"); +export const ppuSetMinfeeB = setter("minfee_b"); +export const ppuSetMaxBlockBodySize = setter("max_block_body_size"); +export const ppuSetMaxTxSize = setter("max_tx_size"); +export const ppuSetMaxBlockHeaderSize = setter("max_block_header_size"); +export const ppuSetKeyDeposit = setter("key_deposit"); +export const ppuSetPoolDeposit = setter("pool_deposit"); +export const ppuSetMaxEpoch = setter("max_epoch"); +export const ppuSetNOpt = setter("n_opt"); +export const ppuSetPoolPledgeInfluence = setter("pool_pledge_influence"); +export const ppuSetExpansionRate = setter("expansion_rate"); +export const ppuSetTreasuryGrowthRate = setter("treasury_growth_rate"); export function newProtocolVersion(major) { - return minor => () => - lib.ProtocolVersion.new(major, minor); + return minor => () => lib.ProtocolVersion.new(major, minor); } export function ppuSetProtocolVersion(ppu) { - return version => () => - ppu.set_protocol_version(version); + return version => () => ppu.set_protocol_version(version); } -export var ppuSetMinPoolCost = setter("min_pool_cost"); -export var ppuSetAdaPerUtxoByte = setter("ada_per_utxo_byte"); -export var ppuSetCostModels = setter("cost_models"); +export const ppuSetMinPoolCost = setter("min_pool_cost"); +export const ppuSetAdaPerUtxoByte = setter("ada_per_utxo_byte"); +export const ppuSetCostModels = setter("cost_models"); export function newExUnitPrices(mem_price) { - return step_price => () => - lib.ExUnitPrices.new(mem_price, step_price); + return step_price => () => lib.ExUnitPrices.new(mem_price, step_price); } -export var ppuSetExecutionCosts = setter("execution_costs"); -export var ppuSetMaxTxExUnits = setter("max_tx_ex_units"); -export var ppuSetMaxBlockExUnits = setter("max_block_ex_units"); -export var ppuSetMaxValueSize = setter("max_value_size"); -export var ppuSetCollateralPercentage = setter("collateral_percentage"); -export var ppuSetMaxCollateralInputs = setter("max_collateral_inputs"); +export const ppuSetExecutionCosts = setter("execution_costs"); +export const ppuSetMaxTxExUnits = setter("max_tx_ex_units"); +export const ppuSetMaxBlockExUnits = setter("max_block_ex_units"); +export const ppuSetMaxValueSize = setter("max_value_size"); +export const ppuSetCollateralPercentage = setter("collateral_percentage"); +export const ppuSetMaxCollateralInputs = setter("max_collateral_inputs"); export function newProtocolParamUpdate() { return lib.ProtocolParamUpdate.new(); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index 7764c1160..8341ec7f8 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -39,12 +39,12 @@ export function withStakeCredential(cbObj) { }; } -export var keyHashCredential = lib.StakeCredential.from_keyhash; -export var scriptHashCredential = lib.StakeCredential.from_scripthash; -export {callToBytes as addressBytes}; -export {callToBytes as byronAddressBytes}; -export {callToBytes as stakeCredentialToBytes}; -export {callToBech32 as addressBech32}; +export const keyHashCredential = lib.StakeCredential.from_keyhash; +export const scriptHashCredential = lib.StakeCredential.from_scripthash; +export { callToBytes as addressBytes }; +export { callToBytes as byronAddressBytes }; +export { callToBytes as stakeCredentialToBytes }; +export { callToBech32 as addressBech32 }; export function _addressNetworkId(toAdt) { return addr => { @@ -58,64 +58,69 @@ export function _byronAddressNetworkId(toAdt) { }; } -export var _addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); +export const _addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); -export var _stakeCredentialFromBytes = callClassStaticMaybe( +export const _stakeCredentialFromBytes = callClassStaticMaybe( "StakeCredential", "from_bytes" ); -export var _byronAddressFromBytes = callClassStaticMaybe( +export const _byronAddressFromBytes = callClassStaticMaybe( "ByronAddress", "from_bytes" ); -export var _addressFromBech32 = callClassStaticMaybe("Address", "from_bech32"); +export const _addressFromBech32 = callClassStaticMaybe( + "Address", + "from_bech32" +); -export var _byronAddressFromBase58 = callClassStaticMaybe( +export const _byronAddressFromBase58 = callClassStaticMaybe( "ByronAddress", "from_base58" ); -export var _baseAddressFromAddress = callClassStaticMaybe( +export const _baseAddressFromAddress = callClassStaticMaybe( "BaseAddress", "from_address" ); -export var _byronAddressFromAddress = callClassStaticMaybe( +export const _byronAddressFromAddress = callClassStaticMaybe( "ByronAddress", "from_address" ); -export var _enterpriseAddressFromAddress = callClassStaticMaybe( +export const _enterpriseAddressFromAddress = callClassStaticMaybe( "EnterpriseAddress", "from_address" ); -export var _pointerAddressFromAddress = callClassStaticMaybe( +export const _pointerAddressFromAddress = callClassStaticMaybe( "PointerAddress", "from_address" ); -export var _rewardAddressFromAddress = callClassStaticMaybe( +export const _rewardAddressFromAddress = callClassStaticMaybe( "RewardAddress", "from_address" ); -export {callToAddress as baseAddressToAddress}; -export {callToAddress as byronAddressToAddress}; -export {callToAddress as enterpriseAddressToAddress}; -export {callToAddress as pointerAddressToAddress}; -export {callToAddress as rewardAddressToAddress}; -export {callPaymentCred as baseAddressPaymentCred}; -export {callPaymentCred as rewardAddressPaymentCred}; -export {callPaymentCred as enterpriseAddressPaymentCred}; -export {callPaymentCred as pointerAddressPaymentCred}; -export {callStakeCred as baseAddressDelegationCred}; -export var byronAddressAttributes = callMethodParameterless("attributes"); -export var byronAddressIsValid = lib.ByronAddress.is_valid; -export var byronAddressToBase58 = callMethodParameterless("to_base58"); -export var byronProtocolMagic = callMethodParameterless("byron_protocol_magic"); +export { callToAddress as baseAddressToAddress }; +export { callToAddress as byronAddressToAddress }; +export { callToAddress as enterpriseAddressToAddress }; +export { callToAddress as pointerAddressToAddress }; +export { callToAddress as rewardAddressToAddress }; +export { callPaymentCred as baseAddressPaymentCred }; +export { callPaymentCred as rewardAddressPaymentCred }; +export { callPaymentCred as enterpriseAddressPaymentCred }; +export { callPaymentCred as pointerAddressPaymentCred }; +export { callStakeCred as baseAddressDelegationCred }; +export const byronAddressAttributes = callMethodParameterless("attributes"); +export const byronAddressIsValid = lib.ByronAddress.is_valid; +export const byronAddressToBase58 = callMethodParameterless("to_base58"); +export const byronProtocolMagic = callMethodParameterless( + "byron_protocol_magic" +); export function icarusFromKey(bip32pubkey) { return byronProtocolMagic => { @@ -143,7 +148,10 @@ export function _enterpriseAddress(netIdToInt) { export function _rewardAddress(netIdToInt) { return inpRec => { - return lib.RewardAddress.new(netIdToInt(inpRec.network), inpRec.paymentCred); + return lib.RewardAddress.new( + netIdToInt(inpRec.network), + inpRec.paymentCred + ); }; } diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 0d58cce2f..816666acf 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -18,9 +18,9 @@ export function _hashAuxiliaryData(auxiliaryData) { return lib.hash_auxiliary_data(auxiliaryData); } -export var setAuxiliaryDataNativeScripts = setter("native_scripts"); -export var setAuxiliaryDataPlutusScripts = setter("plutus_scripts"); -export var setAuxiliaryDataGeneralTransactionMetadata = setter("metadata"); +export const setAuxiliaryDataNativeScripts = setter("native_scripts"); +export const setAuxiliaryDataPlutusScripts = setter("plutus_scripts"); +export const setAuxiliaryDataGeneralTransactionMetadata = setter("metadata"); export function newGeneralTransactionMetadata(containerHelper) { return entries => () => @@ -46,8 +46,7 @@ export function newMetadataInt(int) { } export function newMetadataBytes(bytes) { - return () => - lib.TransactionMetadatum.new_bytes(bytes); + return () => lib.TransactionMetadatum.new_bytes(bytes); } export function newMetadataText(text) { diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js index 36f6b4a07..3c80c09b4 100644 --- a/src/Internal/Serialization/Keys.js +++ b/src/Internal/Serialization/Keys.js @@ -2,8 +2,8 @@ const bytesFromKey = key => key.as_bytes(); -export {bytesFromKey as bytesFromPublicKey}; -export {bytesFromKey as bytesFromPrivateKey}; +export { bytesFromKey as bytesFromPublicKey }; +export { bytesFromKey as bytesFromPrivateKey }; export function publicKeyFromPrivateKey(private_key) { return private_key.to_public(); @@ -11,6 +11,6 @@ export function publicKeyFromPrivateKey(private_key) { const bech32FromX = key => key.to_bech32(); -export {bech32FromX as bech32FromPublicKey}; -export {bech32FromX as bech32FromPrivateKey}; -export {bech32FromX as bech32FromEd25519Signature}; +export { bech32FromX as bech32FromPublicKey }; +export { bech32FromX as bech32FromPrivateKey }; +export { bech32FromX as bech32FromEd25519Signature }; diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index 9733f55ab..c2b2caee3 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -20,6 +20,5 @@ export function _minFee(maybe) { } export function _minScriptFee(exUnitPrices) { - return tx => - lib.min_script_fee(tx, exUnitPrices); + return tx => lib.min_script_fee(tx, exUnitPrices); } diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index f4fa1fb42..5dfa7c46f 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -14,16 +14,15 @@ export function mkScriptPubkey(keyHash) { return lib.ScriptPubkey.new(keyHash); } -export var nativeScript_new_script_pubkey = mkScript("new_script_pubkey"); -export var nativeScript_new_script_all = mkScript("new_script_all"); -export var nativeScript_new_script_any = mkScript("new_script_any"); -export var nativeScript_new_script_n_of_k = mkScript("new_script_n_of_k"); -export var nativeScript_new_timelock_start = mkScript("new_timelock_start"); -export var nativeScript_new_timelock_expiry = mkScript("new_timelock_expiry"); +export const nativeScript_new_script_pubkey = mkScript("new_script_pubkey"); +export const nativeScript_new_script_all = mkScript("new_script_all"); +export const nativeScript_new_script_any = mkScript("new_script_any"); +export const nativeScript_new_script_n_of_k = mkScript("new_script_n_of_k"); +export const nativeScript_new_timelock_start = mkScript("new_timelock_start"); +export const nativeScript_new_timelock_expiry = mkScript("new_timelock_expiry"); export function _packNativeScripts(helper) { - return nss => - helper.pack(lib.NativeScripts, nss); + return nss => helper.pack(lib.NativeScripts, nss); } export function mkScriptAll(nss) { diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index abe7cc793..3933618d8 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -29,8 +29,7 @@ export function _mkPlutusData_constr(constr) { } export function _packPlutusList(containerHelper) { - return elems => - containerHelper.pack(lib.PlutusList, elems); + return elems => containerHelper.pack(lib.PlutusList, elems); } export function _mkConstrPlutusData(n) { diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 8394a1ad5..36d16f488 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -25,8 +25,7 @@ export function newVkeywitnesses() { } export function newVkeywitness(vkey) { - return signature => () => - lib.Vkeywitness.new(vkey, signature); + return signature => () => lib.Vkeywitness.new(vkey, signature); } export function addVkeywitness(witnesses) { @@ -42,18 +41,15 @@ export function addPlutusScript(scripts) { } export function transactionWitnessSetSetVkeys(ws) { - return vkeys => () => - ws.set_vkeys(vkeys); + return vkeys => () => ws.set_vkeys(vkeys); } export function txWitnessSetSetPlutusScripts(ws) { - return scripts => () => - ws.set_plutus_scripts(scripts); + return scripts => () => ws.set_plutus_scripts(scripts); } export function transactionWitnessSetSetNativeScripts(ws) { - return scripts => () => - ws.set_native_scripts(scripts); + return scripts => () => ws.set_native_scripts(scripts); } export function _wsSetBootstraps(helper) { @@ -91,8 +87,7 @@ export function _wsSetRedeemers(helper) { } export function _mkRedeemers(helper) { - return redeemers => - helper.pack(lib.Redeemers, redeemers); + return redeemers => helper.pack(lib.Redeemers, redeemers); } export function _wsSetPlutusScripts(helper) { diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index da69caf7f..07c32d15c 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -12,8 +12,8 @@ export function bnCompare(lhs) { return rhs => lhs.compare(rhs); } -export var zero = lib.BigNum.zero(); -export var one = lib.BigNum.one(); +export const zero = lib.BigNum.zero(); +export const one = lib.BigNum.one(); export function bnAdd(maybe) { return lhs => rhs => { diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index fe21eb664..c955aa331 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -8,8 +8,8 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -export var newPositive = lib.Int.new; -export var newNegative = lib.Int.new_negative; +export const newPositive = lib.Int.new; +export const newNegative = lib.Int.new_negative; export function _intToStr(n) { return n.to_str(); diff --git a/src/Internal/Types/TokenName.js b/src/Internal/Types/TokenName.js index 8f1b9c785..aac83b304 100644 --- a/src/Internal/Types/TokenName.js +++ b/src/Internal/Types/TokenName.js @@ -22,4 +22,4 @@ export function _decodeUtf8(buffer) { // FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/548 const call = property => object => object[property](); -export var assetNameName = call("name"); +export const assetNameName = call("name"); diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index ea7d712c4..2b0966f55 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -40,7 +40,7 @@ const enableWallet = wallet => () => { } }; -export {enableWallet as _enableWallet}; +export { enableWallet as _enableWallet }; const isWalletAvailable = walletName => () => { checkNotNode(); @@ -51,7 +51,7 @@ const isWalletAvailable = walletName => () => { ); }; -export {isWalletAvailable as _isWalletAvailable}; +export { isWalletAvailable as _isWalletAvailable }; export function _isEnabled(walletName) { return () => { diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index efd296d2e..23fd9d37b 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -6,7 +6,9 @@ export function _getNetworkId(conn) { export function _getUtxos(maybe) { return conn => () => - conn.getUtxos().then(res => (res === null ? maybe.nothing : maybe.just(res))); + conn + .getUtxos() + .then(res => (res === null ? maybe.nothing : maybe.just(res))); } export function _getCollateral(maybe) { diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js index cd7684ad2..52efdd22f 100644 --- a/test/ApplyArgs.js +++ b/test/ApplyArgs.js @@ -164,4 +164,4 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { ); } -export {scripts}; +export { scripts }; diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 33b62a195..4ce524546 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -45,7 +45,7 @@ export function verifySignature(coseSign1) { // ----------------------------------------------------------------------------- // _fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 -export var fromBytesCoseSign1 = fromBytes("COSESign1"); +export const fromBytesCoseSign1 = fromBytes("COSESign1"); // getSignedData :: COSESign1 -> Effect CborBytes export function getSignedData(coseSign1) { @@ -63,7 +63,13 @@ const getCoseSign1ProtectedHeaders = coseSign1 => { export function _getCoseSign1ProtectedHeaderAlg(maybe) { return coseSign1 => { const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - return opt_chain(maybe, protectedHeaders, "algorithm_id", "as_int", "as_i32"); + return opt_chain( + maybe, + protectedHeaders, + "algorithm_id", + "as_int", + "as_i32" + ); }; } @@ -91,7 +97,7 @@ export function _getCoseSign1ProtectedHeaderKid(maybe) { // ----------------------------------------------------------------------------- // _fromBytesCoseKey :: CborBytes -> Effect COSEKey -export var fromBytesCoseKey = fromBytes("COSEKey"); +export const fromBytesCoseKey = fromBytes("COSEKey"); // _getCoseKeyHeaderKty :: MaybeFfiHelper -> COSEKey -> Maybe Int export function _getCoseKeyHeaderKty(maybe) { From b41ca18317ea5c3a7ed3ad347e04128f2ef16803 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 30 Jun 2023 16:18:23 +0200 Subject: [PATCH 244/478] build: bump `purs` to v0.15.8 --- flake.lock | 8 ++++---- flake.nix | 2 +- nix/default.nix | 2 +- src/Internal/Affjax.purs | 5 +---- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/flake.lock b/flake.lock index c5bad3c6d..2406373ba 100644 --- a/flake.lock +++ b/flake.lock @@ -3496,17 +3496,17 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "lastModified": 1679861376, + "narHash": "sha256-LLqaLPJNiap2U8I77K5XVPGJA/Be30Z8lyGOyYXmBlc=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" }, "original": { "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" } }, diff --git a/flake.nix b/flake.nix index e1c7996ec..85a25d245 100644 --- a/flake.nix +++ b/flake.nix @@ -35,7 +35,7 @@ flake = false; }; easy-purescript-nix = { - url = "github:justinwoo/easy-purescript-nix/da7acb2662961fd355f0a01a25bd32bf33577fa8"; + url = "github:justinwoo/easy-purescript-nix/0c10ff170461aed0c336f5c21ed0f430c2c3574b"; flake = false; }; diff --git a/nix/default.nix b/nix/default.nix index ac278b444..c95d66ea2 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -25,7 +25,7 @@ let inherit (pkgs) system; - purs = pkgs.easy-ps.purs-0_15_4; + purs = pkgs.easy-ps.purs-0_15_8; spagoPkgs = import spagoPackages { inherit pkgs; }; diff --git a/src/Internal/Affjax.purs b/src/Internal/Affjax.purs index a03371e65..d462a6fd4 100644 --- a/src/Internal/Affjax.purs +++ b/src/Internal/Affjax.purs @@ -2,11 +2,8 @@ module Ctl.Internal.Affjax ( request ) where -import Prelude - import Affjax (AffjaxDriver) -import Affjax (Error, Request, Response) as Affjax -import Affjax (request) as Affjax +import Affjax (Error, Request, Response, request) as Affjax import Data.Either (Either) import Effect.Aff (Aff) From 68e248035e167ab5fba04d1d839c55631522db62 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Jul 2023 08:33:52 +0300 Subject: [PATCH 245/478] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58eab95be..29e2b6282 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,7 +107,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ([#1470](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1470)) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) -- Fix disabled tests ([#1522](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1522)) ### Removed From 6884ef0427c1e93f5555fbc8d36c12014739615b Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 3 Jul 2023 10:47:54 +0200 Subject: [PATCH 246/478] Updates CHANGELOG with `extraSources` and `data` --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..1b43ee97f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +- Added `extraSources` and `data` features to CTL's Nix build function ([#1516](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1516)) - Added several `Ring`-like numeric instances for `Coin` ([#1485](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1485)) - **[IMPORTANT]** New machinery to achieve better synchronization between wallets and query layer has been added. This affects all CTL-based apps when light wallet browser extensions are in use. See [here](./doc/query-layers.md) for more info ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - **Local Blockfrost runtime** based on [run-your-own version of Blockfrost](https://github.com/blockfrost/blockfrost-backend-ryo/) - see [here](./doc/blockfrost.md#running-blockfrost-locally) for more info ([#1395](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1395)) From 8cb2766eab3b884d8403abc31f619d403377ae28 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 3 Jul 2023 17:38:37 +0200 Subject: [PATCH 247/478] build: fix `ToData` and `FromData` instances --- src/Internal/Types/Interval.purs | 11 +++++++++-- test/Data.purs | 17 ++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 16a331cd0..57773de75 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -168,10 +168,17 @@ instance ) instance ToData a => ToData (Extended a) where - toData = genericToData + toData = case _ of + Finite a -> genericToData $ Finite $ toData a + NegInf -> genericToData (NegInf :: Extended Void) + PosInf -> genericToData (PosInf :: Extended Void) instance FromData a => FromData (Extended a) where - fromData = genericFromData + fromData pd = + (genericFromData pd :: _ (Extended PlutusData)) >>= case _ of + Finite a -> Finite <$> fromData a + NegInf -> pure NegInf + PosInf -> pure PosInf derive instance Generic (Extended a) _ derive instance Eq a => Eq (Extended a) diff --git a/test/Data.purs b/test/Data.purs index fb13b6781..277cb6141 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -43,7 +43,7 @@ import Data.Newtype (wrap) import Data.NonEmpty ((:|)) import Data.Show.Generic (genericShow) import Data.Traversable (for_, traverse_) -import Data.Tuple (Tuple, uncurry) +import Data.Tuple (Tuple(Tuple), uncurry) import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Exception (Error) @@ -536,6 +536,10 @@ data Tree a = Node a (Tuple (Tree a) (Tree a)) | Leaf a derive instance G.Generic (Tree a) _ +instance Functor Tree where + map f (Leaf a) = Leaf (f a) + map f (Node a (ltree /\ rtree)) = Node (f a) (map f ltree /\ map f rtree) + instance HasPlutusSchema (Tree a) ( "Node" := PNil @@ Z @@ -546,10 +550,17 @@ instance ) instance (ToData a) => ToData (Tree a) where - toData x = genericToData x -- https://github.com/purescript/documentation/blob/master/guides/Type-Class-Deriving.md#avoiding-stack-overflow-errors-with-recursive-types + -- https://github.com/purescript/documentation/blob/master/guides/Type-Class-Deriving.md#avoiding-stack-overflow-errors-with-recursive-types + toData t = genericToData $ map toData t instance (FromData a) => FromData (Tree a) where - fromData x = genericFromData x + fromData pd = worker =<< (genericFromData pd :: _ (Tree PlutusData)) + where + worker :: Tree PlutusData -> Maybe (Tree a) + worker = case _ of + Leaf a -> Leaf <$> fromData a + Node a (ltree /\ rtree) -> + Node <$> fromData a <*> (Tuple <$> worker ltree <*> worker rtree) fromBytesFromData :: forall a. FromData a => String -> Maybe a fromBytesFromData binary = fromData <<< PDD.convertPlutusData =<< fromBytes From 43678ef6297863368d52233745920b28c2be7238 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 3 Jul 2023 18:18:02 +0200 Subject: [PATCH 248/478] build: use `frequency` with `NonEmptyArray` --- src/Internal/Plutip/Server.purs | 3 ++- src/Internal/Types/Interval.purs | 17 ++++++++--------- test/Data.purs | 13 +++++++------ test/Ogmios/Aeson.purs | 4 ++-- test/Plutip/UtxoDistribution.purs | 7 ++++--- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4b2e52c3d..ef597c51d 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -12,7 +12,7 @@ module Ctl.Internal.Plutip.Server import Prelude import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) -import Affjax as Affjax +import Affjax (defaultRequest) as Affjax import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat @@ -24,6 +24,7 @@ import Control.Monad.Error.Class (liftEither) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad ( buildBackend diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 57773de75..ad78852c6 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -117,6 +117,8 @@ import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) import Ctl.Internal.Types.SystemStart (SystemStart, sysStartUnixTime) import Data.Argonaut.Encode.Encoders (encodeString) import Data.Array (find, head, index, length) +import Data.Array.NonEmpty (singleton) as NEArray +import Data.Array.NonEmpty ((:)) import Data.Bifunctor (bimap, lmap) import Data.BigInt (BigInt) import Data.BigInt (fromInt, fromNumber, fromString, toNumber) as BigInt @@ -128,10 +130,8 @@ import Data.Lattice , class JoinSemilattice , class MeetSemilattice ) -import Data.List (List(Nil), (:)) import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) import Data.Newtype (class Newtype, unwrap, wrap) -import Data.NonEmpty ((:|)) import Data.Number (trunc, (%)) as Math import Data.Show.Generic (genericShow) import Data.Tuple (uncurry) @@ -355,14 +355,13 @@ instance (DecodeAeson a, Ord a, Ring a) => DecodeAeson (Interval a) where pure $ haskIntervalToInterval haskInterval instance (Arbitrary a, Ord a, Semiring a) => Arbitrary (Interval a) where - arbitrary = frequency $ wrap $ + arbitrary = frequency $ (0.25 /\ genFiniteInterval arbitrary) - :| (0.25 /\ genUpperRay arbitrary) - : (0.25 /\ genLowerRay arbitrary) - : (0.1 /\ genSingletonInterval) - : (0.075 /\ pure always) - : (0.075 /\ pure never) - : Nil + : (0.25 /\ genUpperRay arbitrary) + : (0.25 /\ genLowerRay arbitrary) + : (0.1 /\ genSingletonInterval) + : (0.075 /\ pure always) + : NEArray.singleton (0.075 /\ pure never) -- | those accept a generator since we want to use them -- | for Positive Integers in tests diff --git a/test/Data.purs b/test/Data.purs index 277cb6141..4b784b6e4 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -33,6 +33,7 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) +import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) @@ -408,9 +409,9 @@ instance ToData FType' where instance Arbitrary CType where arbitrary = - (frequency <<< wrap) $ + (frequency <<< NEArray.fromNonEmpty) $ (0.25 /\ pure C0) - :| List.fromFoldable + :| [ 0.25 /\ (C1 <$> arbitrary) , 0.25 /\ (C2 <$> arbitrary <*> arbitrary) , 0.25 /\ (C3 <$> arbitrary <*> arbitrary <*> arbitrary) @@ -420,17 +421,17 @@ instance Arbitrary EType where arbitrary = genericArbitrary instance Arbitrary DType where - arbitrary = fix \_ -> (frequency <<< wrap) $ + arbitrary = fix \_ -> frequency $ NEArray.fromNonEmpty $ 0.4 /\ (D0 <$> arbitrary <*> arbitrary <*> arbitrary) - :| List.fromFoldable + :| [ 0.4 /\ (D2 <$> arbitrary) , 0.2 /\ (D1 <$> arbitrary) ] instance Arbitrary FType where - arbitrary = fix \_ -> (frequency <<< wrap) $ + arbitrary = fix \_ -> frequency $ NEArray.fromNonEmpty $ 0.4 /\ (F0 <$> ({ f0A: _ } <<< unwrap <$> arbitrary)) - :| List.fromFoldable + :| [ 0.4 /\ ( F1 <$> ( { f1A: _, f1B: _, f1C: _ } <$> arbitrary <*> arbitrary <*> diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 7d6ca074a..f5f6cd241 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -127,8 +127,8 @@ loadFixtures = do printEvaluateTxFailures :: Effect Unit printEvaluateTxFailures = launchAff_ do - fixtures <- loadFixtures <#> filter (fst >>> (_ == "EvaluateTx")) >>> map snd - flip (traverse >>> traverse) fixtures \{ aeson } -> do + fixtures <- loadFixtures <#> filter (fst >>> eq "EvaluateTx") >>> map snd + void $ flip (traverse >>> traverse) fixtures \{ aeson } -> do let response = hush $ Aeson.decodeAeson aeson :: _ O.TxEvaluationR mbFailure = response >>= unwrap >>> either pure (const Nothing) diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index 8596de608..36e91ae97 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -44,6 +44,7 @@ import Control.Lazy (fix) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) import Data.Array (foldl, head, replicate, zip) +import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.BigInt (BigInt) import Data.BigInt (fromInt, toString) as BigInt import Data.Foldable (intercalate) @@ -137,9 +138,9 @@ genInitialUtxo = map (BigInt.fromInt >>> (_ * BigInt.fromInt 1_000_000)) <$> arrayOf (chooseInt 1 1000) instance Arbitrary ArbitraryUtxoDistr where - arbitrary = fix \_ -> sized $ \size -> resize size $ frequency <<< wrap $ - (1.0 /\ pure UDUnit) :| - List.fromFoldable + arbitrary = + fix \_ -> sized $ \size -> resize size $ frequency $ NEArray.fromNonEmpty $ + (1.0 /\ pure UDUnit) :| [ 2.0 /\ (UDInitialUtxos <$> genInitialUtxo) , 2.0 /\ ( UDInitialUtxosWithStake <$> From 389c5ce435c0fdfb2798f24cbb8ae8baddd0ed4c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 3 Jul 2023 19:08:15 +0200 Subject: [PATCH 249/478] build: use `exists` from `Node.FS.Sync` (ctl compiles!) --- src/Internal/Test/E2E/Runner.purs | 18 ++++++++++-------- src/Internal/Test/KeyDir.purs | 5 +++-- test/Blockfrost/GenerateFixtures/Helpers.purs | 5 +++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index c640a1053..c14aec7ae 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -7,12 +7,13 @@ module Ctl.Internal.Test.E2E.Runner import Prelude -import Affjax (defaultRequest, request) as Affjax +import Affjax (defaultRequest) as Affjax import Affjax (printError) import Affjax.ResponseFormat as Affjax.ResponseFormat import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) import Control.Promise (Promise, toAffE) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.QueryBackend (QueryBackend(CtlBackend)) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) @@ -127,8 +128,9 @@ import Node.ChildProcess ) import Node.ChildProcess as ChildProcess import Node.Encoding as Encoding -import Node.FS.Aff (exists, stat, writeFile) +import Node.FS.Aff (stat, writeFile) import Node.FS.Stats (isDirectory) +import Node.FS.Sync (exists) import Node.Path (FilePath, concat, dirname, relative) import Node.Process (lookupEnv) import Node.Stream (onDataString) @@ -172,7 +174,7 @@ runE2ECommand = case _ of ensureDir :: FilePath -> Aff Unit ensureDir dir = do - dirExists <- exists dir + dirExists <- liftEffect $ exists dir unless dirExists $ do liftEffect $ log $ "Creating directory " <> dir void $ spawnAndCollectOutput "mkdir" [ "-p", dir ] @@ -635,7 +637,7 @@ findSettingsArchive testOptions = do ) pure $ testOptions.settingsArchive - doesExist <- exists settingsArchive + doesExist <- liftEffect $ exists settingsArchive unless doesExist $ do -- Download settings archive from URL if file does not exist @@ -665,7 +667,7 @@ findChromeProfile testOptions = do ) pure $ testOptions.chromeUserDataDir - doesExist <- exists chromeDataDir + doesExist <- liftEffect $ exists chromeDataDir unless doesExist $ ensureChromeUserDataDir chromeDataDir isDir <- isDirectory <$> stat chromeDataDir @@ -725,7 +727,7 @@ readExtensionParams extName wallets = do case crxFile, password, extensionId of Nothing, Nothing, Nothing -> pure Nothing Just crx, Just pwd, Just extId -> do - doesExist <- exists crx + doesExist <- liftEffect $ exists crx unless doesExist $ do -- Download from specified URL if crx file does not exist crxFileUrl <- @@ -759,7 +761,7 @@ packSettings :: SettingsArchive -> ChromeUserDataDir -> Aff Unit packSettings settingsArchive userDataDir = do -- Passing a non-existent directory to tar will error, -- but we can't rely on the existence of these directories. - paths <- filterExistingPaths userDataDir + paths <- liftEffect $ filterExistingPaths userDataDir [ "./Default/IndexedDB/" , "./Default/Local Storage/" , "./Default/Extension State" @@ -786,7 +788,7 @@ packSettings settingsArchive userDataDir = do defaultErrorReader -- | Filter out non-existing paths, relative to the given directory -filterExistingPaths :: FilePath -> Array FilePath -> Aff (Array FilePath) +filterExistingPaths :: FilePath -> Array FilePath -> Effect (Array FilePath) filterExistingPaths base paths = do catMaybes <$> for paths \path -> do exists (concat [ base, path ]) >>= case _ of diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 5b471652e..3598fbe1a 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -106,7 +106,8 @@ import Effect.Exception (error, throw) import Effect.Ref as Ref import Mote.Monad (mapTest) import Node.Encoding (Encoding(UTF8)) -import Node.FS.Aff (exists, mkdir, readTextFile, readdir, writeTextFile) +import Node.FS.Aff (mkdir, readTextFile, readdir, writeTextFile) +import Node.FS.Sync (exists) import Node.Path (FilePath) import Node.Path (concat) as Path import Type.Prelude (Proxy(Proxy)) @@ -254,7 +255,7 @@ restoreWallets backup = do [ backup, walletDir, "stake_signing_key" ] inactiveFlagFile = Path.concat [ backup, walletDir, "inactive" ] -- Skip this wallet if it was marked as inactive - exists inactiveFlagFile >>= case _ of + liftEffect (exists inactiveFlagFile) >>= case _ of true -> pure Nothing false -> do paymentKeyEnvelope <- readTextFile UTF8 paymentKeyFilePath diff --git a/test/Blockfrost/GenerateFixtures/Helpers.purs b/test/Blockfrost/GenerateFixtures/Helpers.purs index a5effdce4..5adb2fdbc 100644 --- a/test/Blockfrost/GenerateFixtures/Helpers.purs +++ b/test/Blockfrost/GenerateFixtures/Helpers.purs @@ -29,7 +29,8 @@ import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.String (take) as String import Effect.Exception (throw) import Node.Encoding (Encoding(UTF8)) -import Node.FS.Aff (exists, writeTextFile) +import Node.FS.Aff (writeTextFile) +import Node.FS.Sync (exists) import Node.Path (concat) import Node.Process (lookupEnv) @@ -90,7 +91,7 @@ storeBlockfrostFixture i query resp = do let filename = query <> "-" <> respHash <> ".json" fp = concat [ "fixtures", "test", "blockfrost", query, filename ] - exists fp >>= flip unless + liftEffect (exists fp) >>= flip unless ( writeTextFile UTF8 fp resp *> log ("Successfully saved fixture #" <> show i <> " to: " <> fp) ) From 3ac0f743259e0e8fea0f3932dbf8c8ebda723c9b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 4 Jul 2023 18:04:02 +0200 Subject: [PATCH 250/478] build: multiple changes 1. use esm imports 2. do not re-export `Undefined` from `Contract.Prelude` 3. fix CIP-30 mock, use `global` object in Node.js environment --- examples/AlwaysMints.js | 5 ++-- examples/AlwaysSucceeds.js | 5 ++-- examples/ECDSA.js | 5 ++-- examples/ExUnits.js | 5 ++-- examples/IncludeDatum.js | 5 ++-- examples/Lose7Ada.js | 5 ++-- examples/MintsMultipleTokens.js | 5 ++-- examples/MultipleRedeemers.js | 5 ++-- examples/OneShotMinting.js | 5 ++-- examples/OtherTypeTextEnvelope.js | 8 ++---- examples/PlutusV2/InlineDatum.js | 8 ++---- examples/PlutusV2/OneShotMinting.js | 8 ++---- examples/PlutusV2/Scripts/AlwaysMints.js | 5 ++-- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 5 ++-- examples/Schnorr.js | 5 ++-- package.json | 2 +- spago.dhall | 1 - src/Contract/Prelude.purs | 2 -- src/Internal/ApplyArgs.js | 13 +++++----- src/Internal/BalanceTx/UtxoMinAda.js | 7 +++--- src/Internal/Base64.js | 2 +- src/Internal/Deserialization/FromBytes.js | 7 +++--- src/Internal/Deserialization/Keys.js | 7 +++--- src/Internal/Deserialization/Language.js | 7 +++--- src/Internal/Deserialization/NativeScript.js | 7 +++--- src/Internal/Deserialization/PlutusData.js | 7 +++--- src/Internal/Deserialization/Transaction.js | 7 +++--- src/Internal/Deserialization/UnspentOutput.js | 7 +++--- src/Internal/Hashing.js | 7 +++--- src/Internal/JsWebSocket.js | 3 ++- src/Internal/Serialization.js | 7 +++--- src/Internal/Serialization/Address.js | 7 +++--- src/Internal/Serialization/AuxiliaryData.js | 7 +++--- src/Internal/Serialization/BigInt.js | 7 +++--- src/Internal/Serialization/Hash.js | 7 +++--- src/Internal/Serialization/MinFee.js | 7 +++--- src/Internal/Serialization/NativeScript.js | 7 +++--- src/Internal/Serialization/PlutusData.js | 7 +++--- src/Internal/Serialization/PlutusScript.js | 7 +++--- src/Internal/Serialization/WitnessSet.js | 7 +++--- src/Internal/Types/BigNum.js | 7 +++--- src/Internal/Types/Int.js | 7 +++--- src/Internal/Types/TokenName.js | 3 ++- src/Internal/Wallet.js | 22 +++++++++------- src/Internal/Wallet/Bip32.js | 8 +++--- src/Internal/Wallet/Cip30/SignData.js | 4 +-- src/Internal/Wallet/Cip30Mock.js | 25 ++++++++----------- test/ApplyArgs.js | 5 ++-- test/Wallet/Bip32.purs | 4 +-- test/Wallet/Cip30/SignData.js | 13 +++++----- 50 files changed, 168 insertions(+), 170 deletions(-) diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js index f859dd074..02f260c01 100644 --- a/examples/AlwaysMints.js +++ b/examples/AlwaysMints.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/always-mints.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/always-mints.plutus"), + new URL("../../fixtures/scripts/always-mints.plutus", import.meta.url), "utf8" ); } diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js index 7ee323003..5d75bf263 100644 --- a/examples/AlwaysSucceeds.js +++ b/examples/AlwaysSucceeds.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/always-succeeds.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/always-succeeds.plutus"), + new URL("../../fixtures/scripts/always-succeeds.plutus", import.meta.url), "utf8" ); } diff --git a/examples/ECDSA.js b/examples/ECDSA.js index a1d874fd3..00f53cbbb 100644 --- a/examples/ECDSA.js +++ b/examples/ECDSA.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/validate-ecdsa.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/validate-ecdsa.plutus"), + new URL("../../fixtures/scripts/validate-ecdsa.plutus", import.meta.url), "utf8" ); } diff --git a/examples/ExUnits.js b/examples/ExUnits.js index 3e0039a9a..fc79dcf4a 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/exunits.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/exunits.plutus"), + new URL("../../fixtures/scripts/exunits.plutus", import.meta.url), "utf8" ); } diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js index fa1910b6b..fb9f62e27 100644 --- a/examples/IncludeDatum.js +++ b/examples/IncludeDatum.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/include-datum.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/include-datum.plutus"), + new URL("../../fixtures/scripts/include-datum.plutus", import.meta.url), "utf8" ); } diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js index 0b7f92ab7..a1e8d12c8 100644 --- a/examples/Lose7Ada.js +++ b/examples/Lose7Ada.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/always-fails.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/always-fails.plutus"), + new URL("../../fixtures/scripts/always-fails.plutus", import.meta.url), "utf8" ); } diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js index 98f9152cd..99429d16d 100644 --- a/examples/MintsMultipleTokens.js +++ b/examples/MintsMultipleTokens.js @@ -7,11 +7,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { redeemerInt2 = require("Scripts/redeemer2.plutus"); redeemerInt3 = require("Scripts/redeemer3.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); const readScript = name => fs.readFileSync( - path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), + new URL(`../../fixtures/scripts/${name}.plutus`, import.meta.url), "utf8" ); redeemerInt1 = readScript("redeemer1"); diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js index f24ce0146..09bf66dbe 100644 --- a/examples/MultipleRedeemers.js +++ b/examples/MultipleRedeemers.js @@ -7,11 +7,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { vredeemerInt2 = require("Scripts/redeemer2-validator.plutus"); vredeemerInt3 = require("Scripts/redeemer3-validator.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); const readScript = name => fs.readFileSync( - path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), + new URL(`../../fixtures/scripts/${name}.plutus`, import.meta.url), "utf8" ); vredeemerInt1 = readScript("redeemer1-validator"); diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js index 214afcd26..9a7374aa8 100644 --- a/examples/OneShotMinting.js +++ b/examples/OneShotMinting.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/one-shot-minting.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/one-shot-minting.plutus"), + new URL("../../fixtures/scripts/one-shot-minting.plutus", import.meta.url), "utf8" ); } diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index 6a27e2121..3f2ec80bc 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -4,13 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/other-type-text-envelope.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve( - __dirname, - "../../fixtures/scripts/other-type-text-envelope.plutus" - ), + new URL("../../fixtures/scripts/other-type-text-envelope.plutus", import.meta.url), "utf8" ); } diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index 4d65a94e9..4be7191c5 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -4,13 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/check-datum-is-inline.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve( - __dirname, - "../../fixtures/scripts/check-datum-is-inline.plutus" - ), + new URL("../../fixtures/scripts/check-datum-is-inline.plutus", import.meta.url), "utf8" ); } diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index c4e3a66a6..b94acb8ec 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -4,13 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/one-shot-minting-v2.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve( - __dirname, - "../../fixtures/scripts/one-shot-minting-v2.plutus" - ), + new URL("../../fixtures/scripts/one-shot-minting-v2.plutus", import.meta.url), "utf8" ); } diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js index 995ee1f57..dee3ecf8e 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ b/examples/PlutusV2/Scripts/AlwaysMints.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/always-mints-v2.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/always-mints-v2.plutus"), + new URL("../../fixtures/scripts/always-mints-v2.plutus", import.meta.url), "utf8" ); } diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index 63748d5aa..849cceaeb 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/always-succeeds-v2.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/always-succeeds-v2.plutus"), + new URL("../../fixtures/scripts/always-succeeds-v2.plutus", import.meta.url), "utf8" ); } diff --git a/examples/Schnorr.js b/examples/Schnorr.js index 2bb28622c..49e261a89 100644 --- a/examples/Schnorr.js +++ b/examples/Schnorr.js @@ -4,10 +4,9 @@ let script; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = require("Scripts/validate-schnorr.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/validate-schnorr.plutus"), + new URL("../../fixtures/scripts/validate-schnorr.plutus", import.meta.url), "utf8" ); } diff --git a/package.json b/package.json index 02c5bbc14..4851ef3fb 100755 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": { "type": "git", "url": "https://github.com/Plutonomicon/cardano-transaction-lib.git" - }, + }, "directories": { "test": "test" }, diff --git a/spago.dhall b/spago.dhall index b7ca7cfcd..3fe7222b5 100644 --- a/spago.dhall +++ b/spago.dhall @@ -88,7 +88,6 @@ You can edit this file as you like. , "typelevel" , "typelevel-prelude" , "uint" - , "undefined" , "unfoldable" , "untagged-union" , "variant" diff --git a/src/Contract/Prelude.purs b/src/Contract/Prelude.purs index abf720b6a..721c776f5 100644 --- a/src/Contract/Prelude.purs +++ b/src/Contract/Prelude.purs @@ -16,7 +16,6 @@ module Contract.Prelude , module Traversable , module Tuple , module TupleNested - , module Undefined ) where -- Imports for extra functions: @@ -334,7 +333,6 @@ import Prelude , (>>>) , (||) ) as PurescriptPrelude -import Undefined (undefined) as Undefined mconcat :: forall (f :: Type -> Type) (m :: Type). Foldable f => Monoid m => f m -> m diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index b2b9a457c..5d382749f 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -3,14 +3,15 @@ let lib; let apply_args; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); - apply_args = require("apply-args-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); + apply_args = await import("apply-args-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); - apply_args = require("apply-args-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + apply_args = await import("apply-args-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -apply_args = require("@mlabs-haskell/csl-gc-wrapper")(apply_args); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); +// apply_args = gcWrapper(apply_args); /** * @param {} left diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index e42976d2b..023f7a290 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function minAdaForOutput(maybe) { return txOutput => dataCost => { diff --git a/src/Internal/Base64.js b/src/Internal/Base64.js index bd6760894..f05f0819e 100644 --- a/src/Internal/Base64.js +++ b/src/Internal/Base64.js @@ -1,4 +1,4 @@ -import base64 from "base64-js"; +import * as base64 from "base64-js"; export const fromByteArray = base64.fromByteArray; export const toByteArray = base64.toByteArray; diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index 4f8820334..62589355c 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _fromBytes(helper) { return name => bytes => { diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index 0e76d24ad..c256eff37 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index 3dfeb32ce..03868dff9 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _convertLanguage(langCtors) { return cslLang => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index fdc5dc64c..3e8ff3f62 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _convertNativeScript(handler) { return ns => { diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index eee107750..62f5dc775 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _convertPlutusData(handle) { return pd => { diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 4de02b2e2..0c049c025 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 976b56fb6..733f2ca97 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 319382353..2d174a493 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -7,11 +7,12 @@ import SHA3 from "jssha/dist/sha3"; let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 38873999e..8a41647af 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -4,7 +4,8 @@ import ReconnectingWebSocket from "reconnecting-websocket"; let OurWebSocket; if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - OurWebSocket = require("ws"); + const { default: WebSocket } = await import("ws"); + OurWebSocket = WebSocket; } else { OurWebSocket = WebSocket; } diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index 4473a01b4..59d2f9c15 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index 8341ec7f8..b844a972d 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const callClassStaticMaybe = (classname, functionname) => maybe => input => { let ret = null; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 816666acf..f1dd93146 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index 79f0d2bc8..712825212 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _BigInt_from_str(helper) { return str => { diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 861e937d6..783ec38c8 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function hashToBytes(hash) { return hash.to_bytes(); diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index c2b2caee3..3a3d0cd86 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _minFee(maybe) { return tx => txFeeFixed => txFeePerByte => { diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index 5dfa7c46f..cbdb38801 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); const mkScript = prop => arg => lib.NativeScript[prop](arg); diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 3933618d8..4c1c8681e 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function _mkPlutusData_bytes(bytes) { return lib.PlutusData.new_bytes(bytes); diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index 607f6575e..eec701181 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function newPlutusV1Script(bytes) { return lib.PlutusScript.new(bytes); diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 36d16f488..28a736895 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function newTransactionWitnessSet() { return lib.TransactionWitnessSet.new(); diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 07c32d15c..d0acc28e1 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export function bnCompare(lhs) { return rhs => lhs.compare(rhs); diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index c955aa331..0446f9d77 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -2,11 +2,12 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); export const newPositive = lib.Int.new; export const newNegative = lib.Int.new_negative; diff --git a/src/Internal/Types/TokenName.js b/src/Internal/Types/TokenName.js index aac83b304..f432d3927 100644 --- a/src/Internal/Types/TokenName.js +++ b/src/Internal/Types/TokenName.js @@ -3,7 +3,8 @@ // `TextDecoder` is not available in `node`, use polyfill in that case let OurTextDecoder; if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - OurTextDecoder = require("util").TextDecoder; + const util = await import("util"); + OurTextDecoder = util.TextDecoder; } else { OurTextDecoder = TextDecoder; } diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 2b0966f55..74afb8afe 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -1,5 +1,9 @@ /* global BROWSER_RUNTIME */ +function getWindow() { + return typeof window != "undefined" ? window : global.window_; +} + const getIsWalletAvailableTagName = wallet => { const strs = { nami: "NamiWallet", @@ -18,14 +22,14 @@ const nodeEnvError = new Error( ); const checkNotNode = () => { - if (typeof window != "object") { + if (typeof getWindow() != "object") { throw nodeEnvError; } }; const enableWallet = wallet => () => { if (isWalletAvailable(wallet)()) { - return window.cardano[wallet].enable().catch(e => { + return getWindow().cardano[wallet].enable().catch(e => { throw new Error( "enableWallet failed: " + (typeof e.info == "string" ? e.info : e.toString()) @@ -45,9 +49,9 @@ export { enableWallet as _enableWallet }; const isWalletAvailable = walletName => () => { checkNotNode(); return ( - typeof window.cardano != "undefined" && - typeof window.cardano[walletName] != "undefined" && - typeof window.cardano[walletName].enable == "function" + typeof getWindow().cardano != "undefined" && + typeof getWindow().cardano[walletName] != "undefined" && + typeof getWindow().cardano[walletName].enable == "function" ); }; @@ -56,7 +60,7 @@ export { isWalletAvailable as _isWalletAvailable }; export function _isEnabled(walletName) { return () => { if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].isEnabled(); + return getWindow().cardano[walletName].isEnabled(); } else { throw new Error("Wallet `" + walletName + "` is not available"); } @@ -66,7 +70,7 @@ export function _isEnabled(walletName) { export function _apiVersion(walletName) { return () => { if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].apiVersion; + return getWindow().cardano[walletName].apiVersion; } else { throw new Error("Wallet `" + walletName + "` is not available"); } @@ -76,7 +80,7 @@ export function _apiVersion(walletName) { export function _name(walletName) { return () => { if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].name; + return getWindow().cardano[walletName].name; } else { throw new Error("Wallet `" + walletName + "` is not available"); } @@ -86,7 +90,7 @@ export function _name(walletName) { export function _icon(walletName) { return () => { if (isWalletAvailable(walletName)()) { - return window.cardano[walletName].icon; + return getWindow().cardano[walletName].icon; } else { throw new Error("Wallet `" + walletName + "` is not available"); } diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index bdff56d6a..493c3ffba 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -2,11 +2,13 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); + import bip39 from "bip39"; const HARDENED = 0x80000000; diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js index 7cc4117b8..b105a9ee3 100644 --- a/src/Internal/Wallet/Cip30/SignData.js +++ b/src/Internal/Wallet/Cip30/SignData.js @@ -2,9 +2,9 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-message-signing-browser"); + lib = await import("@emurgo/cardano-message-signing-browser"); } else { - lib = require("@emurgo/cardano-message-signing-nodejs"); + lib = await import("@emurgo/cardano-message-signing-nodejs"); } // ----------------------------------------------------------------------------- diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index a92d55cb8..db6e2bdd8 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -2,12 +2,12 @@ export function injectCip30Mock(walletName) { return mock => () => { - const hadWindow = typeof window != "undefined"; + let window_ = typeof window != "undefined" ? window : (global.window_ = {}); if ( - typeof window == "object" && - typeof window.cardano == "object" && - typeof window.cardano[walletName] != "undefined" + typeof window_ == "object" && + typeof window_.cardano == "object" && + typeof window_.cardano[walletName] != "undefined" ) { throw ( "injectCip30Mock: refusing to overwrite existing wallet (" + @@ -15,14 +15,9 @@ export function injectCip30Mock(walletName) { ")" ); } - - if (typeof window == "undefined") { - window = { cardano: {} }; - } else if (typeof window.cardano == "undefined") { - window.cardano = {}; - } - - window.cardano[walletName] = { + + window_.cardano = {}; + window_.cardano[walletName] = { enable: () => { return new Promise((resolve, _reject) => resolve({ @@ -44,9 +39,9 @@ export function injectCip30Mock(walletName) { }; return () => { - delete window.cardano[walletName]; - if (!hadWindow) { - window = undefined; + delete window_.cardano[walletName]; + if (typeof window == "undefined") { + global.window_ = undefined; } }; }; diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js index 52efdd22f..757995134 100644 --- a/test/ApplyArgs.js +++ b/test/ApplyArgs.js @@ -80,11 +80,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { "redeemer1-validator-unit" ] = require("Scripts/applied/redeemer1-validator-unit.plutus"); } else { - const fs = require("fs"); - const path = require("path"); + const fs = await import("fs"); const read_script = fp => { return fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/".concat(fp)), + new URL("../../fixtures/scripts/".concat(fp), import.meta.url), "utf8" ); }; diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 0247eb6f8..22e5e1ac1 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -17,11 +17,11 @@ import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Lens (_Left, preview) import Data.UInt as UInt import Effect.Aff (Aff) -import Mote (group, only, test) +import Mote (group, test) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit -suite = only do +suite = do group "BIP32/BIP39/CIP1852 wallets" do group "generates valid wallets for valid phrases" do for_ accs \(accountIndex /\ addressIndex /\ addressStr) -> do diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 4ce524546..331d34260 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -2,14 +2,15 @@ let lib, csl; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-message-signing-browser"); - csl = require("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@emurgo/cardano-message-signing-browser"); + csl = await import("@emurgo/cardano-serialization-lib-browser"); } else { - lib = require("@emurgo/cardano-message-signing-nodejs"); - csl = require("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@emurgo/cardano-message-signing-nodejs"); + csl = await import("@emurgo/cardano-serialization-lib-nodejs"); } -lib = require("@mlabs-haskell/csl-gc-wrapper")(lib); -csl = require("@mlabs-haskell/csl-gc-wrapper")(csl); +import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +lib = gcWrapper(lib); +csl = gcWrapper(csl); function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From 6e061e1f1a4ac86d045cff48be1513914c258961 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 4 Jul 2023 18:19:35 +0200 Subject: [PATCH 251/478] build: fix `package.json`, re-gen `spago-packages.nix`, fix formatting --- examples/OtherTypeTextEnvelope.js | 5 +- examples/PlutusV2/InlineDatum.js | 5 +- examples/PlutusV2/OneShotMinting.js | 5 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 5 +- package.json | 3 +- spago-packages.nix | 800 +++++++++----------- src/Internal/Wallet.js | 14 +- src/Internal/Wallet/Cip30Mock.js | 2 +- 8 files changed, 403 insertions(+), 436 deletions(-) diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index 3f2ec80bc..2c087801e 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -6,7 +6,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } else { const fs = await import("fs"); script = fs.readFileSync( - new URL("../../fixtures/scripts/other-type-text-envelope.plutus", import.meta.url), + new URL( + "../../fixtures/scripts/other-type-text-envelope.plutus", + import.meta.url + ), "utf8" ); } diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index 4be7191c5..724620f74 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -6,7 +6,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } else { const fs = await import("fs"); script = fs.readFileSync( - new URL("../../fixtures/scripts/check-datum-is-inline.plutus", import.meta.url), + new URL( + "../../fixtures/scripts/check-datum-is-inline.plutus", + import.meta.url + ), "utf8" ); } diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index b94acb8ec..bfe827a71 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -6,7 +6,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } else { const fs = await import("fs"); script = fs.readFileSync( - new URL("../../fixtures/scripts/one-shot-minting-v2.plutus", import.meta.url), + new URL( + "../../fixtures/scripts/one-shot-minting-v2.plutus", + import.meta.url + ), "utf8" ); } diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index 849cceaeb..5308d431f 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -6,7 +6,10 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { } else { const fs = await import("fs"); script = fs.readFileSync( - new URL("../../fixtures/scripts/always-succeeds-v2.plutus", import.meta.url), + new URL( + "../../fixtures/scripts/always-succeeds-v2.plutus", + import.meta.url + ), "utf8" ); } diff --git a/package.json b/package.json index 4851ef3fb..c5b938f64 100755 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { + "type": "module", "name": "cardano-transaction-lib", "version": "5.0.0", "description": "", "repository": { "type": "git", "url": "https://github.com/Plutonomicon/cardano-transaction-lib.git" - }, + }, "directories": { "test": "test" }, diff --git a/spago-packages.nix b/spago-packages.nix index 465ce6127..71f297fae 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "bfd8f4dcd0522a076320f9dc710c24817438e02e"; + version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "bfd8f4dcd0522a076320f9dc710c24817438e02e"; - sha256 = "1ywm51wqvwjqfrmhav6m4hyl9il3h77yyhzgyhvkvg0lkc0nn575"; + url = "https://github.com/errfrom/purescript-aeson.git"; + rev = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -19,11 +19,11 @@ let "aff" = pkgs.stdenv.mkDerivation { name = "aff"; - version = "v6.0.0"; + version = "v7.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-aff.git"; - rev = "d0eb009f2f47cb1f5ba1d8592d90c95e8e7ff75d"; - sha256 = "1780sgqyvbdgh8ynxmxn5d44vvhaz7kn9sv3l44c2s9q8xfjkfgm"; + rev = "6adec6ff048a7876f74c294c440374cd21342d39"; + sha256 = "1viplap030ym9ya033xl6x41hvdc12v9ngwp1v64ayl40a5m1d47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -31,11 +31,11 @@ let "aff-promise" = pkgs.stdenv.mkDerivation { name = "aff-promise"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/nwolverson/purescript-aff-promise.git"; - rev = "45cfba7f663fce12fe69285fe5acaa4ff025144c"; - sha256 = "12fnlwcrj5p6kc5rls7qxwg53zd83gkdpklpmp8jyav945hlgbj2"; + rev = "3aa74e68e3e4c3e38d821375703e0b2f49d831eb"; + sha256 = "10gv3b05dxnlmr9zmigqs1hz4xqrx7da30aqh12kqg3zrg49k9cc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -43,11 +43,11 @@ let "aff-retry" = pkgs.stdenv.mkDerivation { name = "aff-retry"; - version = "v1.2.1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/Unisay/purescript-aff-retry.git"; - rev = "936fad803e3610f149df724ead288657a905cb84"; - sha256 = "08651ly153ywzviab0ipd0zrhwdr8nz4xfym45dlpbgabgrh8pra"; + rev = "4464f4bf62151651c8a86b33fc3c3149f7c71580"; + sha256 = "00xmfrx41giflrbdxm6hzmr23iqzr34x656kjpbmk3zvm49n6726"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -55,11 +55,11 @@ let "affjax" = pkgs.stdenv.mkDerivation { name = "affjax"; - version = "v12.0.0"; + version = "v13.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-affjax.git"; - rev = "5be197edc213fbededb8da908f77b69908eaa6f8"; - sha256 = "1f2snaimnl9ry8f3kankfcyy50wkba54vvin4wsrglahqgs1nrgb"; + rev = "87a8ffce89a476c1425370eb4b2b7e15408e0d1c"; + sha256 = "02hd0pfa1lb06a8qg2mqmkhyn3cz8hbvh6r9h2i6xcfqh0r8jg7s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -67,11 +67,11 @@ let "ansi" = pkgs.stdenv.mkDerivation { name = "ansi"; - version = "v6.1.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/hdgarrood/purescript-ansi.git"; - rev = "e89e6fede616bd16b001841cf30ac320c95313a6"; - sha256 = "1jsll0h7nz13zgscs036cnkkc6frnlcnk6fwjdwsyp6wbmjri2zm"; + rev = "7d898732d643a977a78004851112a4417909e126"; + sha256 = "1aml84m5p1s14kj29m39182byg44nf275p4cinx3kgwhv1gj0qcp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -79,11 +79,11 @@ let "argonaut" = pkgs.stdenv.mkDerivation { name = "argonaut"; - version = "v8.0.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut.git"; - rev = "e5137df76065c14e5de70c4e2820222bd7c78fc2"; - sha256 = "05sq1102rl1phm2gadx0gp966yvk9q1r492bb30q1m0nz762q4v2"; + rev = "7505a47f2edb0c9cacaac4f11dcedf4723a3e9c8"; + sha256 = "18yxhlrwri6q858krz1klyq29fx8nvfm16c04wm2rn91mgyasn6x"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -91,11 +91,11 @@ let "argonaut-codecs" = pkgs.stdenv.mkDerivation { name = "argonaut-codecs"; - version = "v8.1.0"; + version = "v9.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-codecs.git"; - rev = "b0a041d92bfd548e2cd793cc7c02363464325a13"; - sha256 = "11vmlq98s4jmg5grvdrrlfkqj9vk3la44ky8158a440ipcpinjkq"; + rev = "f8fdc1e34142fa84e66022ea5d417a008d709146"; + sha256 = "1ncpl512k2xdaf7r5ixwxkm6i4vym7a6a3ih71z489h9ad781q73"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -103,11 +103,11 @@ let "argonaut-core" = pkgs.stdenv.mkDerivation { name = "argonaut-core"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-core.git"; - rev = "673971dee79667882a83f9fda7097e50530726f1"; - sha256 = "13ka4xybc8ql54xlkkhy4919nnapfigdlk51ja85f8xwhr64x9kq"; + rev = "68da81dd80ec36d3b013eff46dc067a972c22e5d"; + sha256 = "0hxl17ddbflkk0hchjgk5xj6j9fwp3b182w4g073p0dwscdl4f08"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -115,11 +115,11 @@ let "argonaut-traversals" = pkgs.stdenv.mkDerivation { name = "argonaut-traversals"; - version = "v9.0.0"; + version = "v10.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-traversals.git"; - rev = "36f2e368ceea1ed681bd8e2884eaca451945fc44"; - sha256 = "0bj88s7rz50jfhyawq4h97lvbr3h7pksbqnz4lmh714f5fda6ncx"; + rev = "8d2403d8d57afb568933dbb36063d5670ce770a0"; + sha256 = "0v965bcl1hdp1hacbzxcm35kxxclixj0kpsdm816gs7m548z6l43"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -127,11 +127,11 @@ let "arraybuffer-types" = pkgs.stdenv.mkDerivation { name = "arraybuffer-types"; - version = "v3.0.1"; + version = "v3.0.2"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-arraybuffer-types.git"; - rev = "48cd7f4887791db1d9c2daf5fd98b62ba00e15bd"; - sha256 = "09r6bhsiq9iqdsjf9p8m3p31qkszsipsafvy836mfdi8af6h5fv6"; + rev = "9b0b7a0f9ee034e039f3d3a2a9c3f74eb7c9264a"; + sha256 = "1q3111jk6jj64bxy86lc7ik6q5mgdz87bc086wj5rm57dmlivlxx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -139,11 +139,11 @@ let "arrays" = pkgs.stdenv.mkDerivation { name = "arrays"; - version = "v6.0.1"; + version = "v7.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-arrays.git"; - rev = "c0aa3176b077ad7a46b11ef34487485c28142e53"; - sha256 = "0lm0m5hapimchzgfywr648pkw1hpggr6qibh8d19p2impbnc94c0"; + rev = "bb1b821530d368110eebf8a3541af90823e8af65"; + sha256 = "1mb9a4pb1bd7fj4vqj6msv5z27jbb5f89w3nczgjjhs02909phk9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -151,11 +151,11 @@ let "assert" = pkgs.stdenv.mkDerivation { name = "assert"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-assert.git"; - rev = "71a3b1f3b9917c23691fdbb1858de171be871a10"; - sha256 = "0r1l7j67an8dy1w4xdpr8nc30lsxv31xwqph9mkfh3nd49jlyyd3"; + rev = "27c0edb57d2ee497eb5fab664f5601c35b613eda"; + sha256 = "02qpcsijil64qq4kcikv2ynxl85zkryvv0vmzjm6752956ymzi0j"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -163,11 +163,11 @@ let "avar" = pkgs.stdenv.mkDerivation { name = "avar"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-avar.git"; - rev = "ac3cbbb8d4b71ff19a78a3178355c089e44d3b4d"; - sha256 = "005046wl61w6r5v3qwd16srhcx82vdz3yvp4xzad2xaasb6iq55l"; + rev = "d00f5784d9cc8f079babd62740f5c52b87e5caa5"; + sha256 = "132g0ccmjr8328xpaycww8b5wmx1vi3li4irxxqcjk5wi47i8c9h"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -175,11 +175,11 @@ let "bifunctors" = pkgs.stdenv.mkDerivation { name = "bifunctors"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-bifunctors.git"; - rev = "a31d0fc4bbebf19d5e9b21b65493c28b8d3fba62"; - sha256 = "0xc2hf8ccdgqw3m9qcmr38kmzv05fsxvakd07wyrqshvkzg3xn0d"; + rev = "16ba2fb6dd7f05528ebd9e2f9ca3a068b325e5b3"; + sha256 = "1qz5aaiq5w4g1rhjb63z47h6nqhw8hw23x1zw5alam047pq4vfkg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -187,11 +187,11 @@ let "bigints" = pkgs.stdenv.mkDerivation { name = "bigints"; - version = "v6.0.0"; + version = "v7.0.1"; src = pkgs.fetchgit { - url = "https://github.com/sharkdp/purescript-bigints.git"; - rev = "d5151e04db7e18641fbb2b5892f4198b1cab5907"; - sha256 = "0x8s6d6q2rpfkk56bmayg57a7hl2h7sq9ljrxfc8sjnwd7mfs193"; + url = "https://github.com/purescript-contrib/purescript-bigints.git"; + rev = "e73f55b866e437c7bf04c7d262de7c205c47bbca"; + sha256 = "0msh5sv6g0k69fi0qv4xi1g89bfwai099f0ycjb8a69mnjq8x21n"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -199,11 +199,11 @@ let "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; - version = "705923edd892a3397b90d28ce7db9a7181dcd599"; + version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-bignumber"; - rev = "705923edd892a3397b90d28ce7db9a7181dcd599"; - sha256 = "0wddkx161xk457r1mb1f1r79l8qgxja0xhdvxjd1ai43nwp9cgkf"; + url = "https://github.com/errfrom/purescript-bignumber"; + rev = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + sha256 = "03py821gnkgi5p7zaxwr4rqsiv67v83y5c04i6x4v15nr6aaf7vz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -211,11 +211,11 @@ let "catenable-lists" = pkgs.stdenv.mkDerivation { name = "catenable-lists"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-catenable-lists.git"; - rev = "ee03395f2c5d59a7fd8529a0faac6ec1ebcbb682"; - sha256 = "1lz06fx0za5sl65wccn5fl37mw3x4jnvrriz1gg0aqsmm9lag7ss"; + rev = "09abe1f4888bc00841ad2b59e56a9e7ce7ebd4ab"; + sha256 = "0fn6caspdnb0nrlj31sy7d5hxrhndfz7a2b9wfkxf5bv5vpjyawb"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -235,11 +235,11 @@ let "console" = pkgs.stdenv.mkDerivation { name = "console"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-console.git"; - rev = "d7cb69ef8fed8a51466afe1b623868bb29e8586e"; - sha256 = "0fzzzqjgrz33pb2jf7cdqpg09ilxb7bsrc7sbfq52wjg0sx9aq6g"; + rev = "3b83d7b792d03872afeea5e62b4f686ab0f09842"; + sha256 = "0fr5l1myhscp910mybp04cg6g8f2hy3ikjfc8fkqlb2dm2cqzdfs"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -247,11 +247,11 @@ let "const" = pkgs.stdenv.mkDerivation { name = "const"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-const.git"; - rev = "3a3a4bdc44f71311cf27de9bd22039b110277540"; - sha256 = "0aq9qjbrvf8mf8hmas6imv4mg6n3zi13hkf449ns1hn12lw8qv4g"; + rev = "ab9570cf2b6e67f7e441178211db1231cfd75c37"; + sha256 = "0mcpwqqf5bcwxlzk53smvsjjz1ymlnq0ypphg6sc83ibw70g64f6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "contravariant" = pkgs.stdenv.mkDerivation { name = "contravariant"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-contravariant.git"; - rev = "ae1a765f7ddbfd96ae1f12e399e46d554d8e3b38"; - sha256 = "029hb8i3n4759x4gc06wkfgr7wim5x1w5jy2bsiy42n0g731h5qc"; + rev = "9ad3e105b8855bcc25f4e0893c784789d05a58de"; + sha256 = "1xkd3rfs8v20w7mj6sj6dmhfb2vb1zpmjv245xj1rahk3g16qm7m"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "control" = pkgs.stdenv.mkDerivation { name = "control"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-control.git"; - rev = "18d582e311f1f8523f9eb55fb93c91bd21e22837"; - sha256 = "06dc06yli4g5yr8fb9sdpqbhiaff37g977qcsbds9q2mlhnjgfx9"; + rev = "a6033808790879a17b2729e73747a9ed3fb2264e"; + sha256 = "05sdgywprwpav62d2bvlb80yd39brxhnmhhl1f116mm9hw5clqia"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -283,11 +283,11 @@ let "crypto" = pkgs.stdenv.mkDerivation { name = "crypto"; - version = "v4.0.0"; + version = "v5.0.1"; src = pkgs.fetchgit { url = "https://github.com/oreshinya/purescript-crypto.git"; - rev = "cbc19e06c5e4d528e7733633e50c070b1aa0f77e"; - sha256 = "142p9f0mg1yi4bccg3jwhhyn4k4yy5fskh08p05n9sfym27ss126"; + rev = "c72b4b789e52a1fb31c65cd318ea82bf295af1ec"; + sha256 = "07p7153j3brsfyc1pik4y760g054zx1kwy2ap67pfs41zv982s03"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "datetime" = pkgs.stdenv.mkDerivation { name = "datetime"; - version = "v5.0.2"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-datetime.git"; - rev = "e110462829ea656d2bc0924266d4edff222108d4"; - sha256 = "1mhzn2ymdkzki7wjlr9xrdbngm0886wmfbh2c46flnf9lmfyw54y"; + rev = "7f6062346055e654942caed6c44612b59031f059"; + sha256 = "0z5f62arrli0dgmggv6z2qkv1qc9isdivcn7njywsa8wmc4vd47n"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -307,11 +307,11 @@ let "debug" = pkgs.stdenv.mkDerivation { name = "debug"; - version = "v5.0.0"; + version = "v6.0.2"; src = pkgs.fetchgit { url = "https://github.com/garyb/purescript-debug.git"; - rev = "144305842dba81169a93b3a3cc75429d5c8389e9"; - sha256 = "09j69bgrq8nzw1l3aj1hka3y5ycmcsn9dlgf22k5ifrd74iic60y"; + rev = "a37b82f62c89734934c0962ece3412913020460a"; + sha256 = "0q3r21zh0kjy9aq8q2siaf8841q63cmxjl2fbk0z3r0z4cfihccg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -319,11 +319,11 @@ let "distributive" = pkgs.stdenv.mkDerivation { name = "distributive"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-distributive.git"; - rev = "11f3f87ca5720899e1739cedb58dd6227cae6ad5"; - sha256 = "0788znmdyh6b1c9pln624ah397l88xmd3fxlxiy3z1qy8bzr4r54"; + rev = "6005e513642e855ebf6f884d24a35c2803ca252a"; + sha256 = "0x6cfsx9ff66kvw9l10pxd5vv16r91mmfxrfc68w1xfdfi81lhdx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -331,11 +331,11 @@ let "effect" = pkgs.stdenv.mkDerivation { name = "effect"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-effect.git"; - rev = "985d97bd5721ddcc41304c55a7ca2bb0c0bfdc2a"; - sha256 = "1n9qr85knvpm4i0qhm8xbgfk46v9y843p76j278phfs9l6aywzsn"; + rev = "a192ddb923027d426d6ea3d8deb030c9aa7c7dda"; + sha256 = "0aa10lc6h9mlf4xf3g3ziig7v6kxdqvbh20kma8ay59w0b1bhmj1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -343,11 +343,11 @@ let "either" = pkgs.stdenv.mkDerivation { name = "either"; - version = "v5.0.0"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-either.git"; - rev = "c1a1af35684f10eecaf6ac7d38dbf6bd48af2ced"; - sha256 = "18dk159yyv7vs0xsnh9m5fajd7zy6zw5b2mpyd6nqdh3c6bb9wh6"; + rev = "af655a04ed2fd694b6688af39ee20d7907ad0763"; + sha256 = "05zps4klvgmvlm06f4hrycssm8q0pysbqnjsrk26lfvmid6mmg63"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -355,11 +355,11 @@ let "encoding" = pkgs.stdenv.mkDerivation { name = "encoding"; - version = "v0.0.7"; + version = "v0.0.8"; src = pkgs.fetchgit { url = "https://github.com/menelaos/purescript-encoding.git"; - rev = "0a4187136f9ea4ea51ddf635e3b3c2cd2461faac"; - sha256 = "1rsnn8g2lx24k9wflr1jj12281i0smprb76nfm2f61yqqiwgij4d"; + rev = "a9d1913de736821c133ecd7944a08b2ab07ad774"; + sha256 = "0c23bpfw67ik1n821bq3s0w036sk7yqi4fy5fd7dgf4325abk6zn"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -367,11 +367,11 @@ let "enums" = pkgs.stdenv.mkDerivation { name = "enums"; - version = "v5.0.0"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-enums.git"; - rev = "170d959644eb99e0025f4ab2e38f5f132fd85fa4"; - sha256 = "1lci5iy6s6cmh93bpkfcmp0j4n5dnij7dswb0075bk0kzd9xp7rs"; + rev = "cd373c580b69fdc00e412bddbc299adabe242cc5"; + sha256 = "1wk98ddmgyii1ifqawnhqkiqlrs405qcp3m12jsg1yp8jv6ppv47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -379,11 +379,11 @@ let "exceptions" = pkgs.stdenv.mkDerivation { name = "exceptions"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-exceptions.git"; - rev = "410d0b8813592bda3c25028540eeb2cda312ddc9"; - sha256 = "1yjbrx34a0rnxgpvywb63n9jzhkdgb2q2acyzbwh290mrrggc95x"; + rev = "afab3c07c820bb49b6c5be50049db46a964a6161"; + sha256 = "04xrbrcjwsv8gj465ygrlqhv1majxmr6m242iazg6apxlr89hgvg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -391,11 +391,11 @@ let "exists" = pkgs.stdenv.mkDerivation { name = "exists"; - version = "v5.1.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-exists.git"; - rev = "c34820f8b2d15be29abdd5097c3d636f5df8f28c"; - sha256 = "15qp52cpp2yvxihkzfmn6gabyvx5s6iz5lafvqhyfgp4wfnz0bds"; + rev = "f765b4ace7869c27b9c05949e18c843881f9173b"; + sha256 = "0xnxi8fsmi15wrpq5d99gg94glk8a45hpx7pf4pmxg5r6rn1vjvx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -415,11 +415,11 @@ let "fixed-points" = pkgs.stdenv.mkDerivation { name = "fixed-points"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-fixed-points.git"; - rev = "3b643d948479aee7cd3e36c95258f1f84df0c35f"; - sha256 = "0w2j0sarylzsmg8b228pmn3qndif0bzw2vmxrx30ar15qy7jdb5d"; + rev = "2b7f480038a15c707adf49178181cefed167afb2"; + sha256 = "1iib0yxl749lg4m7ysqmb9aby67a9829x38xc2rma5fk9fv30cw7"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -427,11 +427,11 @@ let "foldable-traversable" = pkgs.stdenv.mkDerivation { name = "foldable-traversable"; - version = "v5.0.1"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foldable-traversable.git"; - rev = "d581caf260772b1b446c11ac3c8be807b290b220"; - sha256 = "182na4np7hk2dqyxywy4jij2csrzx4bz02m6bq8yx1j27hlgjvsd"; + rev = "b3926f870532d287ea59e2d5cd3873b81ef2a93a"; + sha256 = "0xg8qvyc6r9wqgy7wnw1rjqljl4wpgdrkxsm5x9rsagj2k5brxip"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -439,11 +439,11 @@ let "foreign" = pkgs.stdenv.mkDerivation { name = "foreign"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foreign.git"; - rev = "7ee18c6689c56c89755172ea53326f948da10bd3"; - sha256 = "16j7712cck79p8q53xbhn4hs886bm0ls5wvmchrhqnaghj48m85g"; + rev = "2dd222d1ec7363fa0a0a7adb0d8eaf81bb7006dd"; + sha256 = "0ycjaal8b2rsg3zl3b7acv166vjfdvziiza3fs8nhfw0rx0xmm1m"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -451,11 +451,11 @@ let "foreign-object" = pkgs.stdenv.mkDerivation { name = "foreign-object"; - version = "v3.0.0"; + version = "v4.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foreign-object.git"; - rev = "c9a7b7bb8bed1b87c5545c4ebe85a70f86c0e6b1"; - sha256 = "0accw6qd93qqry19rskjgl7y54xi2wd70rglbqyjx6c5ybcjnavr"; + rev = "9bfb4eb6271b151414594cfec669fb4b18b91bd1"; + sha256 = "1fr5hwzkan7yv2kbgvii2b8kanhjkqrbixcyj7kyv9fwkk8dk96a"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -463,11 +463,11 @@ let "fork" = pkgs.stdenv.mkDerivation { name = "fork"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-fork.git"; - rev = "153cc29e6e51fb1108368efc622d41d9f80bd707"; - sha256 = "1hyvaixza8151zbylk2kv859x48yyhla536lcjghcwd62vzfwmdn"; + rev = "a5c3bc6f357e97669e8c29c6f79f5f55be0d42c0"; + sha256 = "0yzh55vfrhrr660ni3sbbljypjirbka5jlks4zibqmhwrmy3wnj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -475,11 +475,11 @@ let "form-urlencoded" = pkgs.stdenv.mkDerivation { name = "form-urlencoded"; - version = "v6.0.2"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-form-urlencoded.git"; - rev = "860b2c4bf0a848322d2077faaefbeb98762cb8d6"; - sha256 = "1pi3vxix10crisisnd94li1vmmgiawlh5lgl51z7ssd9azygg0b0"; + rev = "e0e3eebc76f62f2594a0e823e8d6241ca00b2459"; + sha256 = "1ay946w7gkgqrxxv5qf28w83mh59r1q4j8kk6pndhripz9pby68w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -487,11 +487,11 @@ let "formatters" = pkgs.stdenv.mkDerivation { name = "formatters"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-formatters.git"; - rev = "b2e65b2bccd09a3c17a396f07e13e5cdca90e4e4"; - sha256 = "02c43sv6ci2698mjkmvkv3cjv99ilxv8ii8x7n9wqf18r4hlmk0y"; + rev = "0b4deda4c6664209173e3e21b8fcbc6151a4549c"; + sha256 = "0z3w5qbfd8z8bakir3rwanq6dcf554f3apacxw5l2vxscvikyra3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -499,11 +499,11 @@ let "free" = pkgs.stdenv.mkDerivation { name = "free"; - version = "v6.2.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-free.git"; - rev = "c185c0b2144ddfb2bc3ac2b345df32e33221b21d"; - sha256 = "10zsw49wzlzz78882b3grl19gpca5llpdk3ph608075h0ygk3q3k"; + rev = "e2d8fa8023a864363857834e11393483bced5e38"; + sha256 = "0gyy0k297m26gw76w7kx8k1zjczlqbqb3nmh2h4gb3r84gl05g6r"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -511,11 +511,11 @@ let "freet" = pkgs.stdenv.mkDerivation { name = "freet"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-freet.git"; - rev = "507c2edd9173cda5ad44dd0638133edd69fd9acd"; - sha256 = "0f5bibw604sd9ffmp51b3jppka88r54mh7sdz91zy5b92wgsy5yr"; + rev = "21be6fba22599a25812430dda6ba2ca8135920a1"; + sha256 = "006wbr7f19k7vs1jg4wgkwyx1q4wvvs2wqscfcxsp8fzfpn2yqw8"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -523,11 +523,11 @@ let "functions" = pkgs.stdenv.mkDerivation { name = "functions"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-functions.git"; - rev = "691b3345bc2feaf914e5299796c606b6a6bf9ca9"; - sha256 = "1gnk6xh5x04zcahn82gwp49qpglxd5jkfqn0i58m27jfihvblaxd"; + rev = "f626f20580483977c5b27a01aac6471e28aff367"; + sha256 = "1bsf2y8hx103a92yrc6m05q2dv51ckag1srd7q5n9vaf2k9byrj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -535,11 +535,11 @@ let "functors" = pkgs.stdenv.mkDerivation { name = "functors"; - version = "v4.1.1"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-functors.git"; - rev = "e936f7a8d2ec53a344c478ccada5add93273848c"; - sha256 = "0i1x14r54758s5jx5d7zy4l07mg6gabljadgybldnbpmdqk6b966"; + rev = "022ffd7a2a7ec12080314f3d217b400674a247b4"; + sha256 = "1pnw3r1nk0rx8mrw3ajjml40zvx9v26qrqwj77pz7hpwxigxfbff"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -547,11 +547,11 @@ let "gen" = pkgs.stdenv.mkDerivation { name = "gen"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-gen.git"; - rev = "85c369f56545a3de834b7e7475a56bc9193bb4b4"; - sha256 = "1h396rqn1fc2c155i58vnaksqjrpajly128ah6wq1w426vwr1vrf"; + rev = "9fbcc2a1261c32e30d79c5418edef4d96fe76931"; + sha256 = "0kajzcp9a8dmqvb3ga27hlf18m2smbp98a0bmzzb9vv156ckw0b4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -559,11 +559,11 @@ let "heterogeneous" = pkgs.stdenv.mkDerivation { name = "heterogeneous"; - version = "v0.5.1"; + version = "v0.6.0"; src = pkgs.fetchgit { url = "https://github.com/natefaubion/purescript-heterogeneous.git"; - rev = "550445cf7932e158395423fc087cdc05bab41c40"; - sha256 = "08bpgm9p8ib1jzrmssqpa1bqqzfmba43lsih1xvr3pf1jfizayxg"; + rev = "5b7542bdd9547c5aef95b8878f103f0ce4ee1383"; + sha256 = "0ff1wjq2ayhy67ydggbb2qlzbhvmv1m1z8dcp48p9zhxiq9fpfsz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -571,11 +571,11 @@ let "http-methods" = pkgs.stdenv.mkDerivation { name = "http-methods"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-http-methods.git"; - rev = "d373066a45017e886d1580cd359372368231de47"; - sha256 = "1g0ywd5zpckmhq28mr14yr4k28hiii1px8r8xbdx8nv45ryw69l3"; + rev = "99b48d54b978e4e6438d850015d59e57ac64824e"; + sha256 = "126x1cqr1769a3yzigpp8sp33n6s4fadai7w30mb2nk9dbxy0hw5"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -583,11 +583,11 @@ let "identity" = pkgs.stdenv.mkDerivation { name = "identity"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-identity.git"; - rev = "5c150ac5ee4fa6f145932f6322a1020463dae8e9"; - sha256 = "0a58y71ihvb5b7plnn2sxsbphqzd9nzfafak4d5a576agn76q0ql"; + rev = "ef6768f8a52ab0bc943a85f5761ba07c257f639f"; + sha256 = "1lh0pkwwdyd8q9bgf4l1m96gdnardki4r2s359cnhrwp94b43fyr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -595,11 +595,11 @@ let "integers" = pkgs.stdenv.mkDerivation { name = "integers"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-integers.git"; - rev = "8a783f2d92596c43afca53066ac18eb389d15981"; - sha256 = "1rrygw0ai61brnvgap7dfhdzacyhg5439pz6yrmmyg32cvf0znhv"; + rev = "54d712b25c594833083d15dc9ff2418eb9c52822"; + sha256 = "04j9sqvkgyxxvbm8jfc2118wzmgswn8jva9fysgbsnmsg9vcxfm6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -607,11 +607,11 @@ let "invariant" = pkgs.stdenv.mkDerivation { name = "invariant"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-invariant.git"; - rev = "c421b49dec7a1511073bb408a08bdd8c9d17d7b1"; - sha256 = "0vwkbh7kv00g50xjgvxc0mv5b99mrj6q0sxznxwk32hb9hkbhy5l"; + rev = "1d2a196d51e90623adb88496c2cfd759c6736894"; + sha256 = "07rqag47ykdiqc5yfbc1a64ijaqliljhcw1vgbv81m7ljzzd2xna"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -619,23 +619,11 @@ let "js-date" = pkgs.stdenv.mkDerivation { name = "js-date"; - version = "v7.0.0"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-js-date.git"; - rev = "a6834eef986e3af0490cb672dc4a8b4b089dcb15"; - sha256 = "1dpiwn65qww862ilpfbd06gwfazpxvz3jwvsjsdrcxqqfcbjp8n8"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "js-timers" = pkgs.stdenv.mkDerivation { - name = "js-timers"; - version = "v5.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-js-timers.git"; - rev = "86afef13f457b9506acdfe88559ee18f1cd2c2d8"; - sha256 = "0008paz0qkz5n1pfrzagkkac6jny9z2rd1ij10ww2k1pkb9cy59z"; + rev = "1ea020316946cc4b87195bca9c54d0c16abaa490"; + sha256 = "03535g8hc4bzyzig25hf75dls9ypsgrdk2nc45h8zw4xyy4ha0gz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -643,11 +631,11 @@ let "js-uri" = pkgs.stdenv.mkDerivation { name = "js-uri"; - version = "v2.0.0"; + version = "v3.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-js-uri.git"; - rev = "6145d5e631be3d57d8a4a9cf976ae140713dee35"; - sha256 = "1q34ir93cqbcl9g49vv1qfj8jxbbdj7f85a14y4mzd7yjq0a042g"; + rev = "06f7ae755ccb36bfa80bc3702533165af5c7ef06"; + sha256 = "0c9k1fpf4ljlqsnb07i3gwa6jiwlli0046pnglmk56ls53l6d4aj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -667,11 +655,11 @@ let "lazy" = pkgs.stdenv.mkDerivation { name = "lazy"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lazy.git"; - rev = "2f73f61e7ac1ae1cfe05564112e3313530e673ff"; - sha256 = "1wxfx019911gbkifq266hgn67zwm89pxhi83bai77mva5n9j3f6l"; + rev = "48347841226b27af5205a1a8ec71e27a93ce86fd"; + sha256 = "0dxlc3b2bdqsri45i7a9bvwvv0gg43cc1gq61zi41f290a29ny2q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -679,11 +667,11 @@ let "lcg" = pkgs.stdenv.mkDerivation { name = "lcg"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lcg.git"; - rev = "8fb2eb16bbba2cee1d115a6729659ac649da811b"; - sha256 = "04r9bmx9kc3jqx59hh9yqqkl95mf869la9as5h36jv85ynn464dx"; + rev = "67c6c6483a563a59ae036d9dca0f1be2835326a5"; + sha256 = "1shzn6zvc1cxd7v0bvfsk7x3xf59vxby8c5lfjvd746r6396zn65"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -691,11 +679,11 @@ let "lists" = pkgs.stdenv.mkDerivation { name = "lists"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lists.git"; - rev = "6383c4f202b3f69474f9f7da182c2d42fcc3111c"; - sha256 = "0xmg918s3mqvfvwgjfqcs1yvcz6hy2n7h3ygqz2iyvk868gz25qs"; + rev = "b113451e5b41cad87d669a3165f955c71cd863e2"; + sha256 = "1mg7vy44k8jlqkri7x4ikciixx92b17wi35887x09dwdsicjf0sx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -703,23 +691,11 @@ let "literals" = pkgs.stdenv.mkDerivation { name = "literals"; - version = "v0.2.0"; - src = pkgs.fetchgit { - url = "https://github.com/jvliwanag/purescript-literals.git"; - rev = "11457380e1b28c9526c41381eeb0ee840982db5c"; - sha256 = "1jjnpfmh9qfmffyrmcfnn9p25irmsmaji6lwrsrd2r9xdhpzmqg7"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "math" = pkgs.stdenv.mkDerivation { - name = "math"; - version = "v3.0.0"; + version = "v1.0.2"; src = pkgs.fetchgit { - url = "https://github.com/purescript/purescript-math.git"; - rev = "59746cc74e23fb1f04e09342884c5d1e3943a04f"; - sha256 = "0hkf0vyiga21992d9vbvdbnzdkvgljmsi497jjas1rk3vhblx8sq"; + url = "https://github.com/rowtype-yoga/purescript-literals.git"; + rev = "ae3ef4e9c1ae7c57ec77bd13906fa60ae8abba4a"; + sha256 = "1dvzi3qx6jbfw2g28wgbh1s9zv8z59wrf7r7jhib4g5ibgzq5r8q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -727,11 +703,11 @@ let "maybe" = pkgs.stdenv.mkDerivation { name = "maybe"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-maybe.git"; - rev = "8e96ca0187208e78e8df6a464c281850e5c9400c"; - sha256 = "0vyk3r9gklvv7awzpph7ra53zxxbin1ngmqflb5vvr2365v5xyqy"; + rev = "c6f98ac1088766287106c5d9c8e30e7648d36786"; + sha256 = "0n33g8c579vcs06ii0r7f14jjdwzjw7p583w4nmrv9h442q2cvlz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -739,11 +715,11 @@ let "medea" = pkgs.stdenv.mkDerivation { name = "medea"; - version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; + version = "00981e4ce7249808413a6db8d88d849bbe85245a"; src = pkgs.fetchgit { - url = "https://github.com/juspay/medea-ps.git"; - rev = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - sha256 = "05gnar9l1li0v1vv12kga0sssskfm4f1x9y6smpmqbqg9396pmsq"; + url = "https://github.com/errfrom/medea-ps.git"; + rev = "00981e4ce7249808413a6db8d88d849bbe85245a"; + sha256 = "0sxv9l53hqjx5n7gdnpr5ydxp0zr2wv0ikk2sc0ch9whq5rridcy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -751,11 +727,11 @@ let "media-types" = pkgs.stdenv.mkDerivation { name = "media-types"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-media-types.git"; - rev = "b6efa4c1e6808b31f399d8030b5938acec87cb48"; - sha256 = "0l51nd1w52756pyy3zliwmhfbin0px4pxr7d2h5vchl1wq895fja"; + rev = "af853de226592f319a953637069a943dd261cba3"; + sha256 = "0bxpsd2yw3zg58ay649v3xld7n17n7j7n9y8l841cjih9bc7ccxx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -763,11 +739,11 @@ let "mmorph" = pkgs.stdenv.mkDerivation { name = "mmorph"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/Thimoteus/purescript-mmorph.git"; - rev = "ebe16afbfa16dd600f3379ccedc7529417402393"; - sha256 = "0ds88hray8v0519n9k546qsc4qs8bj1k5h5az7nwfp0gaq0r5wpk"; + rev = "94bc558ac34184d5236a7a9b2463dcc7551ced8e"; + sha256 = "0m3m1kjy4i9lwzj8l5qlafxawyhbdxj035wa5ys4j8v4013a92xg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -811,11 +787,11 @@ let "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-newtype.git"; - rev = "7b292fcd2ac7c4a25d7a7a8d3387d0ee7de89b13"; - sha256 = "1fgzbxslckva2psn0sia30hfakx8xchz3wx2kkh3w8rr4nn2py8v"; + rev = "29d8e6dd77aec2c975c948364ec3faf26e14ee7b"; + sha256 = "0kfc644zn2f9rpx8fy4gjvmz04k9mv1c2xrqis8m3s0ydnhbffd7"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -823,11 +799,11 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "710c15c48c5afae5e0623664d982a587ff2bd177"; + version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "710c15c48c5afae5e0623664d982a587ff2bd177"; - sha256 = "014wapsgg6xa76i3f368aag4kps644g8qqqha9xbgyxmrhxsln6q"; + url = "https://github.com/errfrom/purescript-noble-secp256k1.git"; + rev = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -835,11 +811,11 @@ let "node-buffer" = pkgs.stdenv.mkDerivation { name = "node-buffer"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-buffer.git"; - rev = "0721f1e8d768df48ae429547c8c60b121ca120cb"; - sha256 = "14bf3llsa20ivkwp5hlyk8v8zfzpzhhsni9pd8rfqdyzp6zrdx3b"; + rev = "7be7bd082b7d3e15de2ed5a626d43af746bdb35e"; + sha256 = "1l1j4ml0lyhnxs1zcy3jchlc0mbsn40g1pxyb4lv6slhp0qdhjhp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -847,11 +823,11 @@ let "node-child-process" = pkgs.stdenv.mkDerivation { name = "node-child-process"; - version = "v7.1.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-child-process.git"; - rev = "5c4e560eceead04efc1d5a3ec1f6de91bb1d512e"; - sha256 = "18va367xims00hmjwiasiifdfak3cbs0sp4sr52ihb20n19n6h5b"; + rev = "ceaa5dcd21697da24a916b81c73ba013592cf378"; + sha256 = "1h93r8q0gpdp3vz89b9aazdr0dc99kyx0wx8xb1ap8v2img8xid1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -859,11 +835,11 @@ let "node-fs" = pkgs.stdenv.mkDerivation { name = "node-fs"; - version = "v6.2.0"; + version = "v8.1.1"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-fs.git"; - rev = "3cb63cc55a02e506fe07d3940a50d6f0eb6ca2f2"; - sha256 = "1b89sxr6asxvgx59myhfbahiiz1z6sg2qfrm9bqd46h93ai8bhn1"; + rev = "a9da8b9860f8a1f67e38701f5cce72a0f2c3901d"; + sha256 = "0ywv0d8w2fbqnj9z1dxbm2a9na10g960b5gznjcf7d70gs22ixhj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -871,11 +847,11 @@ let "node-fs-aff" = pkgs.stdenv.mkDerivation { name = "node-fs-aff"; - version = "v7.0.0"; + version = "v9.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-fs-aff.git"; - rev = "1da5d326573c3b17c6d4dba3d0e0157e60869f91"; - sha256 = "10aglq89gbchykwlckmg5xsln705qha76f125snkmk056kq2w89h"; + rev = "ac9b6fd272eb52c906b490be1c714423dd36a5bf"; + sha256 = "0mi91kd1b0ix8ygaaj5jspw0m53b8rv5mingrk2lvxhimsxa3f81"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -883,11 +859,11 @@ let "node-http" = pkgs.stdenv.mkDerivation { name = "node-http"; - version = "v6.0.0"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-http.git"; - rev = "48a4da07051f0cc9a9d08fbfe8179ebf55aff39a"; - sha256 = "1521ab70jx7a9d7kk4gn1sk4w6knfi13pai1kanhrvwp5lfys5wl"; + rev = "9baab9d9b45064e8cc1d53913bb1668bfa799b16"; + sha256 = "1bi7kwai15l4lqcnaq14mi906cppcjm3iqax4qq3vjihf68b66r4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -895,11 +871,11 @@ let "node-net" = pkgs.stdenv.mkDerivation { name = "node-net"; - version = "v2.0.1"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-net.git"; - rev = "e25a2c538dfa524cd9b75bf12fd7a393efe2f7e9"; - sha256 = "17sx9r74kdjq85dafm5kisbvgdb0wn11lq9gaazpdirhshpm2wl5"; + rev = "812ce3142b67c33db225a0f94fabd6a6776bf0be"; + sha256 = "18z42zqinm357qzr8r7w7lwhjnmd2693ywqkb1ndjd2p3dz7x4zm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -907,11 +883,11 @@ let "node-path" = pkgs.stdenv.mkDerivation { name = "node-path"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-path.git"; - rev = "a2d7cf05e40b607ef7d048a3684cda788cd42890"; - sha256 = "1384qyf4v84wbahafzvqdxjllqy8qkd5dpkhsl3js444vsm2aplr"; + rev = "d5f08cfde829b831408c4c6587cec83f2cd6a58e"; + sha256 = "1d38ipij4lb1nq8wkv7kmpk77z5ac0spfc89hfc9yn6jnscl6sky"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -919,11 +895,11 @@ let "node-process" = pkgs.stdenv.mkDerivation { name = "node-process"; - version = "v8.2.0"; + version = "v10.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-process.git"; - rev = "e1e807ac7831d1a8a15e242964f7e5005e42f76b"; - sha256 = "0nl9r271s8f71a9wqfkadq9b490h8phwgqc61jbzhm4ags23pqpg"; + rev = "9d126d9d4f898723e7cab69895770bbac0c3a0b8"; + sha256 = "07gcg33g56f74ph2bqmj5lysy752f6y31y7mkrgd2m0jzi7wknn3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -931,11 +907,11 @@ let "node-readline" = pkgs.stdenv.mkDerivation { name = "node-readline"; - version = "v5.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-readline.git"; - rev = "c59deb30c7ff5cc91d6b062120c5a3979bd4ccff"; - sha256 = "0c299bvkhrdbij88fxb75sdm7bl4wpgv9fz7wsj0hw6gkxmplpj9"; + rev = "fbe80a949275f15643b80f9db7c01d5a6b4031ed"; + sha256 = "1gxldf016w8xjm6jj95mshglgb4gcs9scxfr5ckxry1rzk6fzz1d"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -943,11 +919,11 @@ let "node-streams" = pkgs.stdenv.mkDerivation { name = "node-streams"; - version = "v5.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-streams.git"; - rev = "886bb2045685e3b9031687d69ccfed29972147bb"; - sha256 = "1jc3d4x0v77h8qcwq7hpwprsdr3gqmdfiyr1ph0kiy7r9bbrqwfx"; + rev = "8395652f9f347101fe042f58726edc592ae5086c"; + sha256 = "1cgkh3dwnhv90r7dak3x4dq698gh30ghfxncrw0ngwrv5pismn0x"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -955,11 +931,11 @@ let "node-url" = pkgs.stdenv.mkDerivation { name = "node-url"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-url.git"; - rev = "d5671f5e38051f4fa7acacd9ec157ed9dc6ded46"; - sha256 = "0w78q23vxa2nldy0dfj4nb5kv0pcrc1yq7dp1mysz7cdi9f72zp9"; + rev = "de7b279df13a9eeef2455af561525f37568c190e"; + sha256 = "14qkni1138jn02s8hpchc0i73n7brj1j9d3gwc8kh1wz1ddhjypw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -967,11 +943,11 @@ let "nonempty" = pkgs.stdenv.mkDerivation { name = "nonempty"; - version = "v6.1.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-nonempty.git"; - rev = "7696eaf915da5333173bca7d779a51f91a525b83"; - sha256 = "0hhhw5x5xvs2bd9373gklja1545glnzi1xc2sj16kkznnayrmvsn"; + rev = "28150ecc7419238b187abd609a92a645273348bb"; + sha256 = "1mwdc2sny2ygp67kyk7h2493vq7syf7j18s3d9a5gwf1y7jlf7gh"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -979,11 +955,11 @@ let "now" = pkgs.stdenv.mkDerivation { name = "now"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-now.git"; - rev = "4c994dae8bb650787de1e4d9e709f2565fb354fb"; - sha256 = "1wa4j2h5rlw1lgfpm7rif3v6ksm8lplxl1x69zpk8hdf0cfyz4qm"; + rev = "b5ffed2381e5fefc063f484e607e8499e79eaf32"; + sha256 = "01khmqs4iz7dhlvd43zxj19q0c0vvqf1m128vgvgxz5mv430zfgr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -991,11 +967,11 @@ let "nullable" = pkgs.stdenv.mkDerivation { name = "nullable"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-nullable.git"; - rev = "8b19c16b16593102ae5d5d9f5b42eea0e213e2f5"; - sha256 = "0jbmks8kwhpb5fr2b9nb70fjwh6zdnwirycvzr77jafcny24yrnl"; + rev = "3202744c6c65e8d1fbba7f4256a1c482078e7fb5"; + sha256 = "10s3b54pjmr2rxlyzvc8yc99k1dpn0qrijnc4y65yj5z6bxf2791"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1003,11 +979,11 @@ let "numbers" = pkgs.stdenv.mkDerivation { name = "numbers"; - version = "v8.0.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-numbers.git"; - rev = "f5bbd96cbed58403c4445bd4c73df50fc8d86f46"; - sha256 = "00pm2x4kh4fm91r7nmik1v5jclkgh7gpxz13ambyqxbxbiqjq0vg"; + rev = "2a53528f18f9415334bae28e7bb3cf3be86342c2"; + sha256 = "1h4v6ir1hq6gvkk0kla38vlcd6bv73xkc8pv71jygwqxrdwfxxgw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1027,11 +1003,11 @@ let "options" = pkgs.stdenv.mkDerivation { name = "options"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-options.git"; - rev = "0309a42692251ce5e3d1d0be57d4f63f7143f858"; - sha256 = "04f70wfik1pi6nzfq2cn3la9z735akkadpx5cxbs4mx8xg032sjd"; + rev = "93e4eb4610975cb7b3bb290273396707e7384c38"; + sha256 = "1c8qkln40i1sf2lz8c6wn4ijj7jmfgzmgsrn9ax7m4ix9c05r5sq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1039,11 +1015,11 @@ let "optparse" = pkgs.stdenv.mkDerivation { name = "optparse"; - version = "v4.1.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/f-o-a-m/purescript-optparse.git"; - rev = "04f2ed818f32390a9feff04b892f23c96ccb84cb"; - sha256 = "0b05wczcjnann0xw6vdaq2c1a2n9rcgvq9l29wa5461b5mvjyb80"; + rev = "dbc4c385e6c436eed4299ae2c0bb2cc278cf2410"; + sha256 = "05sd1ziz6rx1k0wz1nnhfnl1gz3s6qld3whkkjz8lilrvycxxn47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1051,11 +1027,11 @@ let "ordered-collections" = pkgs.stdenv.mkDerivation { name = "ordered-collections"; - version = "v2.0.2"; + version = "v3.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-ordered-collections.git"; - rev = "1929b706b07e251995b6be51baa7995c61eb4d83"; - sha256 = "0g57043ylj3kldkm5vn233yd6hiamryhdfh72cxx9h3mn0ra8ghd"; + rev = "9826b7632d0d0a691173bde308a634195f42a419"; + sha256 = "1wk8mcn1zsxi0yk9ybas2v7m0drb492806gld1xxxic8x1i19ws0"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1063,11 +1039,11 @@ let "orders" = pkgs.stdenv.mkDerivation { name = "orders"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-orders.git"; - rev = "c25b7075426cf82bcb960495f28d2541c9a75510"; - sha256 = "0wwy3ycjll0s590ra35zf5gjvs86w97rln09bj428axhg7cvfl0a"; + rev = "f86db621ec5eef1274145f8b1fd8ebbfe0ed4a2c"; + sha256 = "14fjls3v14ia6fr2w4p0i5dqv10zk343wg28m4c77a17jmvbs9r4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1075,11 +1051,11 @@ let "parallel" = pkgs.stdenv.mkDerivation { name = "parallel"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-parallel.git"; - rev = "16b38a2e148639b04ae67e0ce63cc220da8857f7"; - sha256 = "0x8mvhgs8ygqj34xgyhk6gixqm32p2ymm00zg0zdw13g3lil9p4x"; + rev = "85290dca837771ac4870071008c933d315ef678f"; + sha256 = "0bpwvzq4dn7vx5mfj12w1zvvnamc6w2c45c2v54b9yw36snnwpcf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1087,11 +1063,11 @@ let "parsing" = pkgs.stdenv.mkDerivation { name = "parsing"; - version = "v7.0.1"; + version = "v10.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-parsing.git"; - rev = "a3e82c26ce2c74b5fa38ff7814d7c35bf9233af5"; - sha256 = "15yx51khg3niqiryc6qdii6lwdvni77ak7dkbf9w5zw4h1y51p9a"; + rev = "6dc1e9cab195f4af3394b48c508b4794328edeac"; + sha256 = "1i2idq5l7vanxrd8k6yg4fjp6l3cigrq266qyjs07ri5cc4k8879"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1099,11 +1075,11 @@ let "partial" = pkgs.stdenv.mkDerivation { name = "partial"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-partial.git"; - rev = "2f0a5239efab68179a684603263bcec8f1489b08"; - sha256 = "0acxf686hvaj793hyb7kfn9lf96kv3nk0lls2p9j095ylp55sldb"; + rev = "0fa0646f5ea1ec5f0c46dcbd770c705a6c9ad3ec"; + sha256 = "04s1h0r3slyd8kcamhqqrr6piksl9y76nmf2418j0ifhp16qwxmm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1111,11 +1087,11 @@ let "pipes" = pkgs.stdenv.mkDerivation { name = "pipes"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/felixschl/purescript-pipes.git"; - rev = "42e43f0961ad0fc3f1cef6986fe23ca9f48f6dda"; - sha256 = "0jzgzi34wqqdcfgznbpfv4b8al2prd36yshnndlvkqfv70smx3kh"; + rev = "e3bdc0b0db0a67e89a717b6118b23e78a380e23f"; + sha256 = "1jz3bfbl8b0hgbcm9y98bv2z29b072v1k8snp19vb2xql1zd40sx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1123,11 +1099,11 @@ let "posix-types" = pkgs.stdenv.mkDerivation { name = "posix-types"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-posix-types.git"; - rev = "e562680fce64b67e26741a61a51160a04fd3e7fb"; - sha256 = "1knhdnnmxx77qsjz3gk1ga7n713l303dxyn8zs46qh7p2hnkalkc"; + rev = "b79ff37f87846ca5caab2123cf84148e700d40d1"; + sha256 = "1zcm2hikfigh5fbwg12c61gvvjhmwgy6fplfcm6bc5aqb7w3czll"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1135,11 +1111,11 @@ let "prelude" = pkgs.stdenv.mkDerivation { name = "prelude"; - version = "v5.0.1"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-prelude.git"; - rev = "68f8012bc2309d9bf5832cdf7316ad052d586905"; - sha256 = "1x0cacvv9mmw80vy6f40y0p959q1dz28fwjswhyd7ws6npbklcy0"; + rev = "f4cad0ae8106185c9ab407f43cf9abf05c256af4"; + sha256 = "0j6mb9w728ifcp10jdv7l9k7k5pw8j1f0fa7xyb8xmbxzc59xqpy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1147,11 +1123,11 @@ let "profunctor" = pkgs.stdenv.mkDerivation { name = "profunctor"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-profunctor.git"; - rev = "4551b8e437a00268cc9b687cbe691d75e812e82b"; - sha256 = "0fvd2xiv77sp4jd4spgdp4i9812p6pdzzbg4pa96mbr0h19jf39c"; + rev = "0a966a14e7b0c827d44657dc1710cdc712d2e034"; + sha256 = "07rhk8micbc74my6s53xbj2smvvwah2w1drqrcmcnncxdks3lqg3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1159,11 +1135,11 @@ let "profunctor-lenses" = pkgs.stdenv.mkDerivation { name = "profunctor-lenses"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-profunctor-lenses.git"; - rev = "9c3d87a6dab8eb785a93bff11aa183796dc93183"; - sha256 = "1wknj7g6vwk2ga1rq57l470h322308ddjn5bd3x2hhfkiy039kc3"; + rev = "973d567afe458fd802cf4f0d9725b6dc35ad9297"; + sha256 = "0axz7nznn12iqh6sn9qjg6i8qglpdsqgkp30ndwdj98czcnbnybv"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1183,11 +1159,11 @@ let "psci-support" = pkgs.stdenv.mkDerivation { name = "psci-support"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-psci-support.git"; - rev = "f26fe8266a63494080476333e22f971404ea8846"; - sha256 = "16vhf8hapd7rcgmafmjpiq7smhzdh3300f2idk1q4kk01yxn8ddj"; + rev = "897cdb543548cb6078d69b6413b54841404eda72"; + sha256 = "1ix53r8avkn3fw72mngwzw7v6c6mv7j4miw5mrgjrh9hb8p2ydl1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1195,11 +1171,11 @@ let "purescript-toppokki" = pkgs.stdenv.mkDerivation { name = "purescript-toppokki"; - version = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9"; + version = "b043e9342463df76972d05981ac4ec25316834bf"; src = pkgs.fetchgit { - url = "https://github.com/firefrorefiddle/purescript-toppokki"; - rev = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9"; - sha256 = "01arx2sp2k287cr4y96frnn6jlghcias9hwdr27yr28k4xa5bhfv"; + url = "https://github.com/errfrom/purescript-toppokki"; + rev = "b043e9342463df76972d05981ac4ec25316834bf"; + sha256 = "0kkk4xfnkq6fqr30d95i3x4r6z9479bx7v0ama7xf36pr0y26lk1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1207,11 +1183,11 @@ let "quickcheck" = pkgs.stdenv.mkDerivation { name = "quickcheck"; - version = "v7.1.0"; + version = "v8.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-quickcheck.git"; - rev = "990fa1cf14b48b827d9b2d115b1c6977c4b0a76d"; - sha256 = "1dxchng3r2mad0505a0c7cc35vs1f7y2xb5i13p59jpdz6ijqa9k"; + rev = "bf5029f97e6c0d7552d3a08d2ab793a19e2c5e3d"; + sha256 = "142dvh57fl8b6i7mm37a38v7vkc1znbqz6l6wqa704m53hkikvyd"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1231,11 +1207,11 @@ let "quickcheck-laws" = pkgs.stdenv.mkDerivation { name = "quickcheck-laws"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-quickcheck-laws.git"; - rev = "464597522e5e001adc2619676584871f423b9ea0"; - sha256 = "1m397bh2w5a0wvms8rjgfxh71m7krmfkgk11j5krhz86b72k3izd"; + rev = "04f00fb78d88f38a2f2bb73b75f97ce5bf5624fc"; + sha256 = "0izp71wq253k9wih2hspfs4p1s36yins2a5mh13yl57pf1srbrky"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1243,11 +1219,11 @@ let "random" = pkgs.stdenv.mkDerivation { name = "random"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-random.git"; - rev = "3e02da113c7afbac37ea4e16188c39d3057314d5"; - sha256 = "1v6ykgp8jmx488hq8mgb0l0sf1nyhjs6wq0w279iyibk9jxc6nib"; + rev = "9540bc965a9596da02fefd9949418bb19c92533a"; + sha256 = "0qz14qviz5053j9h1jwpk0gnn692hcdx6fp90wckzrnw31d53174"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1255,11 +1231,11 @@ let "rationals" = pkgs.stdenv.mkDerivation { name = "rationals"; - version = "v5.0.0"; + version = "v5.0.1"; src = pkgs.fetchgit { - url = "https://github.com/anttih/purescript-rationals.git"; - rev = "8c52d8cc891d1223150a31416220aa9b99404442"; - sha256 = "1idvjvvx5kwmi8kj2ps95bcvlsgij1xgin4jfw3rmcqd930wqq6q"; + url = "https://github.com/purescript-contrib/purescript-rationals.git"; + rev = "b480bc41dbfc926977ebdf4e2a4b9fed253c91a1"; + sha256 = "06fczcfc937iwpj4r8qhprgw35ryn0hfqgjxmn2rcljx37q70xka"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1267,11 +1243,11 @@ let "record" = pkgs.stdenv.mkDerivation { name = "record"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-record.git"; - rev = "091495d61fcaa9d8d8232e7b800f403a3165a38f"; - sha256 = "0yidfvwiajiv8xflfsi2p8dqnp0qmmcz9jry58jyn9ga82z2pqn6"; + rev = "c89cd1ada6b636692571fc374196b1c39c4c9f70"; + sha256 = "1g7s2h1as5cz824wpm0jhjprrh66shha5i4gq37q73yw0s5p2ahm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1279,11 +1255,11 @@ let "refs" = pkgs.stdenv.mkDerivation { name = "refs"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-refs.git"; - rev = "f66d3cdf6a6bf4510e5181b3fac215054d8f1e2e"; - sha256 = "1jhc2v784jy8bvkqy4zsh2z7pnqrhwa8n5kx98xhxx73n1bf38sg"; + rev = "f8e6216da4cb9309fde1f20cd6f69ac3a3b7f9e8"; + sha256 = "09bvfxhjfwfwv55py45s71maazwrr68k0rk4v8ynfqv91h34319h"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1291,11 +1267,11 @@ let "safe-coerce" = pkgs.stdenv.mkDerivation { name = "safe-coerce"; - version = "v1.0.0"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-safe-coerce.git"; - rev = "e719defd227d932da067a1f0d62a60b3d3ff3637"; - sha256 = "0m942lc23317izspz1sxw957mwl9yb9bgk8dh23f7b3a8w9hh8ff"; + rev = "7fa799ae80a38b8d948efcb52608e58e198b3da7"; + sha256 = "00m4l733gpl0153cbl6n5kly7jr8ids399apza2rbczif40brp9g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1315,11 +1291,11 @@ let "sequences" = pkgs.stdenv.mkDerivation { name = "sequences"; - version = "v3.0.2"; + version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; src = pkgs.fetchgit { - url = "https://github.com/hdgarrood/purescript-sequences"; - rev = "1f1d828ef30070569c812d0af23eb7253bb1e990"; - sha256 = "0mc0jjs1119c2nyd08yhdmliq3s47lhrdknhziga3lnbzja889k4"; + url = "https://github.com/garganscript/purescript-sequences"; + rev = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; + sha256 = "0dimbcmj7f4mbxq3yq591spizib60iir9igjzb6lbydir7kc6934"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1327,11 +1303,11 @@ let "spec" = pkgs.stdenv.mkDerivation { name = "spec"; - version = "v5.0.1"; + version = "v7.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-spec/purescript-spec.git"; - rev = "2cfa11573dbb695c117efce0a8f76a3daba12e87"; - sha256 = "0hpca1sa738029ww74zpw31br5x339q35kzb10iqd55lp6611k80"; + rev = "1ae536c4d9848d26087fe5e0606409740aa421b7"; + sha256 = "1vyk0fn39qfwx4i7vanazr5v0q0w0sxsxzmlliwlpcb9kvd1b2b3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1339,11 +1315,11 @@ let "spec-quickcheck" = pkgs.stdenv.mkDerivation { name = "spec-quickcheck"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-spec/purescript-spec-quickcheck.git"; - rev = "c2991f475b8fa11de8b68bcb5895b36be04d1e82"; - sha256 = "01xcbfyqzax9c5najbfy12q0nvfklfm37llj2vkmi3wgkskg4prz"; + rev = "c83de337db1f74ff75e0d7c574a2f7407bc5f2b2"; + sha256 = "1y9rzb8kbahhchplswdxrjqm4qjkv1bnv9mzg8v62m1ipk3kdndj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1351,11 +1327,11 @@ let "st" = pkgs.stdenv.mkDerivation { name = "st"; - version = "v5.0.1"; + version = "v6.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-st.git"; - rev = "994eb5e650f3caedac385dcc61694f691df57983"; - sha256 = "14hz254f1y0k3v83z719np0ddrgbca0hdsd9dvv244i07vlvm2zj"; + rev = "fc2fe2972bb12e6a2bd3b295baf01577240c23ac"; + sha256 = "17syc11gxhi1law4lskrr4swr62n4r7irj5imdyjjp8z0p5c6p8z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1363,11 +1339,11 @@ let "strings" = pkgs.stdenv.mkDerivation { name = "strings"; - version = "v5.0.0"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-strings.git"; - rev = "157e372a23e4becd594d7e7bff6f372a6f63dd82"; - sha256 = "0hyaa4d8gyyvac2nxnwqkn2rvi5vax4bi4yv10mpk7rgb8rv7mb8"; + rev = "3d3e2f7197d4f7aacb15e854ee9a645489555fff"; + sha256 = "1dx6l4j4yw6w6nxa687gf04q4caa99ccl4cp4q22nda6ghsz7yjl"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1375,11 +1351,11 @@ let "stringutils" = pkgs.stdenv.mkDerivation { name = "stringutils"; - version = "v0.0.11"; + version = "v0.0.12"; src = pkgs.fetchgit { url = "https://github.com/menelaos/purescript-stringutils.git"; - rev = "e149d04cd5bcc25222c1807f2e1edafb36b5f70e"; - sha256 = "1hbr936bvnm5iil4cfr9qhkbzd1i00yrxf5jd0rnny29df5wsq1w"; + rev = "51d92cacd8c8102fc4e6137b4f709a2b11ca5186"; + sha256 = "0wdmishvnlfw8r6b3ivzr8d7300cxg1m77qd74ip4c0gd4zqvhs4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1387,23 +1363,11 @@ let "tailrec" = pkgs.stdenv.mkDerivation { name = "tailrec"; - version = "v5.0.1"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-tailrec.git"; - rev = "5fbf0ac05dc6ab1a228b2897630195eb7483b962"; - sha256 = "1jjl2q2hyhjcdxpamzr1cdlxhmq2bl170x5p3jajb9zgwkqx0x22"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "test-unit" = pkgs.stdenv.mkDerivation { - name = "test-unit"; - version = "v16.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/bodil/purescript-test-unit.git"; - rev = "56d06897b621df5d2f619433d19ababb5bb8ebd1"; - sha256 = "0qz903phxkgrn7qdz1xi49bydkf5cbxssyb4xk029zi4lshb35mw"; + rev = "5661a10afbd4849bd2e45139ea567beb40b20f9f"; + sha256 = "0snhrvkpd429r0d0bzs0mxwwz3am9bpa1m9f5a9hpmyjjkl7gddw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1411,11 +1375,11 @@ let "these" = pkgs.stdenv.mkDerivation { name = "these"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-these.git"; - rev = "38dcf86a9bd772091e1153f2f1c13223703599b7"; - sha256 = "0d6yg3lwgralh1kcm5cd4myyz66k9qzld61hc5dg3z92d96zbvlr"; + rev = "ad4de7d2bb9ce684a9dff5def6489630736985b8"; + sha256 = "1i73qz7pk11mbiymhfg21i3nq92hqjmqzj4gjp1n6l2zkm0lmql3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1423,11 +1387,11 @@ let "transformers" = pkgs.stdenv.mkDerivation { name = "transformers"; - version = "v5.2.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-transformers.git"; - rev = "1e5d4193b38c613c97ea1ebdb721c6b94cd8c50a"; - sha256 = "0lggimnq016v98ib6h68gnciraambxrfqm2s033wm34srcy8xs06"; + rev = "be72ab52357d9a665cbf93d73ba1c07c4b0957ee"; + sha256 = "0ijrdsppl8vx0rlbwc9p0vjbmvwlcy4ia7xymvk6y34zbxzjlzm6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1435,11 +1399,11 @@ let "tuples" = pkgs.stdenv.mkDerivation { name = "tuples"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-tuples.git"; - rev = "d4fe8ffe9e8c512111ee0bc18a6ba0fd056a6773"; - sha256 = "0s2ar2gih4r34km8r8dqngh21s8899yb93mb7mips08ndy3ajq3a"; + rev = "4f52da2729b448c8564369378f1232d8d2dc1d8b"; + sha256 = "1m1ng0xxicb73945jymcl1hn2y2hmynlnmhb2k0kkn1jrjwgcc3d"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1447,11 +1411,11 @@ let "type-equality" = pkgs.stdenv.mkDerivation { name = "type-equality"; - version = "v4.0.0"; + version = "v4.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-type-equality.git"; - rev = "f7644468f22ed267a15d398173d234fa6f45e2e0"; - sha256 = "126pg4zg3bsrn8dzvv75xp586nznxyswzgjlr7cag3ij3j1z0kl0"; + rev = "0525b7d39e0fbd81b4209518139fb8ab02695774"; + sha256 = "1ass38jdycsjisdimdc4drg2w8vkkwp6lkvz3kvy7q0h98vdmlbr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1471,11 +1435,11 @@ let "typelevel-prelude" = pkgs.stdenv.mkDerivation { name = "typelevel-prelude"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-typelevel-prelude.git"; - rev = "83ddcdb23d06c8d5ea6196596a70438f42cd4afd"; - sha256 = "1vwf3yhn8mir5y41wvlyszkgd5fxvrcyfd0l8cn20c8vfq36yzgk"; + rev = "dca2fe3c8cfd5527d4fe70c4bedfda30148405bf"; + sha256 = "0x86mrg33kpnrnsfp4p3c92j5lpyqzy87bxdynwf7smk3inqr2jc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1483,23 +1447,11 @@ let "uint" = pkgs.stdenv.mkDerivation { name = "uint"; - version = "v6.0.3"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-uint.git"; - rev = "17fda2aff989ad7fa9f29171bf4c1196ca9ed504"; - sha256 = "1lwbkwc3yj0d5qmw7gni924wj47npgy1aqbc0ika4phc4q0shw8d"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "undefined" = pkgs.stdenv.mkDerivation { - name = "undefined"; - version = "v1.0.2"; - src = pkgs.fetchgit { - url = "https://github.com/bklaric/purescript-undefined.git"; - rev = "4012dc06b58feae301140bc081135d0f24c432b0"; - sha256 = "0kj504j3r9wr7m3yhm53bcfdzai0c2g99d2pdxlfinxk4pmixyrd"; + rev = "9e4f76ffd5192472f75583844172fe8ab3c0cb9f"; + sha256 = "173bhrd006q53s7agwyasxhfbr89x9jpz5b47vm2fr74l3jcw3lq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1507,11 +1459,11 @@ let "unfoldable" = pkgs.stdenv.mkDerivation { name = "unfoldable"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-unfoldable.git"; - rev = "bbcc2b062b9b7d3d61f123cfb32cc8c7fb811aa6"; - sha256 = "1v3bz04wj6hj7s6mcf49hajylg6w58n78q54sqi2ra2zq8h99kpw"; + rev = "493dfe04ed590e20d8f69079df2f58486882748d"; + sha256 = "15z2k639ph8wdkrc2y838m5am1z7szw2vqymmv021skzisyn7zwf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1519,11 +1471,11 @@ let "unicode" = pkgs.stdenv.mkDerivation { name = "unicode"; - version = "v5.0.1"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-unicode.git"; - rev = "2b66dcdb2ea533c7bc864574e860012c57ace2aa"; - sha256 = "0xh9wwyrl9nsw3h3wzalc1gaph39drj0i6k648cf9bnbb96nxa4z"; + rev = "6454d59d9e1fd1bc5a72e80e985d8282022a567a"; + sha256 = "0w2gsmqcy7pj5vd22qzpig20bdgzmbagyqxrg9mm1njjfsmcm8cv"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1531,11 +1483,11 @@ let "unordered-collections" = pkgs.stdenv.mkDerivation { name = "unordered-collections"; - version = "v2.1.4"; + version = "v3.0.1"; src = pkgs.fetchgit { url = "https://github.com/fehrenbach/purescript-unordered-collections.git"; - rev = "1be289188cef093520098e318ec910cf3ea5b40d"; - sha256 = "0vgfpdymxvgqf3sh8ji2w2b01w3s294v5mh04046s21qaywdi1jh"; + rev = "0192d2c9d0759895b7492cc00651631eb9abc5b5"; + sha256 = "0b60isac4wzakd3hh57wkdm9b5kawbis8v8ymli6b4m13673pvxw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1543,11 +1495,11 @@ let "unsafe-coerce" = pkgs.stdenv.mkDerivation { name = "unsafe-coerce"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-unsafe-coerce.git"; - rev = "ee24f0d3b94bf925d9c50fcc2b449579580178c0"; - sha256 = "0l2agnm1k910v4yp1hz19wrsrywsr5scb397762y7pigm3frzs8r"; + rev = "ab956f82e66e633f647fb3098e8ddd3ec58d689f"; + sha256 = "0r6d3dx8jalfzvrvkagz9v05yxwkkhgbzlpswg4w1cyl03zjcla4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1555,11 +1507,11 @@ let "untagged-union" = pkgs.stdenv.mkDerivation { name = "untagged-union"; - version = "v0.3.0"; + version = "v1.0.0"; src = pkgs.fetchgit { - url = "https://github.com/jvliwanag/purescript-untagged-union.git"; - rev = "364e172e759ebe722bd7ec12a599d532b527c0ef"; - sha256 = "06013431acz8xry9dish8p2qyj18bi505fgfikpjiblxgjazl9zx"; + url = "https://github.com/rowtype-yoga/purescript-untagged-union.git"; + rev = "ed8262a966e15e751322c327e2759a9b9c0ef3f3"; + sha256 = "163blv01abd3dhcpqz499851lhwnmb4dlfbzkr3cs53d30w3yldx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1567,11 +1519,11 @@ let "variant" = pkgs.stdenv.mkDerivation { name = "variant"; - version = "v7.0.3"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/natefaubion/purescript-variant.git"; - rev = "3f12411ede5edd342d25340c1babce9ae81d6793"; - sha256 = "1q2pky3gf177ihy2zjzqvp1cj18ycaki9vm4ghw18p7hf256lqmc"; + rev = "8b2bd73a4202257d80a955c4dd36f6055f149823"; + sha256 = "18nyxnaqqg1zzydwd2hh9hbzr31j509g5yb1lnd0m60bma4l9h5g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1579,11 +1531,11 @@ let "web-dom" = pkgs.stdenv.mkDerivation { name = "web-dom"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-dom.git"; - rev = "03dfc2f512e124615ab183ade357e3d54007c79d"; - sha256 = "06g9cp9fkzyfwbz5cs0wxjxgdydm9hy7756p2w4vx94myki20hgx"; + rev = "568a1ee158b29e6e739e7a9aaed3e35ca4c4305a"; + sha256 = "0angs86ld0h3ld889ag55lh62101dfn3fknyqrfv0imgn40vwm44"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1591,11 +1543,11 @@ let "web-events" = pkgs.stdenv.mkDerivation { name = "web-events"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-events.git"; - rev = "c8a50893f04f54e2a59be7f885d25caef3589c57"; - sha256 = "1dxwrl2r39vazb3g1ka4dkpy6idyi17aq4hf9vvdsmcwf2jjwbn9"; + rev = "2124356117be7b764a2f3948032255ac4dab7051"; + sha256 = "0l47gsgj71x0gjbhjqwsar2y44ljhq3xa0nkgr1qvqxmcm00llqf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1603,11 +1555,11 @@ let "web-file" = pkgs.stdenv.mkDerivation { name = "web-file"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-file.git"; - rev = "3e42263b4392d82c0e379b7a481bbee9b38b1308"; - sha256 = "11x1inhr5pvs2iyg818cywwdskb33q777592sd3b4g4jyczcb1li"; + rev = "023786ae62bbb8bf58156dd7f02011fa38221ef1"; + sha256 = "1wjf1m5y2qsba83is297icv9zyl7jilxdga0192mm1rp0j16jjln"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1615,11 +1567,11 @@ let "web-html" = pkgs.stdenv.mkDerivation { name = "web-html"; - version = "v3.2.0"; + version = "v4.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-html.git"; - rev = "3a249b966ee72c19874b4a2ec6db4059087500e4"; - sha256 = "1ds26vwyba0chhpa09m938brw9q8pxjk6z1n3d4nc30hvdkrjnbh"; + rev = "40e9a0c5c927e4d9f7ba7c1204e4792f4d24cc27"; + sha256 = "0ifvk7swjn58nbk19pi4f19r247d67zhl5xgvcwb56vlmrk2pk83"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1627,11 +1579,11 @@ let "web-storage" = pkgs.stdenv.mkDerivation { name = "web-storage"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-storage.git"; - rev = "22fa56bac204c708e521e746ad4ca2b5810f62c5"; - sha256 = "1viy027k9qyr7mckqkvizwbwkfskc6frppsa1v9a0hq6gc08mpjx"; + rev = "6b74461e136755db70c271dc898d51776363d7e2"; + sha256 = "0q1grh8cp6h1szsqg3xmwlzrc1bbz8yzlwxlcl1iym5mjiyzgkcs"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1639,11 +1591,11 @@ let "web-xhr" = pkgs.stdenv.mkDerivation { name = "web-xhr"; - version = "v4.1.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-xhr.git"; - rev = "997b87caa6dcdf66b6db22f29f522d722559956b"; - sha256 = "0hzmqga8l24l20kyd98bcpd8bmz7by14vl311m9yfdg5mjkjg42g"; + rev = "476122fe3ad19031aeb69186209b480e2fc9ef25"; + sha256 = "1swpprc000gfqid6r05pxs8wvlc5xjry5s2kk8lk3ah2dgv297sf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 74afb8afe..2404fa0e2 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -29,12 +29,14 @@ const checkNotNode = () => { const enableWallet = wallet => () => { if (isWalletAvailable(wallet)()) { - return getWindow().cardano[wallet].enable().catch(e => { - throw new Error( - "enableWallet failed: " + - (typeof e.info == "string" ? e.info : e.toString()) - ); - }); + return getWindow() + .cardano[wallet].enable() + .catch(e => { + throw new Error( + "enableWallet failed: " + + (typeof e.info == "string" ? e.info : e.toString()) + ); + }); } else { throw new Error( "Wallet is not available. Use `isWalletAvailable " + diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index db6e2bdd8..4ec2e302f 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -15,7 +15,7 @@ export function injectCip30Mock(walletName) { ")" ); } - + window_.cardano = {}; window_.cardano[walletName] = { enable: () => { From 0cb50b15304bcc1ee08f3cd4b01ea350c82c01b8 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 4 Jul 2023 18:33:37 +0200 Subject: [PATCH 252/478] chore: fix warnings --- test/Data.purs | 1 - test/Plutip/UtxoDistribution.purs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/test/Data.purs b/test/Data.purs index 4b784b6e4..de27966d2 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -38,7 +38,6 @@ import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G -import Data.List as List import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) import Data.Newtype (wrap) import Data.NonEmpty ((:|)) diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index 36e91ae97..04d1f2f74 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -49,10 +49,9 @@ import Data.BigInt (BigInt) import Data.BigInt (fromInt, toString) as BigInt import Data.Foldable (intercalate) import Data.FoldableWithIndex (foldlWithIndex) -import Data.List (fromFoldable) as List import Data.Map (empty, insert, isEmpty) as Map import Data.Maybe (isJust) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) import Data.NonEmpty ((:|)) import Data.Traversable (for_) import Data.Tuple.Nested (type (/\), (/\)) From ba71dfa1f86a3e02c3bea102d3e0117f56e0b5ee Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 5 Jul 2023 11:27:24 +0200 Subject: [PATCH 253/478] build: fix plutip tests --- test/Plutip/Contract/Assert.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 708b4461f..543c4c39e 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -102,7 +102,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: fromString \"2\", Actual: fromString \"1\"" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: (fromString \"2\"), Actual: (fromString \"1\")" test "ExUnits limit reached" do @@ -137,7 +137,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. ExUnits limit exceeded: Expected: { mem: fromString \"800\", steps: fromString \"16110\" }, Actual: { mem: fromString \"800\", steps: fromString \"161100\" }" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. ExUnits limit exceeded: Expected: { mem: (fromString \"800\"), steps: (fromString \"16110\") }, Actual: { mem: (fromString \"800\"), steps: (fromString \"161100\") }" test "An exception is thrown - everything is reported" do @@ -176,4 +176,4 @@ suite = do eiResult `shouldSatisfy` isLeft printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: fromString \"2\", Actual: fromString \"1\" \n\n 3. ExUnits limit exceeded: Expected: { mem: fromString \"800\", steps: fromString \"16110\" }, Actual: { mem: fromString \"800\", steps: fromString \"161100\" } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: (fromString \"2\"), Actual: (fromString \"1\") \n\n 3. ExUnits limit exceeded: Expected: { mem: (fromString \"800\"), steps: (fromString \"16110\") }, Actual: { mem: (fromString \"800\"), steps: (fromString \"161100\") } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" From 682badcf4e8acee8578c894569b5b6765630a694 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 16:04:41 +0200 Subject: [PATCH 254/478] build: bundle and serve using `esbuild` --- .gitignore | 6 +- Makefile | 13 +- dist/esbuild/index.html | 11 + dist/esbuild/wrapper.js | 6 + esbuild/bundle.js | 4 + esbuild/config.js | 30 + esbuild/serve.js | 10 + examples/AlwaysMints.js | 13 - examples/AlwaysMints.purs | 28 +- examples/AlwaysSucceeds.js | 14 - examples/AlwaysSucceeds.purs | 9 +- examples/ECDSA.js | 13 - examples/ECDSA.purs | 16 +- examples/ExUnits.js | 14 - examples/ExUnits.purs | 6 +- examples/Helpers/LoadScript.js | 12 + examples/Helpers/LoadScript.purs | 14 + examples/IncludeDatum.js | 14 - examples/IncludeDatum.purs | 6 +- examples/Lose7Ada.js | 14 - examples/Lose7Ada.purs | 6 +- examples/MintsMultipleTokens.js | 23 - examples/MintsMultipleTokens.purs | 18 +- examples/MultipleRedeemers.js | 23 - examples/MultipleRedeemers.purs | 31 +- examples/OneShotMinting.js | 14 - examples/OneShotMinting.purs | 4 +- examples/OtherTypeTextEnvelope.js | 16 - examples/OtherTypeTextEnvelope.purs | 3 - examples/PlutusV2/InlineDatum.js | 17 - examples/PlutusV2/InlineDatum.purs | 6 +- examples/PlutusV2/OneShotMinting.js | 17 - examples/PlutusV2/OneShotMinting.purs | 4 +- examples/PlutusV2/Scripts/AlwaysMints.js | 13 - examples/PlutusV2/Scripts/AlwaysMints.purs | 6 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 17 - examples/PlutusV2/Scripts/AlwaysSucceeds.purs | 6 +- examples/Schnorr.js | 14 - examples/Schnorr.purs | 19 +- package-lock.json | 646 ++++++++++++++++++ package.json | 3 + src/Internal/JsWebSocket.js | 2 +- test/ApplyArgs.js | 166 ----- test/ApplyArgs.purs | 85 ++- test/Deserialization.purs | 5 +- 45 files changed, 909 insertions(+), 508 deletions(-) create mode 100644 dist/esbuild/index.html create mode 100644 dist/esbuild/wrapper.js create mode 100644 esbuild/bundle.js create mode 100755 esbuild/config.js create mode 100644 esbuild/serve.js delete mode 100644 examples/AlwaysMints.js delete mode 100644 examples/AlwaysSucceeds.js delete mode 100644 examples/ECDSA.js delete mode 100644 examples/ExUnits.js create mode 100644 examples/Helpers/LoadScript.js create mode 100644 examples/Helpers/LoadScript.purs delete mode 100644 examples/IncludeDatum.js delete mode 100644 examples/Lose7Ada.js delete mode 100644 examples/MintsMultipleTokens.js delete mode 100644 examples/MultipleRedeemers.js delete mode 100644 examples/OneShotMinting.js delete mode 100644 examples/OtherTypeTextEnvelope.js delete mode 100644 examples/OtherTypeTextEnvelope.purs delete mode 100644 examples/PlutusV2/InlineDatum.js delete mode 100644 examples/PlutusV2/OneShotMinting.js delete mode 100644 examples/PlutusV2/Scripts/AlwaysMints.js delete mode 100644 examples/PlutusV2/Scripts/AlwaysSucceeds.js delete mode 100644 examples/Schnorr.js delete mode 100644 test/ApplyArgs.js diff --git a/.gitignore b/.gitignore index dce01a22a..3b2eadffe 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,11 @@ result-* .node .node-cfg .projectile -/dist/ +/dist/* +!/dist/esbuild/ +/dist/esbuild/* +!/dist/esbuild/index.html +!/dist/esbuild/wrapper.js output.js .DS_Store .idea/ diff --git a/Makefile b/Makefile index fbf143289..54ad3b9bb 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,22 @@ preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') run-dev: - @${ps-bundle} && BROWSER_RUNTIME=1 webpack-dev-server --progress + @${ps-bundle} --minify && BROWSER_RUNTIME=1 webpack-dev-server --progress run-build: @${ps-bundle} && BROWSER_RUNTIME=1 webpack --mode=production +esbuild-bundle: + @spago build \ + && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} + +esbuild-serve: + @spago build \ + && cd dist/esbuild \ + && ln -sfn ../../fixtures fixtures \ + && cd ../.. \ + && BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} + .ONESHELL: check-explicit-exports: @if grep -rn '(\.\.)' ${ps-sources}; then diff --git a/dist/esbuild/index.html b/dist/esbuild/index.html new file mode 100644 index 000000000..7c9b27620 --- /dev/null +++ b/dist/esbuild/index.html @@ -0,0 +1,11 @@ + + + + + + + + + Examples source code is located in examples/ directory.
+ + diff --git a/dist/esbuild/wrapper.js b/dist/esbuild/wrapper.js new file mode 100644 index 000000000..53e38d411 --- /dev/null +++ b/dist/esbuild/wrapper.js @@ -0,0 +1,6 @@ +"use strict"; + +import * as m from "./index.js" + +m.main() +console.log("app starting"); diff --git a/esbuild/bundle.js b/esbuild/bundle.js new file mode 100644 index 000000000..c3a5dd652 --- /dev/null +++ b/esbuild/bundle.js @@ -0,0 +1,4 @@ +import * as esbuild from "esbuild"; +import { buildOptions } from "./config.js"; + +esbuild.build(buildOptions); diff --git a/esbuild/config.js b/esbuild/config.js new file mode 100755 index 000000000..ea83006c2 --- /dev/null +++ b/esbuild/config.js @@ -0,0 +1,30 @@ +import * as esbuild from "esbuild"; +import { wasmLoader } from "esbuild-plugin-wasm"; +import { polyfillNode } from "esbuild-plugin-polyfill-node"; +import { fileURLToPath } from "node:url"; + +export const buildOptions = { + entryPoints: [`output/${process.argv[2]}/index.js`], + outdir: "dist/esbuild", + define: { + BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, + SCRIPTS_DIR: '"fixtures/scripts/"' + }, + plugins: [ + polyfillNode({ + polyfills: { + crypto: true, + fs: true, + os: true + } + }), + wasmLoader({ + mode: "deferred" + }) + ], + bundle: true, + platform: "browser", + format: "esm", + treeShaking: true, + logLevel: "warning" +}; diff --git a/esbuild/serve.js b/esbuild/serve.js new file mode 100644 index 000000000..e1f4b62d3 --- /dev/null +++ b/esbuild/serve.js @@ -0,0 +1,10 @@ +import * as esbuild from "esbuild"; +import { buildOptions } from "./config.js"; + +const ctx = await esbuild.context(buildOptions); +await ctx.serve({ + host: "127.0.0.1", + port: 4008, + servedir: "dist/esbuild" +}) + diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js deleted file mode 100644 index 02f260c01..000000000 --- a/examples/AlwaysMints.js +++ /dev/null @@ -1,13 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/always-mints.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/always-mints.plutus", import.meta.url), - "utf8" - ); -} -export { script as alwaysMints }; diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index cbb1dece4..2cdefd954 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -13,21 +13,15 @@ import Contract.Prelude import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, runContract) +import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) -import Contract.TextEnvelope - ( decodeTextEnvelope - , plutusScriptV1FromEnvelope - ) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value -import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - ) as Helpers +import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt import Effect.Exception (error) @@ -57,14 +51,12 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ $ do runContract cfg contract -foreign import alwaysMints :: String - -alwaysMintsPolicyMaybe :: Maybe MintingPolicy -alwaysMintsPolicyMaybe = do - envelope <- decodeTextEnvelope alwaysMints - PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope +alwaysMintsPolicyMaybe :: Aff (Maybe MintingPolicy) +alwaysMintsPolicyMaybe = + loadScript "always-mints.plutus" <#> \alwaysMints -> do + envelope <- decodeTextEnvelope alwaysMints + PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope alwaysMintsPolicy :: Contract MintingPolicy alwaysMintsPolicy = - liftMaybe (error "Error decoding alwaysMintsPolicy") - alwaysMintsPolicyMaybe + liftContractAffM "Error decoding alwaysMintsPolicy" alwaysMintsPolicyMaybe diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js deleted file mode 100644 index 5d75bf263..000000000 --- a/examples/AlwaysSucceeds.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/always-succeeds.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/always-succeeds.plutus", import.meta.url), - "utf8" - ); -} - -export { script as alwaysSucceeds }; diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index a0e137e11..c756569c0 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -2,8 +2,7 @@ -- | balance, and submit a smart-contract transaction. It creates a transaction -- | that pays two Ada to the `AlwaysSucceeds` script address. module Ctl.Examples.AlwaysSucceeds - ( alwaysSucceeds - , alwaysSucceedsScript + ( alwaysSucceedsScript , contract , example , main @@ -35,6 +34,7 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt as BigInt import Data.Lens (view) @@ -118,10 +118,9 @@ spendFromAlwaysSucceeds vhash validator txId = do awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." -foreign import alwaysSucceeds :: String - alwaysSucceedsScript :: Contract Validator -alwaysSucceedsScript = +alwaysSucceedsScript = do + alwaysSucceeds <- liftAff $ loadScript "always-succeeds.plutus" liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceeds Validator <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/ECDSA.js b/examples/ECDSA.js deleted file mode 100644 index 00f53cbbb..000000000 --- a/examples/ECDSA.js +++ /dev/null @@ -1,13 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/validate-ecdsa.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/validate-ecdsa.plutus", import.meta.url), - "utf8" - ); -} -export { script as validateECDSA }; diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 91fc5953a..a21da1b68 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -15,7 +15,7 @@ import Contract.Crypto.Secp256k1.Utils , randomSecp256k1PrivateKey ) import Contract.Log (logInfo') -import Contract.Monad (Contract, liftContractM) +import Contract.Monad (Contract, liftContractAffM, liftContractM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData @@ -36,6 +36,7 @@ import Contract.Transaction import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Map as Map import Data.Set as Set @@ -59,7 +60,7 @@ contract = do -- | Prepare the ECDSA test by locking some funds at the validator address prepTest :: Contract TransactionHash prepTest = do - validator <- liftContractM "Caonnot get validator" getValidator + validator <- liftContractAffM "Caonnot get validator" getValidator let valHash = validatorHash validator @@ -85,7 +86,7 @@ testVerification testVerification txId ecdsaRed = do let red = Redeemer $ toData ecdsaRed - validator <- liftContractM "Can't get validator" getValidator + validator <- liftContractAffM "Can't get validator" getValidator let valHash = validatorHash validator netId <- getNetworkId @@ -128,8 +129,7 @@ testECDSA txId = do , pk: publicKey } -getValidator :: Maybe Validator -getValidator = do - decodeTextEnvelope validateECDSA >>= plutusScriptV2FromEnvelope >>> map wrap - -foreign import validateECDSA :: String +getValidator :: Aff (Maybe Validator) +getValidator = + loadScript "validate-ecdsa.plutus" <#> \validateECDSA -> + decodeTextEnvelope validateECDSA >>= plutusScriptV2FromEnvelope >>> map wrap diff --git a/examples/ExUnits.js b/examples/ExUnits.js deleted file mode 100644 index fc79dcf4a..000000000 --- a/examples/ExUnits.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/exunits.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/exunits.plutus", import.meta.url), - "utf8" - ); -} - -export { script as exUnits }; diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 14fce6c05..bd4e41c29 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -33,6 +33,7 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt (BigInt) import Data.BigInt as BigInt @@ -120,10 +121,9 @@ spendFromExUnits iters vhash validator txId = do awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." -foreign import exUnits :: String - exUnitsScript :: Contract Validator -exUnitsScript = +exUnitsScript = do + exUnits <- liftAff $ loadScript "exunits.plutus" liftMaybe (error "Error decoding exUnits") do envelope <- decodeTextEnvelope exUnits Validator <$> plutusScriptV2FromEnvelope envelope diff --git a/examples/Helpers/LoadScript.js b/examples/Helpers/LoadScript.js new file mode 100644 index 000000000..464abe289 --- /dev/null +++ b/examples/Helpers/LoadScript.js @@ -0,0 +1,12 @@ +/* global BROWSER_RUNTIME SCRIPTS_DIR */ + +export const _loadScript = path => async () => { + if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + const response = await fetch(`${SCRIPTS_DIR}/${path}`); + return await response.text(); + } else { + const fs = await import("fs"); + const url = new URL(`../../fixtures/scripts/${path}`, import.meta.url); + return fs.readFileSync(url, "utf8"); + } +}; diff --git a/examples/Helpers/LoadScript.purs b/examples/Helpers/LoadScript.purs new file mode 100644 index 000000000..7ecec45f7 --- /dev/null +++ b/examples/Helpers/LoadScript.purs @@ -0,0 +1,14 @@ +module Ctl.Examples.Helpers.LoadScript + ( loadScript + ) where + +import Prelude + +import Control.Promise (Promise, toAffE) +import Effect (Effect) +import Effect.Aff (Aff) + +foreign import _loadScript :: String -> Effect (Promise String) + +loadScript :: String -> Aff String +loadScript filepath = toAffE $ _loadScript filepath diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js deleted file mode 100644 index fb9f62e27..000000000 --- a/examples/IncludeDatum.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/include-datum.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/include-datum.plutus", import.meta.url), - "utf8" - ); -} - -export { script as includeDatum }; diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 5e38ad374..54406ec5b 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -32,6 +32,7 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt as BigInt import Data.Lens (view) @@ -94,11 +95,10 @@ spendFromIncludeDatum vhash validator txId = do awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." -foreign import includeDatum :: String - -- | checks if the datum equals 42 only42Script :: Contract Validator -only42Script = +only42Script = do + includeDatum <- liftAff $ loadScript "include-datum.plutus" liftMaybe (error "Error decoding includeDatum") do envelope <- decodeTextEnvelope includeDatum Validator <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js deleted file mode 100644 index a1e8d12c8..000000000 --- a/examples/Lose7Ada.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/always-fails.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/always-fails.plutus", import.meta.url), - "utf8" - ); -} - -export { script as alwaysFails }; diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index b2e959125..1a28a3101 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -36,6 +36,7 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt import Data.Foldable (fold) import Data.Functor ((<$>)) @@ -115,10 +116,9 @@ spendFromAlwaysFails vhash validator txId = do hasTransactionId (TransactionInput tx /\ _) = tx.transactionId == txId -foreign import alwaysFails :: String - alwaysFailsScript :: Contract Validator -alwaysFailsScript = +alwaysFailsScript = do + alwaysFails <- liftAff $ loadScript "always-fails.plutus" liftMaybe (error "Error decoding alwaysFails") do envelope <- decodeTextEnvelope alwaysFails Validator <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js deleted file mode 100644 index 99429d16d..000000000 --- a/examples/MintsMultipleTokens.js +++ /dev/null @@ -1,23 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let redeemerInt1, redeemerInt2, redeemerInt3; - -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - redeemerInt1 = require("Scripts/redeemer1.plutus"); - redeemerInt2 = require("Scripts/redeemer2.plutus"); - redeemerInt3 = require("Scripts/redeemer3.plutus"); -} else { - const fs = await import("fs"); - const readScript = name => - fs.readFileSync( - new URL(`../../fixtures/scripts/${name}.plutus`, import.meta.url), - "utf8" - ); - redeemerInt1 = readScript("redeemer1"); - redeemerInt2 = readScript("redeemer2"); - redeemerInt3 = readScript("redeemer3"); -} - -export { redeemerInt1 }; -export { redeemerInt2 }; -export { redeemerInt3 }; diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index bb57734c2..bdba95fcf 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -30,6 +30,7 @@ import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName ) as Helpers +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt (fromInt) as BigInt import Effect.Exception (error) @@ -74,24 +75,23 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract -foreign import redeemerInt1 :: String -foreign import redeemerInt2 :: String -foreign import redeemerInt3 :: String - mintingPolicyRdmrInt1 :: Contract MintingPolicy -mintingPolicyRdmrInt1 = +mintingPolicyRdmrInt1 = do + redeemerInt1 <- liftAff $ loadScript "redeemer1.plutus" liftMaybe (error "Error decoding redeemerInt1") do - envelope <- decodeTextEnvelope redeemerInt3 + envelope <- decodeTextEnvelope redeemerInt1 PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope mintingPolicyRdmrInt2 :: Contract MintingPolicy -mintingPolicyRdmrInt2 = +mintingPolicyRdmrInt2 = do + redeemerInt2 <- liftAff $ loadScript "redeemer2.plutus" liftMaybe (error "Error decoding redeemerInt2") do - envelope <- decodeTextEnvelope redeemerInt3 + envelope <- decodeTextEnvelope redeemerInt2 PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope mintingPolicyRdmrInt3 :: Contract MintingPolicy -mintingPolicyRdmrInt3 = +mintingPolicyRdmrInt3 = do + redeemerInt3 <- liftAff $ loadScript "redeemer3.plutus" liftMaybe (error "Error decoding redeemerInt3") do envelope <- decodeTextEnvelope redeemerInt3 PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js deleted file mode 100644 index 09bf66dbe..000000000 --- a/examples/MultipleRedeemers.js +++ /dev/null @@ -1,23 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let vredeemerInt1, vredeemerInt2, vredeemerInt3; - -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - vredeemerInt1 = require("Scripts/redeemer1-validator.plutus"); - vredeemerInt2 = require("Scripts/redeemer2-validator.plutus"); - vredeemerInt3 = require("Scripts/redeemer3-validator.plutus"); -} else { - const fs = await import("fs"); - const readScript = name => - fs.readFileSync( - new URL(`../../fixtures/scripts/${name}.plutus`, import.meta.url), - "utf8" - ); - vredeemerInt1 = readScript("redeemer1-validator"); - vredeemerInt2 = readScript("redeemer2-validator"); - vredeemerInt3 = readScript("redeemer3-validator"); -} - -export { vredeemerInt1 }; -export { vredeemerInt2 }; -export { vredeemerInt3 }; diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index 6ed5c9d0f..5b96c9b6c 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -30,6 +30,7 @@ import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName ) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Examples.MintsMultipleTokens ( mintingPolicyRdmrInt3 ) @@ -118,26 +119,26 @@ spendLockedByIntOutputParams (validator /\ redeemerVal) = do pure $ constraints /\ (Lookups.unspentOutputs utxo <> Lookups.validator validator) ---- Importing validation scripts - -foreign import vredeemerInt1 :: String -foreign import vredeemerInt2 :: String -foreign import vredeemerInt3 :: String - -- | checks whether redeemer is 1 redeemerIs1Validator :: Contract Validator -redeemerIs1Validator = liftMaybe (error "Error decoding vredeemerInt1") do - envelope <- decodeTextEnvelope vredeemerInt1 - Validator <$> plutusScriptV1FromEnvelope envelope +redeemerIs1Validator = do + vredeemerInt1 <- liftAff $ loadScript "redeemer1-validator.plutus" + liftMaybe (error "Error decoding vredeemerInt1") do + envelope <- decodeTextEnvelope vredeemerInt1 + Validator <$> plutusScriptV1FromEnvelope envelope -- | checks whether redeemer is 2 redeemerIs2Validator :: Contract Validator -redeemerIs2Validator = liftMaybe (error "Error decoding vredeemerInt2") do - envelope <- decodeTextEnvelope vredeemerInt2 - Validator <$> plutusScriptV1FromEnvelope envelope +redeemerIs2Validator = do + vredeemerInt2 <- liftAff $ loadScript "redeemer2-validator.plutus" + liftMaybe (error "Error decoding vredeemerInt2") do + envelope <- decodeTextEnvelope vredeemerInt2 + Validator <$> plutusScriptV1FromEnvelope envelope -- | checks whether redeemer is 3 redeemerIs3Validator :: Contract Validator -redeemerIs3Validator = liftMaybe (error "Error decoding vredeemerInt3") do - envelope <- decodeTextEnvelope vredeemerInt3 - Validator <$> plutusScriptV1FromEnvelope envelope +redeemerIs3Validator = do + vredeemerInt3 <- liftAff $ loadScript "redeemer3-validator.plutus" + liftMaybe (error "Error decoding vredeemerInt3") do + envelope <- decodeTextEnvelope vredeemerInt3 + Validator <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js deleted file mode 100644 index 9a7374aa8..000000000 --- a/examples/OneShotMinting.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/one-shot-minting.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/one-shot-minting.plutus", import.meta.url), - "utf8" - ); -} - -export { script as oneShotMinting }; diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 4d040746e..a9d82a586 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -50,6 +50,7 @@ import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head, singleton) as Array import Data.BigInt (BigInt) import Data.Map (toUnfoldable) as Map @@ -112,14 +113,13 @@ mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' "Tx submitted successfully!" pure { txFinalFee } -foreign import oneShotMinting :: String - oneShotMintingPolicy :: TransactionInput -> Contract MintingPolicy oneShotMintingPolicy = map PlutusMintingPolicy <<< oneShotMintingPolicyScript oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do + oneShotMinting <- liftAff $ loadScript "one-shot-minting.plutus" script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting plutusScriptV1FromEnvelope envelope diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js deleted file mode 100644 index 2c087801e..000000000 --- a/examples/OtherTypeTextEnvelope.js +++ /dev/null @@ -1,16 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/other-type-text-envelope.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL( - "../../fixtures/scripts/other-type-text-envelope.plutus", - import.meta.url - ), - "utf8" - ); -} -export { script as otherTypeTextEnvelope }; diff --git a/examples/OtherTypeTextEnvelope.purs b/examples/OtherTypeTextEnvelope.purs deleted file mode 100644 index 725be0b5b..000000000 --- a/examples/OtherTypeTextEnvelope.purs +++ /dev/null @@ -1,3 +0,0 @@ -module Ctl.Examples.OtherTypeTextEnvelope where - -foreign import otherTypeTextEnvelope :: String diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js deleted file mode 100644 index 724620f74..000000000 --- a/examples/PlutusV2/InlineDatum.js +++ /dev/null @@ -1,17 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/check-datum-is-inline.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL( - "../../fixtures/scripts/check-datum-is-inline.plutus", - import.meta.url - ), - "utf8" - ); -} - -export { script as checkDatumIsInline }; diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 2b30191db..4530608ba 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -38,6 +38,7 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt import Data.Map as Map import Effect.Exception (error) @@ -161,10 +162,9 @@ readFromCheckDatumIsInline vhash txId = do hasTransactionId (TransactionInput tx /\ _) = tx.transactionId == txId -foreign import checkDatumIsInline :: String - checkDatumIsInlineScript :: Contract Validator -checkDatumIsInlineScript = +checkDatumIsInlineScript = do + checkDatumIsInline <- liftAff $ loadScript "check-datum-is-inline.plutus" liftMaybe (error "Error decoding checkDatumIsInline") do envelope <- decodeTextEnvelope checkDatumIsInline Validator <$> plutusScriptV2FromEnvelope envelope diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js deleted file mode 100644 index bfe827a71..000000000 --- a/examples/PlutusV2/OneShotMinting.js +++ /dev/null @@ -1,17 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/one-shot-minting-v2.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL( - "../../fixtures/scripts/one-shot-minting-v2.plutus", - import.meta.url - ), - "utf8" - ); -} - -export { script as oneShotMinting }; diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index fb46fd610..c229d6fcd 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -22,6 +22,7 @@ import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Contract.Transaction (TransactionInput) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Examples.OneShotMinting ( mkContractWithAssertions , mkOneShotMintingPolicy @@ -40,14 +41,13 @@ contract = mkContractWithAssertions "Examples.PlutusV2.OneShotMinting" oneShotMintingPolicyV2 -foreign import oneShotMinting :: String - oneShotMintingPolicyV2 :: TransactionInput -> Contract MintingPolicy oneShotMintingPolicyV2 = map PlutusMintingPolicy <<< oneShotMintingPolicyScriptV2 oneShotMintingPolicyScriptV2 :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScriptV2 txInput = do + oneShotMinting <- liftAff $ loadScript "one-shot-minting-v2.plutus" script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting plutusScriptV2FromEnvelope envelope diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js deleted file mode 100644 index dee3ecf8e..000000000 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ /dev/null @@ -1,13 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/always-mints-v2.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/always-mints-v2.plutus", import.meta.url), - "utf8" - ); -} -export { script as alwaysMintsV2 }; diff --git a/examples/PlutusV2/Scripts/AlwaysMints.purs b/examples/PlutusV2/Scripts/AlwaysMints.purs index 8f89cc3d2..4d72ac89b 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.purs +++ b/examples/PlutusV2/Scripts/AlwaysMints.purs @@ -9,15 +9,15 @@ import Contract.Monad (Contract) import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Effect.Exception (error) -foreign import alwaysMintsV2 :: String - alwaysMintsPolicyV2 :: Contract MintingPolicy alwaysMintsPolicyV2 = PlutusMintingPolicy <$> alwaysMintsPolicyScriptV2 alwaysMintsPolicyScriptV2 :: Contract PlutusScript -alwaysMintsPolicyScriptV2 = +alwaysMintsPolicyScriptV2 = do + alwaysMintsV2 <- liftAff $ loadScript "always-mints-v2.plutus" liftMaybe (error "Error decoding alwaysMintsV2") do envelope <- decodeTextEnvelope alwaysMintsV2 plutusScriptV2FromEnvelope envelope diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js deleted file mode 100644 index 5308d431f..000000000 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ /dev/null @@ -1,17 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/always-succeeds-v2.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL( - "../../fixtures/scripts/always-succeeds-v2.plutus", - import.meta.url - ), - "utf8" - ); -} - -export { script as alwaysSucceedsV2 }; diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs index 5b9f273f6..fd9a57081 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs @@ -8,12 +8,12 @@ import Contract.Monad (Contract) import Contract.Scripts (Validator(Validator)) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Effect.Exception (error) -foreign import alwaysSucceedsV2 :: String - alwaysSucceedsScriptV2 :: Contract Validator -alwaysSucceedsScriptV2 = +alwaysSucceedsScriptV2 = do + alwaysSucceedsV2 <- liftAff $ loadScript "always-succeeds-v2.plutus" liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceedsV2 Validator <$> plutusScriptV2FromEnvelope envelope diff --git a/examples/Schnorr.js b/examples/Schnorr.js deleted file mode 100644 index 49e261a89..000000000 --- a/examples/Schnorr.js +++ /dev/null @@ -1,14 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/validate-schnorr.plutus"); -} else { - const fs = await import("fs"); - script = fs.readFileSync( - new URL("../../fixtures/scripts/validate-schnorr.plutus", import.meta.url), - "utf8" - ); -} - -export { script as validateSchnorr }; diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index 292d24864..ec43007c2 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -11,7 +11,7 @@ import Contract.Crypto.Secp256k1.Schnorr ) import Contract.Crypto.Secp256k1.Utils (randomSecp256k1PrivateKey) import Contract.Log (logInfo') -import Contract.Monad (Contract, liftContractM) +import Contract.Monad (Contract, liftContractAffM, liftContractM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData @@ -22,7 +22,7 @@ import Contract.PlutusData ) import Contract.Prim.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator, validatorHash) +import Contract.Scripts (Validator(Validator), validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Contract.Transaction ( TransactionHash @@ -32,6 +32,7 @@ import Contract.Transaction import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value +import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Map as Map import Data.Set as Set @@ -55,7 +56,7 @@ contract = do -- | Prepare the ECDSA test by locking some funds at the validator address prepTest :: Contract TransactionHash prepTest = do - validator <- liftContractM "Caonnot get validator" getValidator + validator <- liftContractAffM "Caonnot get validator" getValidator let valHash = validatorHash validator val = Value.lovelaceValueOf one @@ -80,7 +81,7 @@ testVerification testVerification txId ecdsaRed = do let red = Redeemer $ toData ecdsaRed - validator <- liftContractM "Can't get validator" getValidator + validator <- liftContractAffM "Can't get validator" getValidator let valHash = validatorHash validator netId <- getNetworkId @@ -122,8 +123,8 @@ testSchnorr txId = do , pk: publicKey } -getValidator :: Maybe Validator -getValidator = do - decodeTextEnvelope validateSchnorr >>= plutusScriptV2FromEnvelope >>> map wrap - -foreign import validateSchnorr :: String +getValidator :: Aff (Maybe Validator) +getValidator = + loadScript "validate-schnorr.plutus" <#> \validateSchnorr -> do + envelope <- decodeTextEnvelope validateSchnorr + Validator <$> plutusScriptV2FromEnvelope envelope diff --git a/package-lock.json b/package-lock.json index a6523548e..df17096ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,9 @@ "devDependencies": { "buffer": "6.0.3", "doctoc": "^2.2.1", + "esbuild": "0.18.11", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esbuild-plugin-wasm": "^1.1.0", "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.10", @@ -70,6 +73,358 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", + "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", + "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", + "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", + "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", + "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", + "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", + "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", + "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", + "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", + "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", + "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", + "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", + "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", + "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", + "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", + "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", + "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", + "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", + "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", + "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", + "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", + "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -122,6 +477,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@jspm/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@jspm/core/-/core-2.0.1.tgz", + "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", + "dev": true + }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -2069,6 +2430,69 @@ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, + "node_modules/esbuild": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", + "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.11", + "@esbuild/android-arm64": "0.18.11", + "@esbuild/android-x64": "0.18.11", + "@esbuild/darwin-arm64": "0.18.11", + "@esbuild/darwin-x64": "0.18.11", + "@esbuild/freebsd-arm64": "0.18.11", + "@esbuild/freebsd-x64": "0.18.11", + "@esbuild/linux-arm": "0.18.11", + "@esbuild/linux-arm64": "0.18.11", + "@esbuild/linux-ia32": "0.18.11", + "@esbuild/linux-loong64": "0.18.11", + "@esbuild/linux-mips64el": "0.18.11", + "@esbuild/linux-ppc64": "0.18.11", + "@esbuild/linux-riscv64": "0.18.11", + "@esbuild/linux-s390x": "0.18.11", + "@esbuild/linux-x64": "0.18.11", + "@esbuild/netbsd-x64": "0.18.11", + "@esbuild/openbsd-x64": "0.18.11", + "@esbuild/sunos-x64": "0.18.11", + "@esbuild/win32-arm64": "0.18.11", + "@esbuild/win32-ia32": "0.18.11", + "@esbuild/win32-x64": "0.18.11" + } + }, + "node_modules/esbuild-plugin-polyfill-node": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-polyfill-node/-/esbuild-plugin-polyfill-node-0.3.0.tgz", + "integrity": "sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==", + "dev": true, + "dependencies": { + "@jspm/core": "^2.0.1", + "import-meta-resolve": "^3.0.0" + }, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/esbuild-plugin-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz", + "integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "individual", + "url": "https://ko-fi.com/tschrock" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3033,6 +3457,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", + "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -6629,6 +7063,160 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" }, + "@esbuild/android-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", + "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", + "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", + "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", + "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", + "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", + "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", + "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", + "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", + "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", + "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", + "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", + "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", + "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", + "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", + "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", + "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", + "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", + "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", + "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", + "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", + "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", + "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", + "dev": true, + "optional": true + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -6672,6 +7260,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@jspm/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@jspm/core/-/core-2.0.1.tgz", + "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", + "dev": true + }, "@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -8258,6 +8852,52 @@ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, + "esbuild": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", + "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.11", + "@esbuild/android-arm64": "0.18.11", + "@esbuild/android-x64": "0.18.11", + "@esbuild/darwin-arm64": "0.18.11", + "@esbuild/darwin-x64": "0.18.11", + "@esbuild/freebsd-arm64": "0.18.11", + "@esbuild/freebsd-x64": "0.18.11", + "@esbuild/linux-arm": "0.18.11", + "@esbuild/linux-arm64": "0.18.11", + "@esbuild/linux-ia32": "0.18.11", + "@esbuild/linux-loong64": "0.18.11", + "@esbuild/linux-mips64el": "0.18.11", + "@esbuild/linux-ppc64": "0.18.11", + "@esbuild/linux-riscv64": "0.18.11", + "@esbuild/linux-s390x": "0.18.11", + "@esbuild/linux-x64": "0.18.11", + "@esbuild/netbsd-x64": "0.18.11", + "@esbuild/openbsd-x64": "0.18.11", + "@esbuild/sunos-x64": "0.18.11", + "@esbuild/win32-arm64": "0.18.11", + "@esbuild/win32-ia32": "0.18.11", + "@esbuild/win32-x64": "0.18.11" + } + }, + "esbuild-plugin-polyfill-node": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-polyfill-node/-/esbuild-plugin-polyfill-node-0.3.0.tgz", + "integrity": "sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==", + "dev": true, + "requires": { + "@jspm/core": "^2.0.1", + "import-meta-resolve": "^3.0.0" + } + }, + "esbuild-plugin-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz", + "integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -8967,6 +9607,12 @@ "resolve-cwd": "^3.0.0" } }, + "import-meta-resolve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", + "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", diff --git a/package.json b/package.json index c5b938f64..98ac3febe 100755 --- a/package.json +++ b/package.json @@ -58,6 +58,9 @@ "devDependencies": { "buffer": "6.0.3", "doctoc": "^2.2.1", + "esbuild": "0.18.11", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esbuild-plugin-wasm": "^1.1.0", "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.10", diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 8a41647af..738e44e7c 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -23,7 +23,7 @@ export function _mkWebSocket(logger) { try { let ws; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - ws = new ReconnectingWebSocket.default(url); + ws = new ReconnectingWebSocket(url); } else { ws = new ReconnectingWebSocket(url, [], { WebSocket: NoPerMessageDeflateWebSocket, diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js deleted file mode 100644 index 757995134..000000000 --- a/test/ApplyArgs.js +++ /dev/null @@ -1,166 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let scripts = {}; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - scripts["always-fails"] = require("Scripts/always-fails.plutus"); - scripts["include-datum"] = require("Scripts/include-datum.plutus"); - scripts["one-shot-minting"] = require("Scripts/one-shot-minting.plutus"); - scripts[ - "redeemer1-validator" - ] = require("Scripts/redeemer1-validator.plutus"); - scripts["always-succeeds-v2"] = require("Scripts/always-succeeds-v2.plutus"); - scripts[ - "one-shot-minting-v2" - ] = require("Scripts/one-shot-minting-v2.plutus"); - scripts[ - "check-datum-is-inline" - ] = require("Scripts/check-datum-is-inline.plutus"); - - scripts[ - "always-fails-big-arg" - ] = require("Scripts/applied/always-fails-big-arg.plutus"); - scripts[ - "always-fails-no-args" - ] = require("Scripts/applied/always-fails-no-args.plutus"); - scripts[ - "always-fails-unit" - ] = require("Scripts/applied/always-fails-unit.plutus"); - scripts[ - "always-succeeds-v2-big-arg" - ] = require("Scripts/applied/always-succeeds-v2-big-arg.plutus"); - scripts[ - "always-succeeds-v2-no-args" - ] = require("Scripts/applied/always-succeeds-v2-no-args.plutus"); - scripts[ - "always-succeeds-v2-unit" - ] = require("Scripts/applied/always-succeeds-v2-unit.plutus"); - scripts[ - "check-datum-is-inline-big-arg" - ] = require("Scripts/applied/check-datum-is-inline-big-arg.plutus"); - scripts[ - "check-datum-is-inline-no-args" - ] = require("Scripts/applied/check-datum-is-inline-no-args.plutus"); - scripts[ - "check-datum-is-inline-unit" - ] = require("Scripts/applied/check-datum-is-inline-unit.plutus"); - scripts[ - "include-datum-big-arg" - ] = require("Scripts/applied/include-datum-big-arg.plutus"); - scripts[ - "include-datum-no-args" - ] = require("Scripts/applied/include-datum-no-args.plutus"); - scripts[ - "include-datum-unit" - ] = require("Scripts/applied/include-datum-unit.plutus"); - scripts[ - "one-shot-minting-big-arg" - ] = require("Scripts/applied/one-shot-minting-big-arg.plutus"); - scripts[ - "one-shot-minting-no-args" - ] = require("Scripts/applied/one-shot-minting-no-args.plutus"); - scripts[ - "one-shot-minting-unit" - ] = require("Scripts/applied/one-shot-minting-unit.plutus"); - scripts[ - "one-shot-minting-v2-big-arg" - ] = require("Scripts/applied/one-shot-minting-v2-big-arg.plutus"); - scripts[ - "one-shot-minting-v2-no-args" - ] = require("Scripts/applied/one-shot-minting-v2-no-args.plutus"); - scripts[ - "one-shot-minting-v2-unit" - ] = require("Scripts/applied/one-shot-minting-v2-unit.plutus"); - scripts[ - "redeemer1-validator-big-arg" - ] = require("Scripts/applied/redeemer1-validator-big-arg.plutus"); - scripts[ - "redeemer1-validator-no-args" - ] = require("Scripts/applied/redeemer1-validator-no-args.plutus"); - scripts[ - "redeemer1-validator-unit" - ] = require("Scripts/applied/redeemer1-validator-unit.plutus"); -} else { - const fs = await import("fs"); - const read_script = fp => { - return fs.readFileSync( - new URL("../../fixtures/scripts/".concat(fp), import.meta.url), - "utf8" - ); - }; - - scripts["always-fails"] = read_script("always-fails.plutus"); - scripts["include-datum"] = read_script("include-datum.plutus"); - scripts["one-shot-minting"] = read_script("one-shot-minting.plutus"); - scripts["redeemer1-validator"] = read_script("redeemer1-validator.plutus"); - scripts["always-succeeds-v2"] = read_script("always-succeeds-v2.plutus"); - scripts["one-shot-minting-v2"] = read_script("one-shot-minting-v2.plutus"); - scripts["check-datum-is-inline"] = read_script( - "check-datum-is-inline.plutus" - ); - - scripts["always-fails-big-arg"] = read_script( - "applied/always-fails-big-arg.plutus" - ); - scripts["always-fails-no-args"] = read_script( - "applied/always-fails-no-args.plutus" - ); - scripts["always-fails-unit"] = read_script( - "applied/always-fails-unit.plutus" - ); - scripts["always-succeeds-v2-big-arg"] = read_script( - "applied/always-succeeds-v2-big-arg.plutus" - ); - scripts["always-succeeds-v2-no-args"] = read_script( - "applied/always-succeeds-v2-no-args.plutus" - ); - scripts["always-succeeds-v2-unit"] = read_script( - "applied/always-succeeds-v2-unit.plutus" - ); - scripts["check-datum-is-inline-big-arg"] = read_script( - "applied/check-datum-is-inline-big-arg.plutus" - ); - scripts["check-datum-is-inline-no-args"] = read_script( - "applied/check-datum-is-inline-no-args.plutus" - ); - scripts["check-datum-is-inline-unit"] = read_script( - "applied/check-datum-is-inline-unit.plutus" - ); - scripts["include-datum-big-arg"] = read_script( - "applied/include-datum-big-arg.plutus" - ); - scripts["include-datum-no-args"] = read_script( - "applied/include-datum-no-args.plutus" - ); - scripts["include-datum-unit"] = read_script( - "applied/include-datum-unit.plutus" - ); - scripts["one-shot-minting-big-arg"] = read_script( - "applied/one-shot-minting-big-arg.plutus" - ); - scripts["one-shot-minting-no-args"] = read_script( - "applied/one-shot-minting-no-args.plutus" - ); - scripts["one-shot-minting-unit"] = read_script( - "applied/one-shot-minting-unit.plutus" - ); - scripts["one-shot-minting-v2-big-arg"] = read_script( - "applied/one-shot-minting-v2-big-arg.plutus" - ); - scripts["one-shot-minting-v2-no-args"] = read_script( - "applied/one-shot-minting-v2-no-args.plutus" - ); - scripts["one-shot-minting-v2-unit"] = read_script( - "applied/one-shot-minting-v2-unit.plutus" - ); - scripts["redeemer1-validator-big-arg"] = read_script( - "applied/redeemer1-validator-big-arg.plutus" - ); - scripts["redeemer1-validator-no-args"] = read_script( - "applied/redeemer1-validator-no-args.plutus" - ); - scripts["redeemer1-validator-unit"] = read_script( - "applied/redeemer1-validator-unit.plutus" - ); -} - -export { scripts }; diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index f0774d26e..d80aee4f1 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -13,6 +13,9 @@ import Contract.TextEnvelope , plutusScriptV2FromEnvelope ) import Control.Monad.Error.Class (class MonadError) +import Control.Monad.Trans.Class (lift) +import Control.Parallel (parTraverse) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) @@ -20,28 +23,73 @@ import Data.BigInt (fromInt) import Data.List.Lazy (replicate) import Data.Profunctor.Choice (left) import Effect.Aff (Error, error, throwError) +import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object as Object import Mote (group, test) import Test.Spec.Assertions (shouldEqual) -foreign import scripts :: Object String +scriptFilenames :: Object String +scriptFilenames = + Object.fromFoldable + [ "always-fails" /\ "always-fails.plutus" + , "include-datum" /\ "include-datum.plutus" + , "one-shot-minting" /\ "one-shot-minting.plutus" + , "redeemer1-validator" /\ "redeemer1-validator.plutus" + , "always-succeeds-v2" /\ "always-succeeds-v2.plutus" + , "one-shot-minting-v2" /\ "one-shot-minting-v2.plutus" + , "check-datum-is-inline" /\ "check-datum-is-inline.plutus" + , "always-fails-big-arg" /\ "applied/always-fails-big-arg.plutus" + , "always-fails-no-args" /\ "applied/always-fails-no-args.plutus" + , "always-fails-unit" /\ "applied/always-fails-unit.plutus" + , "always-succeeds-v2-big-arg" /\ + "applied/always-succeeds-v2-big-arg.plutus" + , "always-succeeds-v2-no-args" /\ + "applied/always-succeeds-v2-no-args.plutus" + , "always-succeeds-v2-unit" /\ "applied/always-succeeds-v2-unit.plutus" + , "check-datum-is-inline-big-arg" /\ + "applied/check-datum-is-inline-big-arg.plutus" + , "check-datum-is-inline-no-args" /\ + "applied/check-datum-is-inline-no-args.plutus" + , "check-datum-is-inline-unit" /\ + "applied/check-datum-is-inline-unit.plutus" + , "include-datum-big-arg" /\ "applied/include-datum-big-arg.plutus" + , "include-datum-no-args" /\ "applied/include-datum-no-args.plutus" + , "include-datum-unit" /\ "applied/include-datum-unit.plutus" + , "one-shot-minting-big-arg" /\ "applied/one-shot-minting-big-arg.plutus" + , "one-shot-minting-no-args" /\ "applied/one-shot-minting-no-args.plutus" + , "one-shot-minting-unit" /\ "applied/one-shot-minting-unit.plutus" + , "one-shot-minting-v2-big-arg" /\ + "applied/one-shot-minting-v2-big-arg.plutus" + , "one-shot-minting-v2-no-args" /\ + "applied/one-shot-minting-v2-no-args.plutus" + , "one-shot-minting-v2-unit" /\ "applied/one-shot-minting-v2-unit.plutus" + , "redeemer1-validator-big-arg" /\ + "applied/redeemer1-validator-big-arg.plutus" + , "redeemer1-validator-no-args" /\ + "applied/redeemer1-validator-no-args.plutus" + , "redeemer1-validator-unit" /\ "applied/redeemer1-validator-unit.plutus" + ] main :: Effect Unit main = launchAff_ $ interpret $ suite contract :: Contract Unit contract = do - traverse_ (uncurry $ compareApplied v1) $ Tuple <$> v1ScriptPaths <*> params - traverse_ (uncurry $ compareApplied v2) $ Tuple <$> v2ScriptPaths <*> params + scripts <- liftAff $ parTraverse loadScript scriptFilenames + traverse_ (uncurry $ compareApplied (v1 scripts)) $ Tuple <$> v1ScriptPaths + <*> params + traverse_ (uncurry $ compareApplied (v2 scripts)) $ Tuple <$> v2ScriptPaths + <*> params suite :: TestPlanM (Aff Unit) Unit suite = group "Applying params to scripts test" $ do - traverse_ (uncurry $ testCase v1) $ Tuple <$> v1ScriptPaths <*> params - traverse_ (uncurry $ testCase v2) $ Tuple <$> v2ScriptPaths <*> params - + scripts <- lift $ parTraverse loadScript scriptFilenames + traverse_ (uncurry $ testCase (v1 scripts)) $ Tuple <$> v1ScriptPaths <*> + params + traverse_ (uncurry $ testCase (v2 scripts)) $ Tuple <$> v2ScriptPaths <*> + params where - testCase lang scriptName (args /\ argsName) = test ("Apply " <> argsName <> " to " <> scriptName) @@ -73,7 +121,7 @@ v2ScriptPaths :: Array String v2ScriptPaths = [ "always-succeeds-v2" , "one-shot-minting-v2" - , "check-datum-is-inline" + , "check-datum-is-inline$" ] params :: Array (Tuple (Array PlutusData) String) @@ -109,19 +157,30 @@ longBytes :: PlutusData longBytes = Bytes $ hexToByteArrayUnsafe $ foldl (\x y -> x <> y) "" $ replicate 65 "4d" -v1 :: forall (m :: Type -> Type). MonadError Error m => String -> m PlutusScript -v1 = lookupAux plutusScriptV1FromEnvelope +v1 + :: forall (m :: Type -> Type) + . MonadError Error m + => Object String + -> String + -> m PlutusScript +v1 scripts name = lookupAux plutusScriptV1FromEnvelope scripts name -v2 :: forall (m :: Type -> Type). MonadError Error m => String -> m PlutusScript -v2 = lookupAux plutusScriptV2FromEnvelope +v2 + :: forall (m :: Type -> Type) + . MonadError Error m + => Object String + -> String + -> m PlutusScript +v2 scripts name = lookupAux plutusScriptV2FromEnvelope scripts name lookupAux :: forall (m :: Type -> Type) . MonadError Error m => (TextEnvelope -> Maybe PlutusScript) + -> Object String -> String -> m PlutusScript -lookupAux decodeScript name = +lookupAux decodeScript scripts name = maybe (throwError $ error $ "Can't find the script with name " <> name) pure $ do txt <- Object.lookup name scripts diff --git a/test/Deserialization.purs b/test/Deserialization.purs index c8c56c8cf..f56e0f3d4 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -9,7 +9,7 @@ import Contract.TextEnvelope , decodeTextEnvelope ) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) -import Ctl.Examples.OtherTypeTextEnvelope (otherTypeTextEnvelope) +import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T import Ctl.Internal.Cardano.Types.Transaction (Vkeywitness) @@ -49,6 +49,7 @@ import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) import Effect (Effect) import Effect.Aff (Aff) +import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) import Mote (group, skip, test) @@ -247,6 +248,8 @@ suite = do test "fixture #4" $ witnessSetRoundTrip witnessSetFixture4 group "TextEnvelope decoding" do test "Decoding TestEnvelope with some other type" do + otherTypeTextEnvelope <- liftAff $ loadScript + "other-type-text-envelope.plutus" TextEnvelope envelope <- liftMaybe (error "Unexpected parsing error") $ decodeTextEnvelope otherTypeTextEnvelope envelope.type_ `shouldEqual` (Other "SomeOtherType") From ae495bdee05032cd841b5ec4c1bb89641819763b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 16:08:57 +0200 Subject: [PATCH 255/478] style: fix formatting --- dist/esbuild/wrapper.js | 4 ++-- esbuild/config.js | 16 ++++++++-------- esbuild/serve.js | 5 ++--- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/dist/esbuild/wrapper.js b/dist/esbuild/wrapper.js index 53e38d411..9f0811035 100644 --- a/dist/esbuild/wrapper.js +++ b/dist/esbuild/wrapper.js @@ -1,6 +1,6 @@ "use strict"; -import * as m from "./index.js" +import * as m from "./index.js"; -m.main() +m.main(); console.log("app starting"); diff --git a/esbuild/config.js b/esbuild/config.js index ea83006c2..d86530302 100755 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -6,25 +6,25 @@ import { fileURLToPath } from "node:url"; export const buildOptions = { entryPoints: [`output/${process.argv[2]}/index.js`], outdir: "dist/esbuild", - define: { - BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - SCRIPTS_DIR: '"fixtures/scripts/"' + define: { + BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, + SCRIPTS_DIR: '"fixtures/scripts/"', }, plugins: [ polyfillNode({ polyfills: { crypto: true, fs: true, - os: true - } + os: true, + }, }), wasmLoader({ - mode: "deferred" - }) + mode: "deferred", + }), ], bundle: true, platform: "browser", format: "esm", treeShaking: true, - logLevel: "warning" + logLevel: "warning", }; diff --git a/esbuild/serve.js b/esbuild/serve.js index e1f4b62d3..8b4220c43 100644 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -5,6 +5,5 @@ const ctx = await esbuild.context(buildOptions); await ctx.serve({ host: "127.0.0.1", port: 4008, - servedir: "dist/esbuild" -}) - + servedir: "dist/esbuild", +}); From a7799f24fda08d183d460bdf09b9c2c3752563dd Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 16:17:23 +0200 Subject: [PATCH 256/478] style: remove unused imports --- Makefile | 3 +-- esbuild/config.js | 2 -- examples/AlwaysMints.purs | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 54ad3b9bb..765c30131 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,7 @@ run-build: @${ps-bundle} && BROWSER_RUNTIME=1 webpack --mode=production esbuild-bundle: - @spago build \ - && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} + @spago build && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} esbuild-serve: @spago build \ diff --git a/esbuild/config.js b/esbuild/config.js index d86530302..76d54a6aa 100755 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -1,7 +1,5 @@ -import * as esbuild from "esbuild"; import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -import { fileURLToPath } from "node:url"; export const buildOptions = { entryPoints: [`output/${process.argv[2]}/index.js`], diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 2cdefd954..7322ebf9c 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -23,7 +23,6 @@ import Contract.Value as Value import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt -import Effect.Exception (error) main :: Effect Unit main = example testnetNamiConfig From 6f2758bd5938fbe4dfd61cde74115387d9732174 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 16:31:54 +0200 Subject: [PATCH 257/478] build: use `esm` imports in `nix/default.nix` --- nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index c95d66ea2..bb0125354 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -228,7 +228,7 @@ let # (idea taken from `plutus-playground-client`) '' cd ${project} - ${nodejs}/bin/node --enable-source-maps -e 'require("./output/${testMain}").main()' + ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}").then(m => m.main())' touch $out ''; @@ -358,7 +358,7 @@ let done; - ${nodejs}/bin/node --enable-source-maps -e 'require("${project}/output/${testMain}").main()' e2e-test run + ${nodejs}/bin/node --enable-source-maps -e 'import("${project}/output/${testMain}").then(m => m.main())' e2e-test run mkdir $out '' ; From 084ca270a7fe194bb1d01fd5e70104953db1807c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 16:39:05 +0200 Subject: [PATCH 258/478] build: use `esm` imports in `nix/default.nix` --- nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index bb0125354..c4384e6a5 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -228,7 +228,7 @@ let # (idea taken from `plutus-playground-client`) '' cd ${project} - ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}").then(m => m.main())' + ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.main())' touch $out ''; @@ -358,7 +358,7 @@ let done; - ${nodejs}/bin/node --enable-source-maps -e 'import("${project}/output/${testMain}").then(m => m.main())' e2e-test run + ${nodejs}/bin/node --enable-source-maps -e 'import("${project}/output/${testMain}/index.js").then(m => m.main())' e2e-test run mkdir $out '' ; From fe138b07dcc25910901eedaff313154b5cc1ca14 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 17:08:10 +0200 Subject: [PATCH 259/478] build: create `node_modules` symlink for `NODE_PATH` --- nix/default.nix | 5 +++++ test/Wallet/Cip30/SignData.js | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index c4384e6a5..fcdf32d26 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -136,6 +136,7 @@ let ]; shellHook = '' export NODE_PATH="${nodeModules}/lib/node_modules" + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString packageLockOnly "export NPM_CONFIG_PACKAGE_LOCK_ONLY=true"} '' @@ -177,6 +178,7 @@ let unpackPhase = '' export HOME="$TMP" export NODE_PATH="${nodeModules}/lib/node_modules" + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" cp -r $src . install-spago-style @@ -228,6 +230,7 @@ let # (idea taken from `plutus-playground-client`) '' cd ${project} + ln -sfn $NODE_PATH node_modules ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.main())' touch $out ''; @@ -400,6 +403,7 @@ let '' export HOME="$TMP" export NODE_PATH="${nodeModules}/lib/node_modules" + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} cp -r ${project}/* . @@ -489,6 +493,7 @@ let } '' export NODE_PATH="${pursDocsSearchNpm.nodeDependencies}/lib/node_modules" + ln -sfn $NODE_PATH node_modules export PATH="${pursDocsSearchNpm.nodeDependencies}/bin:$PATH" cp -r ${buildPursDocs { }}/{generated-docs,output,src} . install-spago-style diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 331d34260..ebf22760d 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -8,9 +8,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@emurgo/cardano-message-signing-nodejs"); csl = await import("@emurgo/cardano-serialization-lib-nodejs"); } -import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -lib = gcWrapper(lib); -csl = gcWrapper(csl); +// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; +// lib = gcWrapper(lib); +// csl = gcWrapper(csl); function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From 70e3356e8fe1b46dd1ad4626b286763c26ee3b51 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 17:40:47 +0200 Subject: [PATCH 260/478] build: disable md link check for `the-plutus-scaffold` --- doc/getting-started.md | 2 ++ nix/default.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/getting-started.md b/doc/getting-started.md index f758fa847..dc354275a 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -38,7 +38,9 @@ Then, add `https://public-plutonomicon.cachix.org` and `public-plutonomicon.cach The easiest way to create a new CTL project is to use our `ctl-scaffold` flake template. This lives in the CTL repo -- you can have a look [here](../templates/ctl-scaffold). It contains a simple, yet complete, flakes-based scaffolding project with example `outputs` for a CTL project, including its runtime. + Alternatively, consider [the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold) flake template. It's a scaffold built on top of the above mentioned `ctl-scaffold`, but includes a react based frontend and a haskell onchain additionaly. It's more of a demo application, than a minimal working example. + A new project can be initialized as follows: diff --git a/nix/default.nix b/nix/default.nix index fcdf32d26..281e8b32a 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -229,7 +229,7 @@ let # sandbox, so we can just use node instead # (idea taken from `plutus-playground-client`) '' - cd ${project} + cp -r ${project}/* . ln -sfn $NODE_PATH node_modules ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.main())' touch $out From 1b3b13df9107bbbf9afb7a938052331e9c82015e Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 18:10:44 +0200 Subject: [PATCH 261/478] fix: fix unit tests --- test/ApplyArgs.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index d80aee4f1..b39a43cb3 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -121,7 +121,7 @@ v2ScriptPaths :: Array String v2ScriptPaths = [ "always-succeeds-v2" , "one-shot-minting-v2" - , "check-datum-is-inline$" + , "check-datum-is-inline" ] params :: Array (Tuple (Array PlutusData) String) From 7993b9f150e36ee8144e67f2d2c06f8556ffee5d Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 18:37:51 +0200 Subject: [PATCH 262/478] build: bundle using `esbuild` for e2e tests --- nix/default.nix | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 281e8b32a..2365f0359 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -354,13 +354,13 @@ let export OGMIOS_PORT=1345 export E2E_EXTRA_BROWSER_ARGS="--disable-web-security" - python -m http.server 4008 --directory ${bundledPursProject}/dist & + python -m http.server 4008 --directory ${bundledPursProject}/dist/esbuild & until curl -S http://127.0.0.1:4008/index.html &>/dev/null; do echo "Trying to connect to webserver..."; sleep 0.1; done; - + ln -sfn $NODE_PATH node_modules ${nodejs}/bin/node --enable-source-maps -e 'import("${project}/output/${testMain}/index.js").then(m => m.main())' e2e-test run mkdir $out '' @@ -408,12 +408,10 @@ let ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} cp -r ${project}/* . chmod -R +rwx . - spago bundle-module --no-install --no-build -m "${main}" \ - --to ${bundledModuleName} - mkdir -p ./dist - ${pkgs.lib.optionalString includeBundledModule "cp ${bundledModuleName} ./dist"} - webpack --mode=production -c ${webpackConfig} -o ./dist \ - --entry ./${entrypoint} + node esbuild/bundle.js ${main} + cd dist/esbuild + ln -sfn ../../fixtures fixtures + cd ../.. mkdir $out mv dist $out ''; From ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 6 Jul 2023 21:32:27 +0200 Subject: [PATCH 263/478] build: use dynamic imports when selecting affjax driver --- esbuild/config.js | 2 +- nix/default.nix | 8 +++---- src/Internal/Affjax.js | 47 ++++++++++++++++++++++------------------ src/Internal/Affjax.purs | 8 +++++-- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/esbuild/config.js b/esbuild/config.js index 76d54a6aa..8c3d46424 100755 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -6,7 +6,7 @@ export const buildOptions = { outdir: "dist/esbuild", define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - SCRIPTS_DIR: '"fixtures/scripts/"', + SCRIPTS_DIR: '"fixtures/scripts"', }, plugins: [ polyfillNode({ diff --git a/nix/default.nix b/nix/default.nix index 2365f0359..a3e381898 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -360,8 +360,10 @@ let sleep 0.1; done; + mkdir project + cp -r ${project}/* project ln -sfn $NODE_PATH node_modules - ${nodejs}/bin/node --enable-source-maps -e 'import("${project}/output/${testMain}/index.js").then(m => m.main())' e2e-test run + ${nodejs}/bin/node --enable-source-maps -e 'import("./project/output/${testMain}/index.js").then(m => m.main())' e2e-test run mkdir $out '' ; @@ -409,9 +411,7 @@ let cp -r ${project}/* . chmod -R +rwx . node esbuild/bundle.js ${main} - cd dist/esbuild - ln -sfn ../../fixtures fixtures - cd ../.. + cp -r fixtures dist/esbuild mkdir $out mv dist $out ''; diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js index 282ec7f1b..61b949353 100644 --- a/src/Internal/Affjax.js +++ b/src/Internal/Affjax.js @@ -1,7 +1,12 @@ /* global BROWSER_RUNTIME */ -import XHR from "xhr2"; -import urllib from "url"; +export const driver = async () => { + if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + return browserDriver; + } else { + return await nodeDriver(); + } +}; const browserDriver = { newXHR: function () { @@ -12,23 +17,23 @@ const browserDriver = { }, }; -const nodeDriver = { - newXHR: function () { - return new XHR(); - }, - fixupUrl: function (url, xhr) { - if (xhr.nodejsBaseUrl === null) { - let u = urllib.parse(url); - u.protocol = u.protocol || "http:"; - u.hostname = u.hostname || "localhost"; - return urllib.format(u); - } else { - return url || "/"; - } - }, -}; +async function nodeDriver() { + const { default: XHR } = await import("xhr2"); + const { default: urllib } = await import("url"); -export const driver = - typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME - ? browserDriver - : nodeDriver; + return { + newXHR: function () { + return new XHR(); + }, + fixupUrl: function (url, xhr) { + if (xhr.nodejsBaseUrl === null) { + let u = urllib.parse(url); + u.protocol = u.protocol || "http:"; + u.hostname = u.hostname || "localhost"; + return urllib.format(u); + } else { + return url || "/"; + } + }, + }; +} diff --git a/src/Internal/Affjax.purs b/src/Internal/Affjax.purs index d462a6fd4..e50e9b7a2 100644 --- a/src/Internal/Affjax.purs +++ b/src/Internal/Affjax.purs @@ -2,12 +2,16 @@ module Ctl.Internal.Affjax ( request ) where +import Prelude + import Affjax (AffjaxDriver) import Affjax (Error, Request, Response, request) as Affjax +import Control.Promise (Promise, toAffE) import Data.Either (Either) +import Effect (Effect) import Effect.Aff (Aff) -foreign import driver :: AffjaxDriver +foreign import driver :: Effect (Promise AffjaxDriver) -- | Makes an HTTP request. -- | @@ -28,4 +32,4 @@ foreign import driver :: AffjaxDriver -- | ``` request :: forall a. Affjax.Request a -> Aff (Either Affjax.Error (Affjax.Response a)) -request = Affjax.request driver +request req = toAffE driver >>= flip Affjax.request req From d1f1e1dec453536ad7f15e8eb8c3874220c63fe8 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 7 Jul 2023 13:27:55 +0200 Subject: [PATCH 264/478] build: update `templates/ctl-scaffold` --- templates/ctl-scaffold/.gitignore | 6 +- templates/ctl-scaffold/Makefile | 10 + .../ctl-scaffold/dist/esbuild/index.html | 11 + .../ctl-scaffold/dist/esbuild/wrapper.js | 6 + templates/ctl-scaffold/esbuild/bundle.js | 4 + templates/ctl-scaffold/esbuild/config.js | 28 + templates/ctl-scaffold/esbuild/serve.js | 9 + templates/ctl-scaffold/flake.lock | 16 +- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 646 ++++++++++++++ templates/ctl-scaffold/package.json | 4 + templates/ctl-scaffold/packages.dhall | 36 +- templates/ctl-scaffold/spago-packages.nix | 806 ++++++++---------- templates/ctl-scaffold/spago.dhall | 1 - 14 files changed, 1128 insertions(+), 457 deletions(-) create mode 100644 templates/ctl-scaffold/dist/esbuild/index.html create mode 100644 templates/ctl-scaffold/dist/esbuild/wrapper.js create mode 100644 templates/ctl-scaffold/esbuild/bundle.js create mode 100755 templates/ctl-scaffold/esbuild/config.js create mode 100644 templates/ctl-scaffold/esbuild/serve.js diff --git a/templates/ctl-scaffold/.gitignore b/templates/ctl-scaffold/.gitignore index 628f00fcd..8732a23c8 100644 --- a/templates/ctl-scaffold/.gitignore +++ b/templates/ctl-scaffold/.gitignore @@ -20,5 +20,9 @@ test-data/preprod test-data/mainnet test-data/keys .projectile -/dist/ +/dist/* +!/dist/esbuild/ +/dist/esbuild/* +!/dist/esbuild/index.html +!/dist/esbuild/wrapper.js output.js diff --git a/templates/ctl-scaffold/Makefile b/templates/ctl-scaffold/Makefile index dc044b47e..84208ebb5 100644 --- a/templates/ctl-scaffold/Makefile +++ b/templates/ctl-scaffold/Makefile @@ -7,6 +7,16 @@ ps-entrypoint := Scaffold.Main e2e-entrypoint := Scaffold.Test.E2E.Serve ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js +esbuild-bundle: + @spago build && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} + +esbuild-serve: + @spago build \ + && cd dist/esbuild \ + && ln -sfn ../../scripts scripts \ + && cd ../.. \ + && BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} + run-dev: @${ps-bundle} && BROWSER_RUNTIME=1 webpack-dev-server --progress diff --git a/templates/ctl-scaffold/dist/esbuild/index.html b/templates/ctl-scaffold/dist/esbuild/index.html new file mode 100644 index 000000000..7c9b27620 --- /dev/null +++ b/templates/ctl-scaffold/dist/esbuild/index.html @@ -0,0 +1,11 @@ + + + + + + + + + Examples source code is located in examples/ directory.
+ + diff --git a/templates/ctl-scaffold/dist/esbuild/wrapper.js b/templates/ctl-scaffold/dist/esbuild/wrapper.js new file mode 100644 index 000000000..9f0811035 --- /dev/null +++ b/templates/ctl-scaffold/dist/esbuild/wrapper.js @@ -0,0 +1,6 @@ +"use strict"; + +import * as m from "./index.js"; + +m.main(); +console.log("app starting"); diff --git a/templates/ctl-scaffold/esbuild/bundle.js b/templates/ctl-scaffold/esbuild/bundle.js new file mode 100644 index 000000000..c3a5dd652 --- /dev/null +++ b/templates/ctl-scaffold/esbuild/bundle.js @@ -0,0 +1,4 @@ +import * as esbuild from "esbuild"; +import { buildOptions } from "./config.js"; + +esbuild.build(buildOptions); diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js new file mode 100755 index 000000000..077500fe5 --- /dev/null +++ b/templates/ctl-scaffold/esbuild/config.js @@ -0,0 +1,28 @@ +import { wasmLoader } from "esbuild-plugin-wasm"; +import { polyfillNode } from "esbuild-plugin-polyfill-node"; + +export const buildOptions = { + entryPoints: [`output/${process.argv[2]}/index.js`], + outdir: "dist/esbuild", + define: { + BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, + SCRIPTS_DIR: '"scripts"', + }, + plugins: [ + polyfillNode({ + polyfills: { + crypto: true, + fs: true, + os: true, + }, + }), + wasmLoader({ + mode: "deferred", + }), + ], + bundle: true, + platform: "browser", + format: "esm", + treeShaking: true, + logLevel: "warning", +}; diff --git a/templates/ctl-scaffold/esbuild/serve.js b/templates/ctl-scaffold/esbuild/serve.js new file mode 100644 index 000000000..8b4220c43 --- /dev/null +++ b/templates/ctl-scaffold/esbuild/serve.js @@ -0,0 +1,9 @@ +import * as esbuild from "esbuild"; +import { buildOptions } from "./config.js"; + +const ctx = await esbuild.context(buildOptions); +await ctx.serve({ + host: "127.0.0.1", + port: 4008, + servedir: "dist/esbuild", +}); diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f56ef71a9..a3421472f 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -2757,17 +2757,17 @@ ] }, "locked": { - "lastModified": 1687338750, - "narHash": "sha256-TF1m9/Sepv4VGJe1Wp4FglXTCsyGUblrJZYebZFBfDQ=", + "lastModified": 1688727102, + "narHash": "sha256-qeYJOsLWEI3byvvcUqm9Z6LwCs4NB7JFHRHTwib2ET4=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", + "rev": "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", + "rev": "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea", "type": "github" } }, @@ -3596,17 +3596,17 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "lastModified": 1679861376, + "narHash": "sha256-LLqaLPJNiap2U8I77K5XVPGJA/Be30Z8lyGOyYXmBlc=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" }, "original": { "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c29c1de8f..023907d1a 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; + rev = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 0acb8bd94..dc32a5c5a 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -34,6 +34,9 @@ }, "devDependencies": { "buffer": "6.0.3", + "esbuild": "0.18.11", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esbuild-plugin-wasm": "^1.1.0", "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.10", @@ -69,6 +72,358 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", + "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", + "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", + "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", + "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", + "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", + "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", + "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", + "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", + "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", + "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", + "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", + "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", + "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", + "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", + "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", + "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", + "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", + "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", + "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", + "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", + "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", + "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -121,6 +476,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@jspm/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@jspm/core/-/core-2.0.1.tgz", + "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", + "dev": true + }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -1894,6 +2255,69 @@ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, + "node_modules/esbuild": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", + "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.11", + "@esbuild/android-arm64": "0.18.11", + "@esbuild/android-x64": "0.18.11", + "@esbuild/darwin-arm64": "0.18.11", + "@esbuild/darwin-x64": "0.18.11", + "@esbuild/freebsd-arm64": "0.18.11", + "@esbuild/freebsd-x64": "0.18.11", + "@esbuild/linux-arm": "0.18.11", + "@esbuild/linux-arm64": "0.18.11", + "@esbuild/linux-ia32": "0.18.11", + "@esbuild/linux-loong64": "0.18.11", + "@esbuild/linux-mips64el": "0.18.11", + "@esbuild/linux-ppc64": "0.18.11", + "@esbuild/linux-riscv64": "0.18.11", + "@esbuild/linux-s390x": "0.18.11", + "@esbuild/linux-x64": "0.18.11", + "@esbuild/netbsd-x64": "0.18.11", + "@esbuild/openbsd-x64": "0.18.11", + "@esbuild/sunos-x64": "0.18.11", + "@esbuild/win32-arm64": "0.18.11", + "@esbuild/win32-ia32": "0.18.11", + "@esbuild/win32-x64": "0.18.11" + } + }, + "node_modules/esbuild-plugin-polyfill-node": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-polyfill-node/-/esbuild-plugin-polyfill-node-0.3.0.tgz", + "integrity": "sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==", + "dev": true, + "dependencies": { + "@jspm/core": "^2.0.1", + "import-meta-resolve": "^3.0.0" + }, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/esbuild-plugin-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz", + "integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "individual", + "url": "https://ko-fi.com/tschrock" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2818,6 +3242,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", + "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -5799,6 +6233,160 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" }, + "@esbuild/android-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", + "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", + "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", + "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", + "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", + "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", + "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", + "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", + "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", + "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", + "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", + "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", + "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", + "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", + "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", + "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", + "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", + "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", + "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", + "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", + "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", + "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", + "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", + "dev": true, + "optional": true + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -5842,6 +6430,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@jspm/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@jspm/core/-/core-2.0.1.tgz", + "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", + "dev": true + }, "@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -7294,6 +7888,52 @@ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, + "esbuild": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", + "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.11", + "@esbuild/android-arm64": "0.18.11", + "@esbuild/android-x64": "0.18.11", + "@esbuild/darwin-arm64": "0.18.11", + "@esbuild/darwin-x64": "0.18.11", + "@esbuild/freebsd-arm64": "0.18.11", + "@esbuild/freebsd-x64": "0.18.11", + "@esbuild/linux-arm": "0.18.11", + "@esbuild/linux-arm64": "0.18.11", + "@esbuild/linux-ia32": "0.18.11", + "@esbuild/linux-loong64": "0.18.11", + "@esbuild/linux-mips64el": "0.18.11", + "@esbuild/linux-ppc64": "0.18.11", + "@esbuild/linux-riscv64": "0.18.11", + "@esbuild/linux-s390x": "0.18.11", + "@esbuild/linux-x64": "0.18.11", + "@esbuild/netbsd-x64": "0.18.11", + "@esbuild/openbsd-x64": "0.18.11", + "@esbuild/sunos-x64": "0.18.11", + "@esbuild/win32-arm64": "0.18.11", + "@esbuild/win32-ia32": "0.18.11", + "@esbuild/win32-x64": "0.18.11" + } + }, + "esbuild-plugin-polyfill-node": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-polyfill-node/-/esbuild-plugin-polyfill-node-0.3.0.tgz", + "integrity": "sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==", + "dev": true, + "requires": { + "@jspm/core": "^2.0.1", + "import-meta-resolve": "^3.0.0" + } + }, + "esbuild-plugin-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz", + "integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -7976,6 +8616,12 @@ "resolve-cwd": "^3.0.0" } }, + "import-meta-resolve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", + "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index f70c6484a..de6c65827 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -1,4 +1,5 @@ { + "type": "module", "name": "ctl-scaffold", "version": "0.1.0", "description": "", @@ -49,6 +50,9 @@ }, "devDependencies": { "buffer": "6.0.3", + "esbuild": "0.18.11", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esbuild-plugin-wasm": "^1.1.0", "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.10", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index e2b2f8c64..4d54f6f7d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -105,8 +105,8 @@ in upstream ------------------------------- -} let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.14.5-20220224/packages.dhall - sha256:67cc3d4f0e8fb72bb1413ba94ddd72a3ceb0783eb725e3b22ad7568b3b581163 + https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20230105/packages.dhall + sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda let additions = { aeson = @@ -145,8 +145,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "bfd8f4dcd0522a076320f9dc710c24817438e02e" + , repo = "https://github.com/errfrom/purescript-aeson.git" + , version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b" } , sequences = { dependencies = @@ -168,8 +168,8 @@ let additions = , "unfoldable" , "unsafe-coerce" ] - , repo = "https://github.com/hdgarrood/purescript-sequences" - , version = "v3.0.2" + , repo = "https://github.com/garganscript/purescript-sequences" + , version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c" } , properties = { dependencies = [ "prelude", "console" ] @@ -228,8 +228,8 @@ let additions = , "unordered-collections" , "unsafe-coerce" ] - , repo = "https://github.com/juspay/medea-ps.git" - , version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a" + , repo = "https://github.com/errfrom/medea-ps.git" + , version = "00981e4ce7249808413a6db8d88d849bbe85245a" } , purescript-toppokki = { dependencies = @@ -241,8 +241,8 @@ let additions = , "node-buffer" , "node-fs-aff" ] - , repo = "https://github.com/firefrorefiddle/purescript-toppokki" - , version = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9" + , repo = "https://github.com/errfrom/purescript-toppokki" + , version = "b043e9342463df76972d05981ac4ec25316834bf" } , bignumber = { dependencies = @@ -256,8 +256,8 @@ let additions = , "prelude" , "tuples" ] - , repo = "https://github.com/mlabs-haskell/purescript-bignumber" - , version = "705923edd892a3397b90d28ce7db9a7181dcd599" + , repo = "https://github.com/errfrom/purescript-bignumber" + , version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a" } , cardano-transaction-lib = { dependencies = @@ -298,7 +298,6 @@ let additions = , "js-date" , "lattice" , "lists" - , "math" , "maybe" , "medea" , "media-types" @@ -330,6 +329,7 @@ let additions = , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" + , "random" , "rationals" , "record" , "refs" @@ -345,15 +345,14 @@ let additions = , "typelevel" , "typelevel-prelude" , "uint" - , "undefined" , "unfoldable" , "untagged-union" , "variant" - , "web-storage" , "web-html" + , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "167bc59308d00be43c01706e03f8c0e7993b6d69" + , version = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea" } , noble-secp256k1 = { dependencies = @@ -366,10 +365,9 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "710c15c48c5afae5e0623664d982a587ff2bd177" + "https://github.com/errfrom/purescript-noble-secp256k1.git" + , version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623" } } in (upstream // additions) - with parsing.version = "v7.0.1" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index b04ba2623..ac96e1e3e 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "bfd8f4dcd0522a076320f9dc710c24817438e02e"; + version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "bfd8f4dcd0522a076320f9dc710c24817438e02e"; - sha256 = "1ywm51wqvwjqfrmhav6m4hyl9il3h77yyhzgyhvkvg0lkc0nn575"; + url = "https://github.com/errfrom/purescript-aeson.git"; + rev = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -19,11 +19,11 @@ let "aff" = pkgs.stdenv.mkDerivation { name = "aff"; - version = "v6.0.0"; + version = "v7.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-aff.git"; - rev = "d0eb009f2f47cb1f5ba1d8592d90c95e8e7ff75d"; - sha256 = "1780sgqyvbdgh8ynxmxn5d44vvhaz7kn9sv3l44c2s9q8xfjkfgm"; + rev = "6adec6ff048a7876f74c294c440374cd21342d39"; + sha256 = "1viplap030ym9ya033xl6x41hvdc12v9ngwp1v64ayl40a5m1d47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -31,11 +31,11 @@ let "aff-promise" = pkgs.stdenv.mkDerivation { name = "aff-promise"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/nwolverson/purescript-aff-promise.git"; - rev = "45cfba7f663fce12fe69285fe5acaa4ff025144c"; - sha256 = "12fnlwcrj5p6kc5rls7qxwg53zd83gkdpklpmp8jyav945hlgbj2"; + rev = "3aa74e68e3e4c3e38d821375703e0b2f49d831eb"; + sha256 = "10gv3b05dxnlmr9zmigqs1hz4xqrx7da30aqh12kqg3zrg49k9cc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -43,11 +43,11 @@ let "aff-retry" = pkgs.stdenv.mkDerivation { name = "aff-retry"; - version = "v1.2.1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/Unisay/purescript-aff-retry.git"; - rev = "936fad803e3610f149df724ead288657a905cb84"; - sha256 = "08651ly153ywzviab0ipd0zrhwdr8nz4xfym45dlpbgabgrh8pra"; + rev = "4464f4bf62151651c8a86b33fc3c3149f7c71580"; + sha256 = "00xmfrx41giflrbdxm6hzmr23iqzr34x656kjpbmk3zvm49n6726"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -55,11 +55,11 @@ let "affjax" = pkgs.stdenv.mkDerivation { name = "affjax"; - version = "v12.0.0"; + version = "v13.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-affjax.git"; - rev = "5be197edc213fbededb8da908f77b69908eaa6f8"; - sha256 = "1f2snaimnl9ry8f3kankfcyy50wkba54vvin4wsrglahqgs1nrgb"; + rev = "87a8ffce89a476c1425370eb4b2b7e15408e0d1c"; + sha256 = "02hd0pfa1lb06a8qg2mqmkhyn3cz8hbvh6r9h2i6xcfqh0r8jg7s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -67,11 +67,11 @@ let "ansi" = pkgs.stdenv.mkDerivation { name = "ansi"; - version = "v6.1.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/hdgarrood/purescript-ansi.git"; - rev = "e89e6fede616bd16b001841cf30ac320c95313a6"; - sha256 = "1jsll0h7nz13zgscs036cnkkc6frnlcnk6fwjdwsyp6wbmjri2zm"; + rev = "7d898732d643a977a78004851112a4417909e126"; + sha256 = "1aml84m5p1s14kj29m39182byg44nf275p4cinx3kgwhv1gj0qcp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -79,11 +79,11 @@ let "argonaut" = pkgs.stdenv.mkDerivation { name = "argonaut"; - version = "v8.0.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut.git"; - rev = "e5137df76065c14e5de70c4e2820222bd7c78fc2"; - sha256 = "05sq1102rl1phm2gadx0gp966yvk9q1r492bb30q1m0nz762q4v2"; + rev = "7505a47f2edb0c9cacaac4f11dcedf4723a3e9c8"; + sha256 = "18yxhlrwri6q858krz1klyq29fx8nvfm16c04wm2rn91mgyasn6x"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -91,11 +91,11 @@ let "argonaut-codecs" = pkgs.stdenv.mkDerivation { name = "argonaut-codecs"; - version = "v8.1.0"; + version = "v9.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-codecs.git"; - rev = "b0a041d92bfd548e2cd793cc7c02363464325a13"; - sha256 = "11vmlq98s4jmg5grvdrrlfkqj9vk3la44ky8158a440ipcpinjkq"; + rev = "f8fdc1e34142fa84e66022ea5d417a008d709146"; + sha256 = "1ncpl512k2xdaf7r5ixwxkm6i4vym7a6a3ih71z489h9ad781q73"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -103,11 +103,11 @@ let "argonaut-core" = pkgs.stdenv.mkDerivation { name = "argonaut-core"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-core.git"; - rev = "673971dee79667882a83f9fda7097e50530726f1"; - sha256 = "13ka4xybc8ql54xlkkhy4919nnapfigdlk51ja85f8xwhr64x9kq"; + rev = "68da81dd80ec36d3b013eff46dc067a972c22e5d"; + sha256 = "0hxl17ddbflkk0hchjgk5xj6j9fwp3b182w4g073p0dwscdl4f08"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -115,11 +115,11 @@ let "argonaut-traversals" = pkgs.stdenv.mkDerivation { name = "argonaut-traversals"; - version = "v9.0.0"; + version = "v10.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-argonaut-traversals.git"; - rev = "36f2e368ceea1ed681bd8e2884eaca451945fc44"; - sha256 = "0bj88s7rz50jfhyawq4h97lvbr3h7pksbqnz4lmh714f5fda6ncx"; + rev = "8d2403d8d57afb568933dbb36063d5670ce770a0"; + sha256 = "0v965bcl1hdp1hacbzxcm35kxxclixj0kpsdm816gs7m548z6l43"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -127,11 +127,11 @@ let "arraybuffer-types" = pkgs.stdenv.mkDerivation { name = "arraybuffer-types"; - version = "v3.0.1"; + version = "v3.0.2"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-arraybuffer-types.git"; - rev = "48cd7f4887791db1d9c2daf5fd98b62ba00e15bd"; - sha256 = "09r6bhsiq9iqdsjf9p8m3p31qkszsipsafvy836mfdi8af6h5fv6"; + rev = "9b0b7a0f9ee034e039f3d3a2a9c3f74eb7c9264a"; + sha256 = "1q3111jk6jj64bxy86lc7ik6q5mgdz87bc086wj5rm57dmlivlxx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -139,11 +139,11 @@ let "arrays" = pkgs.stdenv.mkDerivation { name = "arrays"; - version = "v6.0.1"; + version = "v7.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-arrays.git"; - rev = "c0aa3176b077ad7a46b11ef34487485c28142e53"; - sha256 = "0lm0m5hapimchzgfywr648pkw1hpggr6qibh8d19p2impbnc94c0"; + rev = "bb1b821530d368110eebf8a3541af90823e8af65"; + sha256 = "1mb9a4pb1bd7fj4vqj6msv5z27jbb5f89w3nczgjjhs02909phk9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -151,11 +151,11 @@ let "assert" = pkgs.stdenv.mkDerivation { name = "assert"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-assert.git"; - rev = "71a3b1f3b9917c23691fdbb1858de171be871a10"; - sha256 = "0r1l7j67an8dy1w4xdpr8nc30lsxv31xwqph9mkfh3nd49jlyyd3"; + rev = "27c0edb57d2ee497eb5fab664f5601c35b613eda"; + sha256 = "02qpcsijil64qq4kcikv2ynxl85zkryvv0vmzjm6752956ymzi0j"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -163,11 +163,11 @@ let "avar" = pkgs.stdenv.mkDerivation { name = "avar"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-avar.git"; - rev = "ac3cbbb8d4b71ff19a78a3178355c089e44d3b4d"; - sha256 = "005046wl61w6r5v3qwd16srhcx82vdz3yvp4xzad2xaasb6iq55l"; + rev = "d00f5784d9cc8f079babd62740f5c52b87e5caa5"; + sha256 = "132g0ccmjr8328xpaycww8b5wmx1vi3li4irxxqcjk5wi47i8c9h"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -175,11 +175,11 @@ let "bifunctors" = pkgs.stdenv.mkDerivation { name = "bifunctors"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-bifunctors.git"; - rev = "a31d0fc4bbebf19d5e9b21b65493c28b8d3fba62"; - sha256 = "0xc2hf8ccdgqw3m9qcmr38kmzv05fsxvakd07wyrqshvkzg3xn0d"; + rev = "16ba2fb6dd7f05528ebd9e2f9ca3a068b325e5b3"; + sha256 = "1qz5aaiq5w4g1rhjb63z47h6nqhw8hw23x1zw5alam047pq4vfkg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -187,11 +187,11 @@ let "bigints" = pkgs.stdenv.mkDerivation { name = "bigints"; - version = "v6.0.0"; + version = "v7.0.1"; src = pkgs.fetchgit { - url = "https://github.com/sharkdp/purescript-bigints.git"; - rev = "d5151e04db7e18641fbb2b5892f4198b1cab5907"; - sha256 = "0x8s6d6q2rpfkk56bmayg57a7hl2h7sq9ljrxfc8sjnwd7mfs193"; + url = "https://github.com/purescript-contrib/purescript-bigints.git"; + rev = "e73f55b866e437c7bf04c7d262de7c205c47bbca"; + sha256 = "0msh5sv6g0k69fi0qv4xi1g89bfwai099f0ycjb8a69mnjq8x21n"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -199,11 +199,11 @@ let "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; - version = "705923edd892a3397b90d28ce7db9a7181dcd599"; + version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-bignumber"; - rev = "705923edd892a3397b90d28ce7db9a7181dcd599"; - sha256 = "0wddkx161xk457r1mb1f1r79l8qgxja0xhdvxjd1ai43nwp9cgkf"; + url = "https://github.com/errfrom/purescript-bignumber"; + rev = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + sha256 = "03py821gnkgi5p7zaxwr4rqsiv67v83y5c04i6x4v15nr6aaf7vz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "167bc59308d00be43c01706e03f8c0e7993b6d69"; + version = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; - sha256 = "0w2h1a18yf37r4lh7wjb0fnnmbxibqa07vsv3axbg84ljanh8ph2"; + rev = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; + sha256 = "0ghiyqkc5lqi3m2v41qdrq5g18k7pnlm5p7vrbdqs46nq8x0krm9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -223,11 +223,11 @@ let "catenable-lists" = pkgs.stdenv.mkDerivation { name = "catenable-lists"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-catenable-lists.git"; - rev = "ee03395f2c5d59a7fd8529a0faac6ec1ebcbb682"; - sha256 = "1lz06fx0za5sl65wccn5fl37mw3x4jnvrriz1gg0aqsmm9lag7ss"; + rev = "09abe1f4888bc00841ad2b59e56a9e7ce7ebd4ab"; + sha256 = "0fn6caspdnb0nrlj31sy7d5hxrhndfz7a2b9wfkxf5bv5vpjyawb"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -247,11 +247,11 @@ let "console" = pkgs.stdenv.mkDerivation { name = "console"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-console.git"; - rev = "d7cb69ef8fed8a51466afe1b623868bb29e8586e"; - sha256 = "0fzzzqjgrz33pb2jf7cdqpg09ilxb7bsrc7sbfq52wjg0sx9aq6g"; + rev = "3b83d7b792d03872afeea5e62b4f686ab0f09842"; + sha256 = "0fr5l1myhscp910mybp04cg6g8f2hy3ikjfc8fkqlb2dm2cqzdfs"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "const" = pkgs.stdenv.mkDerivation { name = "const"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-const.git"; - rev = "3a3a4bdc44f71311cf27de9bd22039b110277540"; - sha256 = "0aq9qjbrvf8mf8hmas6imv4mg6n3zi13hkf449ns1hn12lw8qv4g"; + rev = "ab9570cf2b6e67f7e441178211db1231cfd75c37"; + sha256 = "0mcpwqqf5bcwxlzk53smvsjjz1ymlnq0ypphg6sc83ibw70g64f6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "contravariant" = pkgs.stdenv.mkDerivation { name = "contravariant"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-contravariant.git"; - rev = "ae1a765f7ddbfd96ae1f12e399e46d554d8e3b38"; - sha256 = "029hb8i3n4759x4gc06wkfgr7wim5x1w5jy2bsiy42n0g731h5qc"; + rev = "9ad3e105b8855bcc25f4e0893c784789d05a58de"; + sha256 = "1xkd3rfs8v20w7mj6sj6dmhfb2vb1zpmjv245xj1rahk3g16qm7m"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -283,11 +283,11 @@ let "control" = pkgs.stdenv.mkDerivation { name = "control"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-control.git"; - rev = "18d582e311f1f8523f9eb55fb93c91bd21e22837"; - sha256 = "06dc06yli4g5yr8fb9sdpqbhiaff37g977qcsbds9q2mlhnjgfx9"; + rev = "a6033808790879a17b2729e73747a9ed3fb2264e"; + sha256 = "05sdgywprwpav62d2bvlb80yd39brxhnmhhl1f116mm9hw5clqia"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "crypto" = pkgs.stdenv.mkDerivation { name = "crypto"; - version = "v4.0.0"; + version = "v5.0.1"; src = pkgs.fetchgit { url = "https://github.com/oreshinya/purescript-crypto.git"; - rev = "cbc19e06c5e4d528e7733633e50c070b1aa0f77e"; - sha256 = "142p9f0mg1yi4bccg3jwhhyn4k4yy5fskh08p05n9sfym27ss126"; + rev = "c72b4b789e52a1fb31c65cd318ea82bf295af1ec"; + sha256 = "07p7153j3brsfyc1pik4y760g054zx1kwy2ap67pfs41zv982s03"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -307,11 +307,11 @@ let "datetime" = pkgs.stdenv.mkDerivation { name = "datetime"; - version = "v5.0.2"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-datetime.git"; - rev = "e110462829ea656d2bc0924266d4edff222108d4"; - sha256 = "1mhzn2ymdkzki7wjlr9xrdbngm0886wmfbh2c46flnf9lmfyw54y"; + rev = "7f6062346055e654942caed6c44612b59031f059"; + sha256 = "0z5f62arrli0dgmggv6z2qkv1qc9isdivcn7njywsa8wmc4vd47n"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -319,11 +319,11 @@ let "debug" = pkgs.stdenv.mkDerivation { name = "debug"; - version = "v5.0.0"; + version = "v6.0.2"; src = pkgs.fetchgit { url = "https://github.com/garyb/purescript-debug.git"; - rev = "144305842dba81169a93b3a3cc75429d5c8389e9"; - sha256 = "09j69bgrq8nzw1l3aj1hka3y5ycmcsn9dlgf22k5ifrd74iic60y"; + rev = "a37b82f62c89734934c0962ece3412913020460a"; + sha256 = "0q3r21zh0kjy9aq8q2siaf8841q63cmxjl2fbk0z3r0z4cfihccg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -331,11 +331,11 @@ let "distributive" = pkgs.stdenv.mkDerivation { name = "distributive"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-distributive.git"; - rev = "11f3f87ca5720899e1739cedb58dd6227cae6ad5"; - sha256 = "0788znmdyh6b1c9pln624ah397l88xmd3fxlxiy3z1qy8bzr4r54"; + rev = "6005e513642e855ebf6f884d24a35c2803ca252a"; + sha256 = "0x6cfsx9ff66kvw9l10pxd5vv16r91mmfxrfc68w1xfdfi81lhdx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -343,11 +343,11 @@ let "effect" = pkgs.stdenv.mkDerivation { name = "effect"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-effect.git"; - rev = "985d97bd5721ddcc41304c55a7ca2bb0c0bfdc2a"; - sha256 = "1n9qr85knvpm4i0qhm8xbgfk46v9y843p76j278phfs9l6aywzsn"; + rev = "a192ddb923027d426d6ea3d8deb030c9aa7c7dda"; + sha256 = "0aa10lc6h9mlf4xf3g3ziig7v6kxdqvbh20kma8ay59w0b1bhmj1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -355,11 +355,11 @@ let "either" = pkgs.stdenv.mkDerivation { name = "either"; - version = "v5.0.0"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-either.git"; - rev = "c1a1af35684f10eecaf6ac7d38dbf6bd48af2ced"; - sha256 = "18dk159yyv7vs0xsnh9m5fajd7zy6zw5b2mpyd6nqdh3c6bb9wh6"; + rev = "af655a04ed2fd694b6688af39ee20d7907ad0763"; + sha256 = "05zps4klvgmvlm06f4hrycssm8q0pysbqnjsrk26lfvmid6mmg63"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -367,11 +367,11 @@ let "encoding" = pkgs.stdenv.mkDerivation { name = "encoding"; - version = "v0.0.7"; + version = "v0.0.8"; src = pkgs.fetchgit { url = "https://github.com/menelaos/purescript-encoding.git"; - rev = "0a4187136f9ea4ea51ddf635e3b3c2cd2461faac"; - sha256 = "1rsnn8g2lx24k9wflr1jj12281i0smprb76nfm2f61yqqiwgij4d"; + rev = "a9d1913de736821c133ecd7944a08b2ab07ad774"; + sha256 = "0c23bpfw67ik1n821bq3s0w036sk7yqi4fy5fd7dgf4325abk6zn"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -379,11 +379,11 @@ let "enums" = pkgs.stdenv.mkDerivation { name = "enums"; - version = "v5.0.0"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-enums.git"; - rev = "170d959644eb99e0025f4ab2e38f5f132fd85fa4"; - sha256 = "1lci5iy6s6cmh93bpkfcmp0j4n5dnij7dswb0075bk0kzd9xp7rs"; + rev = "cd373c580b69fdc00e412bddbc299adabe242cc5"; + sha256 = "1wk98ddmgyii1ifqawnhqkiqlrs405qcp3m12jsg1yp8jv6ppv47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -391,11 +391,11 @@ let "exceptions" = pkgs.stdenv.mkDerivation { name = "exceptions"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-exceptions.git"; - rev = "410d0b8813592bda3c25028540eeb2cda312ddc9"; - sha256 = "1yjbrx34a0rnxgpvywb63n9jzhkdgb2q2acyzbwh290mrrggc95x"; + rev = "afab3c07c820bb49b6c5be50049db46a964a6161"; + sha256 = "04xrbrcjwsv8gj465ygrlqhv1majxmr6m242iazg6apxlr89hgvg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -403,11 +403,11 @@ let "exists" = pkgs.stdenv.mkDerivation { name = "exists"; - version = "v5.1.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-exists.git"; - rev = "c34820f8b2d15be29abdd5097c3d636f5df8f28c"; - sha256 = "15qp52cpp2yvxihkzfmn6gabyvx5s6iz5lafvqhyfgp4wfnz0bds"; + rev = "f765b4ace7869c27b9c05949e18c843881f9173b"; + sha256 = "0xnxi8fsmi15wrpq5d99gg94glk8a45hpx7pf4pmxg5r6rn1vjvx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -427,11 +427,11 @@ let "fixed-points" = pkgs.stdenv.mkDerivation { name = "fixed-points"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-fixed-points.git"; - rev = "3b643d948479aee7cd3e36c95258f1f84df0c35f"; - sha256 = "0w2j0sarylzsmg8b228pmn3qndif0bzw2vmxrx30ar15qy7jdb5d"; + rev = "2b7f480038a15c707adf49178181cefed167afb2"; + sha256 = "1iib0yxl749lg4m7ysqmb9aby67a9829x38xc2rma5fk9fv30cw7"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -439,11 +439,11 @@ let "foldable-traversable" = pkgs.stdenv.mkDerivation { name = "foldable-traversable"; - version = "v5.0.1"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foldable-traversable.git"; - rev = "d581caf260772b1b446c11ac3c8be807b290b220"; - sha256 = "182na4np7hk2dqyxywy4jij2csrzx4bz02m6bq8yx1j27hlgjvsd"; + rev = "b3926f870532d287ea59e2d5cd3873b81ef2a93a"; + sha256 = "0xg8qvyc6r9wqgy7wnw1rjqljl4wpgdrkxsm5x9rsagj2k5brxip"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -451,11 +451,11 @@ let "foreign" = pkgs.stdenv.mkDerivation { name = "foreign"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foreign.git"; - rev = "7ee18c6689c56c89755172ea53326f948da10bd3"; - sha256 = "16j7712cck79p8q53xbhn4hs886bm0ls5wvmchrhqnaghj48m85g"; + rev = "2dd222d1ec7363fa0a0a7adb0d8eaf81bb7006dd"; + sha256 = "0ycjaal8b2rsg3zl3b7acv166vjfdvziiza3fs8nhfw0rx0xmm1m"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -463,11 +463,11 @@ let "foreign-object" = pkgs.stdenv.mkDerivation { name = "foreign-object"; - version = "v3.0.0"; + version = "v4.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-foreign-object.git"; - rev = "c9a7b7bb8bed1b87c5545c4ebe85a70f86c0e6b1"; - sha256 = "0accw6qd93qqry19rskjgl7y54xi2wd70rglbqyjx6c5ybcjnavr"; + rev = "9bfb4eb6271b151414594cfec669fb4b18b91bd1"; + sha256 = "1fr5hwzkan7yv2kbgvii2b8kanhjkqrbixcyj7kyv9fwkk8dk96a"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -475,11 +475,11 @@ let "fork" = pkgs.stdenv.mkDerivation { name = "fork"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-fork.git"; - rev = "153cc29e6e51fb1108368efc622d41d9f80bd707"; - sha256 = "1hyvaixza8151zbylk2kv859x48yyhla536lcjghcwd62vzfwmdn"; + rev = "a5c3bc6f357e97669e8c29c6f79f5f55be0d42c0"; + sha256 = "0yzh55vfrhrr660ni3sbbljypjirbka5jlks4zibqmhwrmy3wnj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -487,11 +487,11 @@ let "form-urlencoded" = pkgs.stdenv.mkDerivation { name = "form-urlencoded"; - version = "v6.0.2"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-form-urlencoded.git"; - rev = "860b2c4bf0a848322d2077faaefbeb98762cb8d6"; - sha256 = "1pi3vxix10crisisnd94li1vmmgiawlh5lgl51z7ssd9azygg0b0"; + rev = "e0e3eebc76f62f2594a0e823e8d6241ca00b2459"; + sha256 = "1ay946w7gkgqrxxv5qf28w83mh59r1q4j8kk6pndhripz9pby68w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -499,11 +499,11 @@ let "formatters" = pkgs.stdenv.mkDerivation { name = "formatters"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-formatters.git"; - rev = "b2e65b2bccd09a3c17a396f07e13e5cdca90e4e4"; - sha256 = "02c43sv6ci2698mjkmvkv3cjv99ilxv8ii8x7n9wqf18r4hlmk0y"; + rev = "0b4deda4c6664209173e3e21b8fcbc6151a4549c"; + sha256 = "0z3w5qbfd8z8bakir3rwanq6dcf554f3apacxw5l2vxscvikyra3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -511,11 +511,11 @@ let "free" = pkgs.stdenv.mkDerivation { name = "free"; - version = "v6.2.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-free.git"; - rev = "c185c0b2144ddfb2bc3ac2b345df32e33221b21d"; - sha256 = "10zsw49wzlzz78882b3grl19gpca5llpdk3ph608075h0ygk3q3k"; + rev = "e2d8fa8023a864363857834e11393483bced5e38"; + sha256 = "0gyy0k297m26gw76w7kx8k1zjczlqbqb3nmh2h4gb3r84gl05g6r"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -523,11 +523,11 @@ let "freet" = pkgs.stdenv.mkDerivation { name = "freet"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-freet.git"; - rev = "507c2edd9173cda5ad44dd0638133edd69fd9acd"; - sha256 = "0f5bibw604sd9ffmp51b3jppka88r54mh7sdz91zy5b92wgsy5yr"; + rev = "21be6fba22599a25812430dda6ba2ca8135920a1"; + sha256 = "006wbr7f19k7vs1jg4wgkwyx1q4wvvs2wqscfcxsp8fzfpn2yqw8"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -535,11 +535,11 @@ let "functions" = pkgs.stdenv.mkDerivation { name = "functions"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-functions.git"; - rev = "691b3345bc2feaf914e5299796c606b6a6bf9ca9"; - sha256 = "1gnk6xh5x04zcahn82gwp49qpglxd5jkfqn0i58m27jfihvblaxd"; + rev = "f626f20580483977c5b27a01aac6471e28aff367"; + sha256 = "1bsf2y8hx103a92yrc6m05q2dv51ckag1srd7q5n9vaf2k9byrj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -547,11 +547,11 @@ let "functors" = pkgs.stdenv.mkDerivation { name = "functors"; - version = "v4.1.1"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-functors.git"; - rev = "e936f7a8d2ec53a344c478ccada5add93273848c"; - sha256 = "0i1x14r54758s5jx5d7zy4l07mg6gabljadgybldnbpmdqk6b966"; + rev = "022ffd7a2a7ec12080314f3d217b400674a247b4"; + sha256 = "1pnw3r1nk0rx8mrw3ajjml40zvx9v26qrqwj77pz7hpwxigxfbff"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -559,11 +559,11 @@ let "gen" = pkgs.stdenv.mkDerivation { name = "gen"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-gen.git"; - rev = "85c369f56545a3de834b7e7475a56bc9193bb4b4"; - sha256 = "1h396rqn1fc2c155i58vnaksqjrpajly128ah6wq1w426vwr1vrf"; + rev = "9fbcc2a1261c32e30d79c5418edef4d96fe76931"; + sha256 = "0kajzcp9a8dmqvb3ga27hlf18m2smbp98a0bmzzb9vv156ckw0b4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -571,11 +571,11 @@ let "heterogeneous" = pkgs.stdenv.mkDerivation { name = "heterogeneous"; - version = "v0.5.1"; + version = "v0.6.0"; src = pkgs.fetchgit { url = "https://github.com/natefaubion/purescript-heterogeneous.git"; - rev = "550445cf7932e158395423fc087cdc05bab41c40"; - sha256 = "08bpgm9p8ib1jzrmssqpa1bqqzfmba43lsih1xvr3pf1jfizayxg"; + rev = "5b7542bdd9547c5aef95b8878f103f0ce4ee1383"; + sha256 = "0ff1wjq2ayhy67ydggbb2qlzbhvmv1m1z8dcp48p9zhxiq9fpfsz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -583,11 +583,11 @@ let "http-methods" = pkgs.stdenv.mkDerivation { name = "http-methods"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-http-methods.git"; - rev = "d373066a45017e886d1580cd359372368231de47"; - sha256 = "1g0ywd5zpckmhq28mr14yr4k28hiii1px8r8xbdx8nv45ryw69l3"; + rev = "99b48d54b978e4e6438d850015d59e57ac64824e"; + sha256 = "126x1cqr1769a3yzigpp8sp33n6s4fadai7w30mb2nk9dbxy0hw5"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -595,11 +595,11 @@ let "identity" = pkgs.stdenv.mkDerivation { name = "identity"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-identity.git"; - rev = "5c150ac5ee4fa6f145932f6322a1020463dae8e9"; - sha256 = "0a58y71ihvb5b7plnn2sxsbphqzd9nzfafak4d5a576agn76q0ql"; + rev = "ef6768f8a52ab0bc943a85f5761ba07c257f639f"; + sha256 = "1lh0pkwwdyd8q9bgf4l1m96gdnardki4r2s359cnhrwp94b43fyr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -607,11 +607,11 @@ let "integers" = pkgs.stdenv.mkDerivation { name = "integers"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-integers.git"; - rev = "8a783f2d92596c43afca53066ac18eb389d15981"; - sha256 = "1rrygw0ai61brnvgap7dfhdzacyhg5439pz6yrmmyg32cvf0znhv"; + rev = "54d712b25c594833083d15dc9ff2418eb9c52822"; + sha256 = "04j9sqvkgyxxvbm8jfc2118wzmgswn8jva9fysgbsnmsg9vcxfm6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -619,11 +619,11 @@ let "invariant" = pkgs.stdenv.mkDerivation { name = "invariant"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-invariant.git"; - rev = "c421b49dec7a1511073bb408a08bdd8c9d17d7b1"; - sha256 = "0vwkbh7kv00g50xjgvxc0mv5b99mrj6q0sxznxwk32hb9hkbhy5l"; + rev = "1d2a196d51e90623adb88496c2cfd759c6736894"; + sha256 = "07rqag47ykdiqc5yfbc1a64ijaqliljhcw1vgbv81m7ljzzd2xna"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -631,23 +631,11 @@ let "js-date" = pkgs.stdenv.mkDerivation { name = "js-date"; - version = "v7.0.0"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-js-date.git"; - rev = "a6834eef986e3af0490cb672dc4a8b4b089dcb15"; - sha256 = "1dpiwn65qww862ilpfbd06gwfazpxvz3jwvsjsdrcxqqfcbjp8n8"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "js-timers" = pkgs.stdenv.mkDerivation { - name = "js-timers"; - version = "v5.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-js-timers.git"; - rev = "86afef13f457b9506acdfe88559ee18f1cd2c2d8"; - sha256 = "0008paz0qkz5n1pfrzagkkac6jny9z2rd1ij10ww2k1pkb9cy59z"; + rev = "1ea020316946cc4b87195bca9c54d0c16abaa490"; + sha256 = "03535g8hc4bzyzig25hf75dls9ypsgrdk2nc45h8zw4xyy4ha0gz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -655,11 +643,11 @@ let "js-uri" = pkgs.stdenv.mkDerivation { name = "js-uri"; - version = "v2.0.0"; + version = "v3.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-js-uri.git"; - rev = "6145d5e631be3d57d8a4a9cf976ae140713dee35"; - sha256 = "1q34ir93cqbcl9g49vv1qfj8jxbbdj7f85a14y4mzd7yjq0a042g"; + rev = "06f7ae755ccb36bfa80bc3702533165af5c7ef06"; + sha256 = "0c9k1fpf4ljlqsnb07i3gwa6jiwlli0046pnglmk56ls53l6d4aj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -679,11 +667,11 @@ let "lazy" = pkgs.stdenv.mkDerivation { name = "lazy"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lazy.git"; - rev = "2f73f61e7ac1ae1cfe05564112e3313530e673ff"; - sha256 = "1wxfx019911gbkifq266hgn67zwm89pxhi83bai77mva5n9j3f6l"; + rev = "48347841226b27af5205a1a8ec71e27a93ce86fd"; + sha256 = "0dxlc3b2bdqsri45i7a9bvwvv0gg43cc1gq61zi41f290a29ny2q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -691,11 +679,11 @@ let "lcg" = pkgs.stdenv.mkDerivation { name = "lcg"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lcg.git"; - rev = "8fb2eb16bbba2cee1d115a6729659ac649da811b"; - sha256 = "04r9bmx9kc3jqx59hh9yqqkl95mf869la9as5h36jv85ynn464dx"; + rev = "67c6c6483a563a59ae036d9dca0f1be2835326a5"; + sha256 = "1shzn6zvc1cxd7v0bvfsk7x3xf59vxby8c5lfjvd746r6396zn65"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -703,11 +691,11 @@ let "lists" = pkgs.stdenv.mkDerivation { name = "lists"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-lists.git"; - rev = "6383c4f202b3f69474f9f7da182c2d42fcc3111c"; - sha256 = "0xmg918s3mqvfvwgjfqcs1yvcz6hy2n7h3ygqz2iyvk868gz25qs"; + rev = "b113451e5b41cad87d669a3165f955c71cd863e2"; + sha256 = "1mg7vy44k8jlqkri7x4ikciixx92b17wi35887x09dwdsicjf0sx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -715,23 +703,11 @@ let "literals" = pkgs.stdenv.mkDerivation { name = "literals"; - version = "v0.2.0"; - src = pkgs.fetchgit { - url = "https://github.com/jvliwanag/purescript-literals.git"; - rev = "11457380e1b28c9526c41381eeb0ee840982db5c"; - sha256 = "1jjnpfmh9qfmffyrmcfnn9p25irmsmaji6lwrsrd2r9xdhpzmqg7"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "math" = pkgs.stdenv.mkDerivation { - name = "math"; - version = "v3.0.0"; + version = "v1.0.2"; src = pkgs.fetchgit { - url = "https://github.com/purescript/purescript-math.git"; - rev = "59746cc74e23fb1f04e09342884c5d1e3943a04f"; - sha256 = "0hkf0vyiga21992d9vbvdbnzdkvgljmsi497jjas1rk3vhblx8sq"; + url = "https://github.com/rowtype-yoga/purescript-literals.git"; + rev = "ae3ef4e9c1ae7c57ec77bd13906fa60ae8abba4a"; + sha256 = "1dvzi3qx6jbfw2g28wgbh1s9zv8z59wrf7r7jhib4g5ibgzq5r8q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -739,11 +715,11 @@ let "maybe" = pkgs.stdenv.mkDerivation { name = "maybe"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-maybe.git"; - rev = "8e96ca0187208e78e8df6a464c281850e5c9400c"; - sha256 = "0vyk3r9gklvv7awzpph7ra53zxxbin1ngmqflb5vvr2365v5xyqy"; + rev = "c6f98ac1088766287106c5d9c8e30e7648d36786"; + sha256 = "0n33g8c579vcs06ii0r7f14jjdwzjw7p583w4nmrv9h442q2cvlz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -751,11 +727,11 @@ let "medea" = pkgs.stdenv.mkDerivation { name = "medea"; - version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; + version = "00981e4ce7249808413a6db8d88d849bbe85245a"; src = pkgs.fetchgit { - url = "https://github.com/juspay/medea-ps.git"; - rev = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - sha256 = "05gnar9l1li0v1vv12kga0sssskfm4f1x9y6smpmqbqg9396pmsq"; + url = "https://github.com/errfrom/medea-ps.git"; + rev = "00981e4ce7249808413a6db8d88d849bbe85245a"; + sha256 = "0sxv9l53hqjx5n7gdnpr5ydxp0zr2wv0ikk2sc0ch9whq5rridcy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -763,11 +739,11 @@ let "media-types" = pkgs.stdenv.mkDerivation { name = "media-types"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-media-types.git"; - rev = "b6efa4c1e6808b31f399d8030b5938acec87cb48"; - sha256 = "0l51nd1w52756pyy3zliwmhfbin0px4pxr7d2h5vchl1wq895fja"; + rev = "af853de226592f319a953637069a943dd261cba3"; + sha256 = "0bxpsd2yw3zg58ay649v3xld7n17n7j7n9y8l841cjih9bc7ccxx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -775,11 +751,11 @@ let "mmorph" = pkgs.stdenv.mkDerivation { name = "mmorph"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/Thimoteus/purescript-mmorph.git"; - rev = "ebe16afbfa16dd600f3379ccedc7529417402393"; - sha256 = "0ds88hray8v0519n9k546qsc4qs8bj1k5h5az7nwfp0gaq0r5wpk"; + rev = "94bc558ac34184d5236a7a9b2463dcc7551ced8e"; + sha256 = "0m3m1kjy4i9lwzj8l5qlafxawyhbdxj035wa5ys4j8v4013a92xg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -823,11 +799,11 @@ let "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-newtype.git"; - rev = "7b292fcd2ac7c4a25d7a7a8d3387d0ee7de89b13"; - sha256 = "1fgzbxslckva2psn0sia30hfakx8xchz3wx2kkh3w8rr4nn2py8v"; + rev = "29d8e6dd77aec2c975c948364ec3faf26e14ee7b"; + sha256 = "0kfc644zn2f9rpx8fy4gjvmz04k9mv1c2xrqis8m3s0ydnhbffd7"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -835,11 +811,11 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "710c15c48c5afae5e0623664d982a587ff2bd177"; + version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "710c15c48c5afae5e0623664d982a587ff2bd177"; - sha256 = "014wapsgg6xa76i3f368aag4kps644g8qqqha9xbgyxmrhxsln6q"; + url = "https://github.com/errfrom/purescript-noble-secp256k1.git"; + rev = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -847,11 +823,11 @@ let "node-buffer" = pkgs.stdenv.mkDerivation { name = "node-buffer"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-buffer.git"; - rev = "0721f1e8d768df48ae429547c8c60b121ca120cb"; - sha256 = "14bf3llsa20ivkwp5hlyk8v8zfzpzhhsni9pd8rfqdyzp6zrdx3b"; + rev = "7be7bd082b7d3e15de2ed5a626d43af746bdb35e"; + sha256 = "1l1j4ml0lyhnxs1zcy3jchlc0mbsn40g1pxyb4lv6slhp0qdhjhp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -859,11 +835,11 @@ let "node-child-process" = pkgs.stdenv.mkDerivation { name = "node-child-process"; - version = "v7.1.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-child-process.git"; - rev = "5c4e560eceead04efc1d5a3ec1f6de91bb1d512e"; - sha256 = "18va367xims00hmjwiasiifdfak3cbs0sp4sr52ihb20n19n6h5b"; + rev = "ceaa5dcd21697da24a916b81c73ba013592cf378"; + sha256 = "1h93r8q0gpdp3vz89b9aazdr0dc99kyx0wx8xb1ap8v2img8xid1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -871,11 +847,11 @@ let "node-fs" = pkgs.stdenv.mkDerivation { name = "node-fs"; - version = "v6.2.0"; + version = "v8.1.1"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-fs.git"; - rev = "3cb63cc55a02e506fe07d3940a50d6f0eb6ca2f2"; - sha256 = "1b89sxr6asxvgx59myhfbahiiz1z6sg2qfrm9bqd46h93ai8bhn1"; + rev = "a9da8b9860f8a1f67e38701f5cce72a0f2c3901d"; + sha256 = "0ywv0d8w2fbqnj9z1dxbm2a9na10g960b5gznjcf7d70gs22ixhj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -883,11 +859,11 @@ let "node-fs-aff" = pkgs.stdenv.mkDerivation { name = "node-fs-aff"; - version = "v7.0.0"; + version = "v9.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-fs-aff.git"; - rev = "1da5d326573c3b17c6d4dba3d0e0157e60869f91"; - sha256 = "10aglq89gbchykwlckmg5xsln705qha76f125snkmk056kq2w89h"; + rev = "ac9b6fd272eb52c906b490be1c714423dd36a5bf"; + sha256 = "0mi91kd1b0ix8ygaaj5jspw0m53b8rv5mingrk2lvxhimsxa3f81"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -895,11 +871,11 @@ let "node-http" = pkgs.stdenv.mkDerivation { name = "node-http"; - version = "v6.0.0"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-http.git"; - rev = "48a4da07051f0cc9a9d08fbfe8179ebf55aff39a"; - sha256 = "1521ab70jx7a9d7kk4gn1sk4w6knfi13pai1kanhrvwp5lfys5wl"; + rev = "9baab9d9b45064e8cc1d53913bb1668bfa799b16"; + sha256 = "1bi7kwai15l4lqcnaq14mi906cppcjm3iqax4qq3vjihf68b66r4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -907,11 +883,11 @@ let "node-net" = pkgs.stdenv.mkDerivation { name = "node-net"; - version = "v2.0.1"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-net.git"; - rev = "e25a2c538dfa524cd9b75bf12fd7a393efe2f7e9"; - sha256 = "17sx9r74kdjq85dafm5kisbvgdb0wn11lq9gaazpdirhshpm2wl5"; + rev = "812ce3142b67c33db225a0f94fabd6a6776bf0be"; + sha256 = "18z42zqinm357qzr8r7w7lwhjnmd2693ywqkb1ndjd2p3dz7x4zm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -919,11 +895,11 @@ let "node-path" = pkgs.stdenv.mkDerivation { name = "node-path"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-path.git"; - rev = "a2d7cf05e40b607ef7d048a3684cda788cd42890"; - sha256 = "1384qyf4v84wbahafzvqdxjllqy8qkd5dpkhsl3js444vsm2aplr"; + rev = "d5f08cfde829b831408c4c6587cec83f2cd6a58e"; + sha256 = "1d38ipij4lb1nq8wkv7kmpk77z5ac0spfc89hfc9yn6jnscl6sky"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -931,11 +907,11 @@ let "node-process" = pkgs.stdenv.mkDerivation { name = "node-process"; - version = "v8.2.0"; + version = "v10.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-process.git"; - rev = "e1e807ac7831d1a8a15e242964f7e5005e42f76b"; - sha256 = "0nl9r271s8f71a9wqfkadq9b490h8phwgqc61jbzhm4ags23pqpg"; + rev = "9d126d9d4f898723e7cab69895770bbac0c3a0b8"; + sha256 = "07gcg33g56f74ph2bqmj5lysy752f6y31y7mkrgd2m0jzi7wknn3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -943,11 +919,11 @@ let "node-readline" = pkgs.stdenv.mkDerivation { name = "node-readline"; - version = "v5.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-readline.git"; - rev = "c59deb30c7ff5cc91d6b062120c5a3979bd4ccff"; - sha256 = "0c299bvkhrdbij88fxb75sdm7bl4wpgv9fz7wsj0hw6gkxmplpj9"; + rev = "fbe80a949275f15643b80f9db7c01d5a6b4031ed"; + sha256 = "1gxldf016w8xjm6jj95mshglgb4gcs9scxfr5ckxry1rzk6fzz1d"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -955,11 +931,11 @@ let "node-streams" = pkgs.stdenv.mkDerivation { name = "node-streams"; - version = "v5.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-streams.git"; - rev = "886bb2045685e3b9031687d69ccfed29972147bb"; - sha256 = "1jc3d4x0v77h8qcwq7hpwprsdr3gqmdfiyr1ph0kiy7r9bbrqwfx"; + rev = "8395652f9f347101fe042f58726edc592ae5086c"; + sha256 = "1cgkh3dwnhv90r7dak3x4dq698gh30ghfxncrw0ngwrv5pismn0x"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -967,11 +943,11 @@ let "node-url" = pkgs.stdenv.mkDerivation { name = "node-url"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-node-url.git"; - rev = "d5671f5e38051f4fa7acacd9ec157ed9dc6ded46"; - sha256 = "0w78q23vxa2nldy0dfj4nb5kv0pcrc1yq7dp1mysz7cdi9f72zp9"; + rev = "de7b279df13a9eeef2455af561525f37568c190e"; + sha256 = "14qkni1138jn02s8hpchc0i73n7brj1j9d3gwc8kh1wz1ddhjypw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -979,11 +955,11 @@ let "nonempty" = pkgs.stdenv.mkDerivation { name = "nonempty"; - version = "v6.1.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-nonempty.git"; - rev = "7696eaf915da5333173bca7d779a51f91a525b83"; - sha256 = "0hhhw5x5xvs2bd9373gklja1545glnzi1xc2sj16kkznnayrmvsn"; + rev = "28150ecc7419238b187abd609a92a645273348bb"; + sha256 = "1mwdc2sny2ygp67kyk7h2493vq7syf7j18s3d9a5gwf1y7jlf7gh"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -991,11 +967,11 @@ let "now" = pkgs.stdenv.mkDerivation { name = "now"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-now.git"; - rev = "4c994dae8bb650787de1e4d9e709f2565fb354fb"; - sha256 = "1wa4j2h5rlw1lgfpm7rif3v6ksm8lplxl1x69zpk8hdf0cfyz4qm"; + rev = "b5ffed2381e5fefc063f484e607e8499e79eaf32"; + sha256 = "01khmqs4iz7dhlvd43zxj19q0c0vvqf1m128vgvgxz5mv430zfgr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1003,11 +979,11 @@ let "nullable" = pkgs.stdenv.mkDerivation { name = "nullable"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-nullable.git"; - rev = "8b19c16b16593102ae5d5d9f5b42eea0e213e2f5"; - sha256 = "0jbmks8kwhpb5fr2b9nb70fjwh6zdnwirycvzr77jafcny24yrnl"; + rev = "3202744c6c65e8d1fbba7f4256a1c482078e7fb5"; + sha256 = "10s3b54pjmr2rxlyzvc8yc99k1dpn0qrijnc4y65yj5z6bxf2791"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1015,11 +991,11 @@ let "numbers" = pkgs.stdenv.mkDerivation { name = "numbers"; - version = "v8.0.0"; + version = "v9.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-numbers.git"; - rev = "f5bbd96cbed58403c4445bd4c73df50fc8d86f46"; - sha256 = "00pm2x4kh4fm91r7nmik1v5jclkgh7gpxz13ambyqxbxbiqjq0vg"; + rev = "2a53528f18f9415334bae28e7bb3cf3be86342c2"; + sha256 = "1h4v6ir1hq6gvkk0kla38vlcd6bv73xkc8pv71jygwqxrdwfxxgw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1039,11 +1015,11 @@ let "options" = pkgs.stdenv.mkDerivation { name = "options"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-options.git"; - rev = "0309a42692251ce5e3d1d0be57d4f63f7143f858"; - sha256 = "04f70wfik1pi6nzfq2cn3la9z735akkadpx5cxbs4mx8xg032sjd"; + rev = "93e4eb4610975cb7b3bb290273396707e7384c38"; + sha256 = "1c8qkln40i1sf2lz8c6wn4ijj7jmfgzmgsrn9ax7m4ix9c05r5sq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1051,11 +1027,11 @@ let "optparse" = pkgs.stdenv.mkDerivation { name = "optparse"; - version = "v4.1.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/f-o-a-m/purescript-optparse.git"; - rev = "04f2ed818f32390a9feff04b892f23c96ccb84cb"; - sha256 = "0b05wczcjnann0xw6vdaq2c1a2n9rcgvq9l29wa5461b5mvjyb80"; + rev = "dbc4c385e6c436eed4299ae2c0bb2cc278cf2410"; + sha256 = "05sd1ziz6rx1k0wz1nnhfnl1gz3s6qld3whkkjz8lilrvycxxn47"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1063,11 +1039,11 @@ let "ordered-collections" = pkgs.stdenv.mkDerivation { name = "ordered-collections"; - version = "v2.0.2"; + version = "v3.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-ordered-collections.git"; - rev = "1929b706b07e251995b6be51baa7995c61eb4d83"; - sha256 = "0g57043ylj3kldkm5vn233yd6hiamryhdfh72cxx9h3mn0ra8ghd"; + rev = "9826b7632d0d0a691173bde308a634195f42a419"; + sha256 = "1wk8mcn1zsxi0yk9ybas2v7m0drb492806gld1xxxic8x1i19ws0"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1075,11 +1051,11 @@ let "orders" = pkgs.stdenv.mkDerivation { name = "orders"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-orders.git"; - rev = "c25b7075426cf82bcb960495f28d2541c9a75510"; - sha256 = "0wwy3ycjll0s590ra35zf5gjvs86w97rln09bj428axhg7cvfl0a"; + rev = "f86db621ec5eef1274145f8b1fd8ebbfe0ed4a2c"; + sha256 = "14fjls3v14ia6fr2w4p0i5dqv10zk343wg28m4c77a17jmvbs9r4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1087,11 +1063,11 @@ let "parallel" = pkgs.stdenv.mkDerivation { name = "parallel"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-parallel.git"; - rev = "16b38a2e148639b04ae67e0ce63cc220da8857f7"; - sha256 = "0x8mvhgs8ygqj34xgyhk6gixqm32p2ymm00zg0zdw13g3lil9p4x"; + rev = "85290dca837771ac4870071008c933d315ef678f"; + sha256 = "0bpwvzq4dn7vx5mfj12w1zvvnamc6w2c45c2v54b9yw36snnwpcf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1099,11 +1075,11 @@ let "parsing" = pkgs.stdenv.mkDerivation { name = "parsing"; - version = "v7.0.1"; + version = "v10.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-parsing.git"; - rev = "a3e82c26ce2c74b5fa38ff7814d7c35bf9233af5"; - sha256 = "15yx51khg3niqiryc6qdii6lwdvni77ak7dkbf9w5zw4h1y51p9a"; + rev = "6dc1e9cab195f4af3394b48c508b4794328edeac"; + sha256 = "1i2idq5l7vanxrd8k6yg4fjp6l3cigrq266qyjs07ri5cc4k8879"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1111,11 +1087,11 @@ let "partial" = pkgs.stdenv.mkDerivation { name = "partial"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-partial.git"; - rev = "2f0a5239efab68179a684603263bcec8f1489b08"; - sha256 = "0acxf686hvaj793hyb7kfn9lf96kv3nk0lls2p9j095ylp55sldb"; + rev = "0fa0646f5ea1ec5f0c46dcbd770c705a6c9ad3ec"; + sha256 = "04s1h0r3slyd8kcamhqqrr6piksl9y76nmf2418j0ifhp16qwxmm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1123,11 +1099,11 @@ let "pipes" = pkgs.stdenv.mkDerivation { name = "pipes"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/felixschl/purescript-pipes.git"; - rev = "42e43f0961ad0fc3f1cef6986fe23ca9f48f6dda"; - sha256 = "0jzgzi34wqqdcfgznbpfv4b8al2prd36yshnndlvkqfv70smx3kh"; + rev = "e3bdc0b0db0a67e89a717b6118b23e78a380e23f"; + sha256 = "1jz3bfbl8b0hgbcm9y98bv2z29b072v1k8snp19vb2xql1zd40sx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1135,11 +1111,11 @@ let "posix-types" = pkgs.stdenv.mkDerivation { name = "posix-types"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-node/purescript-posix-types.git"; - rev = "e562680fce64b67e26741a61a51160a04fd3e7fb"; - sha256 = "1knhdnnmxx77qsjz3gk1ga7n713l303dxyn8zs46qh7p2hnkalkc"; + rev = "b79ff37f87846ca5caab2123cf84148e700d40d1"; + sha256 = "1zcm2hikfigh5fbwg12c61gvvjhmwgy6fplfcm6bc5aqb7w3czll"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1147,11 +1123,11 @@ let "prelude" = pkgs.stdenv.mkDerivation { name = "prelude"; - version = "v5.0.1"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-prelude.git"; - rev = "68f8012bc2309d9bf5832cdf7316ad052d586905"; - sha256 = "1x0cacvv9mmw80vy6f40y0p959q1dz28fwjswhyd7ws6npbklcy0"; + rev = "f4cad0ae8106185c9ab407f43cf9abf05c256af4"; + sha256 = "0j6mb9w728ifcp10jdv7l9k7k5pw8j1f0fa7xyb8xmbxzc59xqpy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1159,11 +1135,11 @@ let "profunctor" = pkgs.stdenv.mkDerivation { name = "profunctor"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-profunctor.git"; - rev = "4551b8e437a00268cc9b687cbe691d75e812e82b"; - sha256 = "0fvd2xiv77sp4jd4spgdp4i9812p6pdzzbg4pa96mbr0h19jf39c"; + rev = "0a966a14e7b0c827d44657dc1710cdc712d2e034"; + sha256 = "07rhk8micbc74my6s53xbj2smvvwah2w1drqrcmcnncxdks3lqg3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1171,11 +1147,11 @@ let "profunctor-lenses" = pkgs.stdenv.mkDerivation { name = "profunctor-lenses"; - version = "v7.0.1"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-profunctor-lenses.git"; - rev = "9c3d87a6dab8eb785a93bff11aa183796dc93183"; - sha256 = "1wknj7g6vwk2ga1rq57l470h322308ddjn5bd3x2hhfkiy039kc3"; + rev = "973d567afe458fd802cf4f0d9725b6dc35ad9297"; + sha256 = "0axz7nznn12iqh6sn9qjg6i8qglpdsqgkp30ndwdj98czcnbnybv"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1195,11 +1171,11 @@ let "psci-support" = pkgs.stdenv.mkDerivation { name = "psci-support"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-psci-support.git"; - rev = "f26fe8266a63494080476333e22f971404ea8846"; - sha256 = "16vhf8hapd7rcgmafmjpiq7smhzdh3300f2idk1q4kk01yxn8ddj"; + rev = "897cdb543548cb6078d69b6413b54841404eda72"; + sha256 = "1ix53r8avkn3fw72mngwzw7v6c6mv7j4miw5mrgjrh9hb8p2ydl1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1207,11 +1183,11 @@ let "purescript-toppokki" = pkgs.stdenv.mkDerivation { name = "purescript-toppokki"; - version = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9"; + version = "b043e9342463df76972d05981ac4ec25316834bf"; src = pkgs.fetchgit { - url = "https://github.com/firefrorefiddle/purescript-toppokki"; - rev = "6983e07bf0aa55ab779bcef12df3df339a2b5bd9"; - sha256 = "01arx2sp2k287cr4y96frnn6jlghcias9hwdr27yr28k4xa5bhfv"; + url = "https://github.com/errfrom/purescript-toppokki"; + rev = "b043e9342463df76972d05981ac4ec25316834bf"; + sha256 = "0kkk4xfnkq6fqr30d95i3x4r6z9479bx7v0ama7xf36pr0y26lk1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1219,11 +1195,11 @@ let "quickcheck" = pkgs.stdenv.mkDerivation { name = "quickcheck"; - version = "v7.1.0"; + version = "v8.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-quickcheck.git"; - rev = "990fa1cf14b48b827d9b2d115b1c6977c4b0a76d"; - sha256 = "1dxchng3r2mad0505a0c7cc35vs1f7y2xb5i13p59jpdz6ijqa9k"; + rev = "bf5029f97e6c0d7552d3a08d2ab793a19e2c5e3d"; + sha256 = "142dvh57fl8b6i7mm37a38v7vkc1znbqz6l6wqa704m53hkikvyd"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1243,11 +1219,11 @@ let "quickcheck-laws" = pkgs.stdenv.mkDerivation { name = "quickcheck-laws"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-quickcheck-laws.git"; - rev = "464597522e5e001adc2619676584871f423b9ea0"; - sha256 = "1m397bh2w5a0wvms8rjgfxh71m7krmfkgk11j5krhz86b72k3izd"; + rev = "04f00fb78d88f38a2f2bb73b75f97ce5bf5624fc"; + sha256 = "0izp71wq253k9wih2hspfs4p1s36yins2a5mh13yl57pf1srbrky"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1255,11 +1231,11 @@ let "random" = pkgs.stdenv.mkDerivation { name = "random"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-random.git"; - rev = "3e02da113c7afbac37ea4e16188c39d3057314d5"; - sha256 = "1v6ykgp8jmx488hq8mgb0l0sf1nyhjs6wq0w279iyibk9jxc6nib"; + rev = "9540bc965a9596da02fefd9949418bb19c92533a"; + sha256 = "0qz14qviz5053j9h1jwpk0gnn692hcdx6fp90wckzrnw31d53174"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1267,11 +1243,11 @@ let "rationals" = pkgs.stdenv.mkDerivation { name = "rationals"; - version = "v5.0.0"; + version = "v5.0.1"; src = pkgs.fetchgit { - url = "https://github.com/anttih/purescript-rationals.git"; - rev = "8c52d8cc891d1223150a31416220aa9b99404442"; - sha256 = "1idvjvvx5kwmi8kj2ps95bcvlsgij1xgin4jfw3rmcqd930wqq6q"; + url = "https://github.com/purescript-contrib/purescript-rationals.git"; + rev = "b480bc41dbfc926977ebdf4e2a4b9fed253c91a1"; + sha256 = "06fczcfc937iwpj4r8qhprgw35ryn0hfqgjxmn2rcljx37q70xka"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1279,11 +1255,11 @@ let "record" = pkgs.stdenv.mkDerivation { name = "record"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-record.git"; - rev = "091495d61fcaa9d8d8232e7b800f403a3165a38f"; - sha256 = "0yidfvwiajiv8xflfsi2p8dqnp0qmmcz9jry58jyn9ga82z2pqn6"; + rev = "c89cd1ada6b636692571fc374196b1c39c4c9f70"; + sha256 = "1g7s2h1as5cz824wpm0jhjprrh66shha5i4gq37q73yw0s5p2ahm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1291,11 +1267,11 @@ let "refs" = pkgs.stdenv.mkDerivation { name = "refs"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-refs.git"; - rev = "f66d3cdf6a6bf4510e5181b3fac215054d8f1e2e"; - sha256 = "1jhc2v784jy8bvkqy4zsh2z7pnqrhwa8n5kx98xhxx73n1bf38sg"; + rev = "f8e6216da4cb9309fde1f20cd6f69ac3a3b7f9e8"; + sha256 = "09bvfxhjfwfwv55py45s71maazwrr68k0rk4v8ynfqv91h34319h"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1303,11 +1279,11 @@ let "safe-coerce" = pkgs.stdenv.mkDerivation { name = "safe-coerce"; - version = "v1.0.0"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-safe-coerce.git"; - rev = "e719defd227d932da067a1f0d62a60b3d3ff3637"; - sha256 = "0m942lc23317izspz1sxw957mwl9yb9bgk8dh23f7b3a8w9hh8ff"; + rev = "7fa799ae80a38b8d948efcb52608e58e198b3da7"; + sha256 = "00m4l733gpl0153cbl6n5kly7jr8ids399apza2rbczif40brp9g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1327,11 +1303,11 @@ let "sequences" = pkgs.stdenv.mkDerivation { name = "sequences"; - version = "v3.0.2"; + version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; src = pkgs.fetchgit { - url = "https://github.com/hdgarrood/purescript-sequences"; - rev = "1f1d828ef30070569c812d0af23eb7253bb1e990"; - sha256 = "0mc0jjs1119c2nyd08yhdmliq3s47lhrdknhziga3lnbzja889k4"; + url = "https://github.com/garganscript/purescript-sequences"; + rev = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; + sha256 = "0dimbcmj7f4mbxq3yq591spizib60iir9igjzb6lbydir7kc6934"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1339,11 +1315,11 @@ let "spec" = pkgs.stdenv.mkDerivation { name = "spec"; - version = "v5.0.1"; + version = "v7.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-spec/purescript-spec.git"; - rev = "2cfa11573dbb695c117efce0a8f76a3daba12e87"; - sha256 = "0hpca1sa738029ww74zpw31br5x339q35kzb10iqd55lp6611k80"; + rev = "1ae536c4d9848d26087fe5e0606409740aa421b7"; + sha256 = "1vyk0fn39qfwx4i7vanazr5v0q0w0sxsxzmlliwlpcb9kvd1b2b3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1351,11 +1327,11 @@ let "spec-quickcheck" = pkgs.stdenv.mkDerivation { name = "spec-quickcheck"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-spec/purescript-spec-quickcheck.git"; - rev = "c2991f475b8fa11de8b68bcb5895b36be04d1e82"; - sha256 = "01xcbfyqzax9c5najbfy12q0nvfklfm37llj2vkmi3wgkskg4prz"; + rev = "c83de337db1f74ff75e0d7c574a2f7407bc5f2b2"; + sha256 = "1y9rzb8kbahhchplswdxrjqm4qjkv1bnv9mzg8v62m1ipk3kdndj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1363,11 +1339,11 @@ let "st" = pkgs.stdenv.mkDerivation { name = "st"; - version = "v5.0.1"; + version = "v6.2.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-st.git"; - rev = "994eb5e650f3caedac385dcc61694f691df57983"; - sha256 = "14hz254f1y0k3v83z719np0ddrgbca0hdsd9dvv244i07vlvm2zj"; + rev = "fc2fe2972bb12e6a2bd3b295baf01577240c23ac"; + sha256 = "17syc11gxhi1law4lskrr4swr62n4r7irj5imdyjjp8z0p5c6p8z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1375,11 +1351,11 @@ let "strings" = pkgs.stdenv.mkDerivation { name = "strings"; - version = "v5.0.0"; + version = "v6.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-strings.git"; - rev = "157e372a23e4becd594d7e7bff6f372a6f63dd82"; - sha256 = "0hyaa4d8gyyvac2nxnwqkn2rvi5vax4bi4yv10mpk7rgb8rv7mb8"; + rev = "3d3e2f7197d4f7aacb15e854ee9a645489555fff"; + sha256 = "1dx6l4j4yw6w6nxa687gf04q4caa99ccl4cp4q22nda6ghsz7yjl"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1387,11 +1363,11 @@ let "stringutils" = pkgs.stdenv.mkDerivation { name = "stringutils"; - version = "v0.0.11"; + version = "v0.0.12"; src = pkgs.fetchgit { url = "https://github.com/menelaos/purescript-stringutils.git"; - rev = "e149d04cd5bcc25222c1807f2e1edafb36b5f70e"; - sha256 = "1hbr936bvnm5iil4cfr9qhkbzd1i00yrxf5jd0rnny29df5wsq1w"; + rev = "51d92cacd8c8102fc4e6137b4f709a2b11ca5186"; + sha256 = "0wdmishvnlfw8r6b3ivzr8d7300cxg1m77qd74ip4c0gd4zqvhs4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1399,23 +1375,11 @@ let "tailrec" = pkgs.stdenv.mkDerivation { name = "tailrec"; - version = "v5.0.1"; + version = "v6.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-tailrec.git"; - rev = "5fbf0ac05dc6ab1a228b2897630195eb7483b962"; - sha256 = "1jjl2q2hyhjcdxpamzr1cdlxhmq2bl170x5p3jajb9zgwkqx0x22"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "test-unit" = pkgs.stdenv.mkDerivation { - name = "test-unit"; - version = "v16.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/bodil/purescript-test-unit.git"; - rev = "56d06897b621df5d2f619433d19ababb5bb8ebd1"; - sha256 = "0qz903phxkgrn7qdz1xi49bydkf5cbxssyb4xk029zi4lshb35mw"; + rev = "5661a10afbd4849bd2e45139ea567beb40b20f9f"; + sha256 = "0snhrvkpd429r0d0bzs0mxwwz3am9bpa1m9f5a9hpmyjjkl7gddw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1423,11 +1387,11 @@ let "these" = pkgs.stdenv.mkDerivation { name = "these"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-these.git"; - rev = "38dcf86a9bd772091e1153f2f1c13223703599b7"; - sha256 = "0d6yg3lwgralh1kcm5cd4myyz66k9qzld61hc5dg3z92d96zbvlr"; + rev = "ad4de7d2bb9ce684a9dff5def6489630736985b8"; + sha256 = "1i73qz7pk11mbiymhfg21i3nq92hqjmqzj4gjp1n6l2zkm0lmql3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1435,11 +1399,11 @@ let "transformers" = pkgs.stdenv.mkDerivation { name = "transformers"; - version = "v5.2.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-transformers.git"; - rev = "1e5d4193b38c613c97ea1ebdb721c6b94cd8c50a"; - sha256 = "0lggimnq016v98ib6h68gnciraambxrfqm2s033wm34srcy8xs06"; + rev = "be72ab52357d9a665cbf93d73ba1c07c4b0957ee"; + sha256 = "0ijrdsppl8vx0rlbwc9p0vjbmvwlcy4ia7xymvk6y34zbxzjlzm6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1447,11 +1411,11 @@ let "tuples" = pkgs.stdenv.mkDerivation { name = "tuples"; - version = "v6.0.1"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-tuples.git"; - rev = "d4fe8ffe9e8c512111ee0bc18a6ba0fd056a6773"; - sha256 = "0s2ar2gih4r34km8r8dqngh21s8899yb93mb7mips08ndy3ajq3a"; + rev = "4f52da2729b448c8564369378f1232d8d2dc1d8b"; + sha256 = "1m1ng0xxicb73945jymcl1hn2y2hmynlnmhb2k0kkn1jrjwgcc3d"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1459,11 +1423,11 @@ let "type-equality" = pkgs.stdenv.mkDerivation { name = "type-equality"; - version = "v4.0.0"; + version = "v4.0.1"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-type-equality.git"; - rev = "f7644468f22ed267a15d398173d234fa6f45e2e0"; - sha256 = "126pg4zg3bsrn8dzvv75xp586nznxyswzgjlr7cag3ij3j1z0kl0"; + rev = "0525b7d39e0fbd81b4209518139fb8ab02695774"; + sha256 = "1ass38jdycsjisdimdc4drg2w8vkkwp6lkvz3kvy7q0h98vdmlbr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1483,11 +1447,11 @@ let "typelevel-prelude" = pkgs.stdenv.mkDerivation { name = "typelevel-prelude"; - version = "v6.0.0"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-typelevel-prelude.git"; - rev = "83ddcdb23d06c8d5ea6196596a70438f42cd4afd"; - sha256 = "1vwf3yhn8mir5y41wvlyszkgd5fxvrcyfd0l8cn20c8vfq36yzgk"; + rev = "dca2fe3c8cfd5527d4fe70c4bedfda30148405bf"; + sha256 = "0x86mrg33kpnrnsfp4p3c92j5lpyqzy87bxdynwf7smk3inqr2jc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1495,23 +1459,11 @@ let "uint" = pkgs.stdenv.mkDerivation { name = "uint"; - version = "v6.0.3"; + version = "v7.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-uint.git"; - rev = "17fda2aff989ad7fa9f29171bf4c1196ca9ed504"; - sha256 = "1lwbkwc3yj0d5qmw7gni924wj47npgy1aqbc0ika4phc4q0shw8d"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - - "undefined" = pkgs.stdenv.mkDerivation { - name = "undefined"; - version = "v1.0.2"; - src = pkgs.fetchgit { - url = "https://github.com/bklaric/purescript-undefined.git"; - rev = "4012dc06b58feae301140bc081135d0f24c432b0"; - sha256 = "0kj504j3r9wr7m3yhm53bcfdzai0c2g99d2pdxlfinxk4pmixyrd"; + rev = "9e4f76ffd5192472f75583844172fe8ab3c0cb9f"; + sha256 = "173bhrd006q53s7agwyasxhfbr89x9jpz5b47vm2fr74l3jcw3lq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1519,11 +1471,11 @@ let "unfoldable" = pkgs.stdenv.mkDerivation { name = "unfoldable"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-unfoldable.git"; - rev = "bbcc2b062b9b7d3d61f123cfb32cc8c7fb811aa6"; - sha256 = "1v3bz04wj6hj7s6mcf49hajylg6w58n78q54sqi2ra2zq8h99kpw"; + rev = "493dfe04ed590e20d8f69079df2f58486882748d"; + sha256 = "15z2k639ph8wdkrc2y838m5am1z7szw2vqymmv021skzisyn7zwf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1531,11 +1483,11 @@ let "unicode" = pkgs.stdenv.mkDerivation { name = "unicode"; - version = "v5.0.1"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-contrib/purescript-unicode.git"; - rev = "2b66dcdb2ea533c7bc864574e860012c57ace2aa"; - sha256 = "0xh9wwyrl9nsw3h3wzalc1gaph39drj0i6k648cf9bnbb96nxa4z"; + rev = "6454d59d9e1fd1bc5a72e80e985d8282022a567a"; + sha256 = "0w2gsmqcy7pj5vd22qzpig20bdgzmbagyqxrg9mm1njjfsmcm8cv"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1543,11 +1495,11 @@ let "unordered-collections" = pkgs.stdenv.mkDerivation { name = "unordered-collections"; - version = "v2.1.4"; + version = "v3.0.1"; src = pkgs.fetchgit { url = "https://github.com/fehrenbach/purescript-unordered-collections.git"; - rev = "1be289188cef093520098e318ec910cf3ea5b40d"; - sha256 = "0vgfpdymxvgqf3sh8ji2w2b01w3s294v5mh04046s21qaywdi1jh"; + rev = "0192d2c9d0759895b7492cc00651631eb9abc5b5"; + sha256 = "0b60isac4wzakd3hh57wkdm9b5kawbis8v8ymli6b4m13673pvxw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1555,11 +1507,11 @@ let "unsafe-coerce" = pkgs.stdenv.mkDerivation { name = "unsafe-coerce"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript/purescript-unsafe-coerce.git"; - rev = "ee24f0d3b94bf925d9c50fcc2b449579580178c0"; - sha256 = "0l2agnm1k910v4yp1hz19wrsrywsr5scb397762y7pigm3frzs8r"; + rev = "ab956f82e66e633f647fb3098e8ddd3ec58d689f"; + sha256 = "0r6d3dx8jalfzvrvkagz9v05yxwkkhgbzlpswg4w1cyl03zjcla4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1567,11 +1519,11 @@ let "untagged-union" = pkgs.stdenv.mkDerivation { name = "untagged-union"; - version = "v0.3.0"; + version = "v1.0.0"; src = pkgs.fetchgit { - url = "https://github.com/jvliwanag/purescript-untagged-union.git"; - rev = "364e172e759ebe722bd7ec12a599d532b527c0ef"; - sha256 = "06013431acz8xry9dish8p2qyj18bi505fgfikpjiblxgjazl9zx"; + url = "https://github.com/rowtype-yoga/purescript-untagged-union.git"; + rev = "ed8262a966e15e751322c327e2759a9b9c0ef3f3"; + sha256 = "163blv01abd3dhcpqz499851lhwnmb4dlfbzkr3cs53d30w3yldx"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1579,11 +1531,11 @@ let "variant" = pkgs.stdenv.mkDerivation { name = "variant"; - version = "v7.0.3"; + version = "v8.0.0"; src = pkgs.fetchgit { url = "https://github.com/natefaubion/purescript-variant.git"; - rev = "3f12411ede5edd342d25340c1babce9ae81d6793"; - sha256 = "1q2pky3gf177ihy2zjzqvp1cj18ycaki9vm4ghw18p7hf256lqmc"; + rev = "8b2bd73a4202257d80a955c4dd36f6055f149823"; + sha256 = "18nyxnaqqg1zzydwd2hh9hbzr31j509g5yb1lnd0m60bma4l9h5g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1591,11 +1543,11 @@ let "web-dom" = pkgs.stdenv.mkDerivation { name = "web-dom"; - version = "v5.0.0"; + version = "v6.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-dom.git"; - rev = "03dfc2f512e124615ab183ade357e3d54007c79d"; - sha256 = "06g9cp9fkzyfwbz5cs0wxjxgdydm9hy7756p2w4vx94myki20hgx"; + rev = "568a1ee158b29e6e739e7a9aaed3e35ca4c4305a"; + sha256 = "0angs86ld0h3ld889ag55lh62101dfn3fknyqrfv0imgn40vwm44"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1603,11 +1555,11 @@ let "web-events" = pkgs.stdenv.mkDerivation { name = "web-events"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-events.git"; - rev = "c8a50893f04f54e2a59be7f885d25caef3589c57"; - sha256 = "1dxwrl2r39vazb3g1ka4dkpy6idyi17aq4hf9vvdsmcwf2jjwbn9"; + rev = "2124356117be7b764a2f3948032255ac4dab7051"; + sha256 = "0l47gsgj71x0gjbhjqwsar2y44ljhq3xa0nkgr1qvqxmcm00llqf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1615,11 +1567,11 @@ let "web-file" = pkgs.stdenv.mkDerivation { name = "web-file"; - version = "v3.0.0"; + version = "v4.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-file.git"; - rev = "3e42263b4392d82c0e379b7a481bbee9b38b1308"; - sha256 = "11x1inhr5pvs2iyg818cywwdskb33q777592sd3b4g4jyczcb1li"; + rev = "023786ae62bbb8bf58156dd7f02011fa38221ef1"; + sha256 = "1wjf1m5y2qsba83is297icv9zyl7jilxdga0192mm1rp0j16jjln"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1627,11 +1579,11 @@ let "web-html" = pkgs.stdenv.mkDerivation { name = "web-html"; - version = "v3.2.0"; + version = "v4.1.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-html.git"; - rev = "3a249b966ee72c19874b4a2ec6db4059087500e4"; - sha256 = "1ds26vwyba0chhpa09m938brw9q8pxjk6z1n3d4nc30hvdkrjnbh"; + rev = "40e9a0c5c927e4d9f7ba7c1204e4792f4d24cc27"; + sha256 = "0ifvk7swjn58nbk19pi4f19r247d67zhl5xgvcwb56vlmrk2pk83"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1639,11 +1591,11 @@ let "web-storage" = pkgs.stdenv.mkDerivation { name = "web-storage"; - version = "v4.0.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-storage.git"; - rev = "22fa56bac204c708e521e746ad4ca2b5810f62c5"; - sha256 = "1viy027k9qyr7mckqkvizwbwkfskc6frppsa1v9a0hq6gc08mpjx"; + rev = "6b74461e136755db70c271dc898d51776363d7e2"; + sha256 = "0q1grh8cp6h1szsqg3xmwlzrc1bbz8yzlwxlcl1iym5mjiyzgkcs"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1651,11 +1603,11 @@ let "web-xhr" = pkgs.stdenv.mkDerivation { name = "web-xhr"; - version = "v4.1.0"; + version = "v5.0.0"; src = pkgs.fetchgit { url = "https://github.com/purescript-web/purescript-web-xhr.git"; - rev = "997b87caa6dcdf66b6db22f29f522d722559956b"; - sha256 = "0hzmqga8l24l20kyd98bcpd8bmz7by14vl311m9yfdg5mjkjg42g"; + rev = "476122fe3ad19031aeb69186209b480e2fc9ef25"; + sha256 = "1swpprc000gfqid6r05pxs8wvlc5xjry5s2kk8lk3ah2dgv297sf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 38fe179f5..d56a902bc 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -15,7 +15,6 @@ You can edit this file as you like. , "posix-types" , "prelude" , "spec" - , "uint" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "exe/**/*.purs", "test/**/*.purs" ] From 5a80b60131647e5520c6091b0a90e0a96e52ee9b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 7 Jul 2023 13:54:23 +0200 Subject: [PATCH 265/478] build: update dependencies --- packages.dhall | 10 +++++----- spago-packages.nix | 12 ++++++------ templates/ctl-scaffold/packages.dhall | 10 +++++----- templates/ctl-scaffold/spago-packages.nix | 12 ++++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages.dhall b/packages.dhall index e937395da..d1a236ec9 100644 --- a/packages.dhall +++ b/packages.dhall @@ -145,8 +145,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/errfrom/purescript-aeson.git" - , version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b" + , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" + , version = "97d6d06e29c466542c0d3c7893a24325d07913db" } , bignumber = { dependencies = @@ -256,7 +256,7 @@ let additions = , "node-buffer" , "node-fs-aff" ] - , repo = "https://github.com/errfrom/purescript-toppokki" + , repo = "https://github.com/mlabs-haskell/purescript-toppokki" , version = "b043e9342463df76972d05981ac4ec25316834bf" } , noble-secp256k1 = @@ -270,8 +270,8 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/errfrom/purescript-noble-secp256k1.git" - , version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623" + "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" + , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" } } diff --git a/spago-packages.nix b/spago-packages.nix index 71f297fae..f1f6fc68c 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,10 +7,10 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + version = "97d6d06e29c466542c0d3c7893a24325d07913db"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-aeson.git"; - rev = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + url = "https://github.com/mlabs-haskell/purescript-aeson.git"; + rev = "97d6d06e29c466542c0d3c7893a24325d07913db"; sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; }; phases = "installPhase"; @@ -799,10 +799,10 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-noble-secp256k1.git"; - rev = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; + rev = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; }; phases = "installPhase"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 4d54f6f7d..6628cfb53 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -145,8 +145,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/errfrom/purescript-aeson.git" - , version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b" + , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" + , version = "97d6d06e29c466542c0d3c7893a24325d07913db" } , sequences = { dependencies = @@ -241,7 +241,7 @@ let additions = , "node-buffer" , "node-fs-aff" ] - , repo = "https://github.com/errfrom/purescript-toppokki" + , repo = "https://github.com/mlabs-haskell/purescript-toppokki" , version = "b043e9342463df76972d05981ac4ec25316834bf" } , bignumber = @@ -365,8 +365,8 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/errfrom/purescript-noble-secp256k1.git" - , version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623" + "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" + , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index ac96e1e3e..388e04863 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,10 +7,10 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + version = "97d6d06e29c466542c0d3c7893a24325d07913db"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-aeson.git"; - rev = "f092a1fc9b0ecc2445accf5bf0aad10e6eade89b"; + url = "https://github.com/mlabs-haskell/purescript-aeson.git"; + rev = "97d6d06e29c466542c0d3c7893a24325d07913db"; sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; }; phases = "installPhase"; @@ -811,10 +811,10 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-noble-secp256k1.git"; - rev = "9fc5db67e2b6e8b027c415e4dd1625c3f1d8b623"; + url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; + rev = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; }; phases = "installPhase"; From e5c6014c749f7e4c23b24f715c445a3402bfe46c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 7 Jul 2023 14:05:48 +0200 Subject: [PATCH 266/478] build: drop `sequences` dependency --- packages.dhall | 28 ++--------------------- spago-packages.nix | 20 ++++------------ templates/ctl-scaffold/packages.dhall | 28 ++--------------------- templates/ctl-scaffold/spago-packages.nix | 20 ++++------------ 4 files changed, 12 insertions(+), 84 deletions(-) diff --git a/packages.dhall b/packages.dhall index d1a236ec9..f1adb8dcc 100644 --- a/packages.dhall +++ b/packages.dhall @@ -136,7 +136,6 @@ let additions = , "prelude" , "quickcheck" , "record" - , "sequences" , "spec" , "strings" , "tuples" @@ -145,8 +144,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "97d6d06e29c466542c0d3c7893a24325d07913db" + , repo = "https://github.com/errfrom/purescript-aeson.git" + , version = "f614a840036aabb059017d03cf365f4199b9547b" } , bignumber = { dependencies = @@ -163,29 +162,6 @@ let additions = , repo = "https://github.com/errfrom/purescript-bignumber" , version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a" } - , sequences = - { dependencies = - [ "arrays" - , "assert" - , "console" - , "effect" - , "lazy" - , "maybe" - , "newtype" - , "nonempty" - , "partial" - , "prelude" - , "profunctor" - , "psci-support" - , "quickcheck" - , "quickcheck-laws" - , "tuples" - , "unfoldable" - , "unsafe-coerce" - ] - , repo = "https://github.com/garganscript/purescript-sequences" - , version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c" - } , properties = { dependencies = [ "prelude", "console" ] , repo = "https://github.com/Risto-Stevcev/purescript-properties.git" diff --git a/spago-packages.nix b/spago-packages.nix index f1f6fc68c..aab9a94b9 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "97d6d06e29c466542c0d3c7893a24325d07913db"; + version = "f614a840036aabb059017d03cf365f4199b9547b"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "97d6d06e29c466542c0d3c7893a24325d07913db"; - sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; + url = "https://github.com/errfrom/purescript-aeson.git"; + rev = "f614a840036aabb059017d03cf365f4199b9547b"; + sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1289,18 +1289,6 @@ let installPhase = "ln -s $src $out"; }; - "sequences" = pkgs.stdenv.mkDerivation { - name = "sequences"; - version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; - src = pkgs.fetchgit { - url = "https://github.com/garganscript/purescript-sequences"; - rev = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; - sha256 = "0dimbcmj7f4mbxq3yq591spizib60iir9igjzb6lbydir7kc6934"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "spec" = pkgs.stdenv.mkDerivation { name = "spec"; version = "v7.2.0"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 6628cfb53..7f72d473d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -136,7 +136,6 @@ let additions = , "prelude" , "quickcheck" , "record" - , "sequences" , "spec" , "strings" , "tuples" @@ -145,31 +144,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "97d6d06e29c466542c0d3c7893a24325d07913db" - } - , sequences = - { dependencies = - [ "arrays" - , "assert" - , "console" - , "effect" - , "lazy" - , "maybe" - , "newtype" - , "nonempty" - , "partial" - , "prelude" - , "profunctor" - , "psci-support" - , "quickcheck" - , "quickcheck-laws" - , "tuples" - , "unfoldable" - , "unsafe-coerce" - ] - , repo = "https://github.com/garganscript/purescript-sequences" - , version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c" + , repo = "https://github.com/errfrom/purescript-aeson.git" + , version = "f614a840036aabb059017d03cf365f4199b9547b" } , properties = { dependencies = [ "prelude", "console" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 388e04863..a357a3964 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "97d6d06e29c466542c0d3c7893a24325d07913db"; + version = "f614a840036aabb059017d03cf365f4199b9547b"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "97d6d06e29c466542c0d3c7893a24325d07913db"; - sha256 = "057cndwgcl8y8qh2afw3210hqcizr1ccsx1zkygn3bs2gpyx7h3q"; + url = "https://github.com/errfrom/purescript-aeson.git"; + rev = "f614a840036aabb059017d03cf365f4199b9547b"; + sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1301,18 +1301,6 @@ let installPhase = "ln -s $src $out"; }; - "sequences" = pkgs.stdenv.mkDerivation { - name = "sequences"; - version = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; - src = pkgs.fetchgit { - url = "https://github.com/garganscript/purescript-sequences"; - rev = "cae456c1a7463785ad33981a93e7a9cb5fc7872c"; - sha256 = "0dimbcmj7f4mbxq3yq591spizib60iir9igjzb6lbydir7kc6934"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "spec" = pkgs.stdenv.mkDerivation { name = "spec"; version = "v7.2.0"; From 218b70c708efe3fa6b1a0272ffb0c3e4849866ed Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 11 Jul 2023 14:36:04 +0200 Subject: [PATCH 267/478] build: fix bundling using `webpack` --- .gitignore | 3 + Makefile | 27 +- dist/esbuild/index.html | 4 +- dist/esbuild/wrapper.js | 6 - dist/webpack/.gitkeep | 0 esbuild/bundle.js | 0 esbuild/config.js | 2 +- esbuild/serve.js | 0 examples/index.html | 4 +- package-lock.json | 2411 ++++++++++++++++++--------------------- package.json | 16 +- webpack.config.cjs | 110 ++ webpack.config.js | 107 -- 13 files changed, 1265 insertions(+), 1425 deletions(-) delete mode 100644 dist/esbuild/wrapper.js create mode 100644 dist/webpack/.gitkeep mode change 100644 => 100755 esbuild/bundle.js mode change 100755 => 100644 esbuild/config.js mode change 100644 => 100755 esbuild/serve.js create mode 100644 webpack.config.cjs delete mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index 3b2eadffe..50485c009 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,9 @@ result-* /dist/esbuild/* !/dist/esbuild/index.html !/dist/esbuild/wrapper.js +!/dist/webpack/ +/dist/webpack/* +!/dist/webpack/.gitkeep output.js .DS_Store .idea/ diff --git a/Makefile b/Makefile index 765c30131..e7c7db1d6 100644 --- a/Makefile +++ b/Makefile @@ -1,32 +1,35 @@ SHELL := bash .ONESHELL: -.PHONY: run-dev run-build check-format format query-testnet-tip clean check-explicit-exports +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') js-sources := $(shell fd --no-ignore-parent -ejs) ps-entrypoint := Ctl.Examples.ByUrl # points to one of the example PureScript modules in examples/ -ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') -run-dev: - @${ps-bundle} --minify && BROWSER_RUNTIME=1 webpack-dev-server --progress - -run-build: - @${ps-bundle} && BROWSER_RUNTIME=1 webpack --mode=production - esbuild-bundle: - @spago build && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} + @spago build \ + && cp -rf fixtures dist/esbuild \ + && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} esbuild-serve: @spago build \ - && cd dist/esbuild \ - && ln -sfn ../../fixtures fixtures \ - && cd ../.. \ + && cp -rf fixtures dist/esbuild \ && BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} +webpack-bundle: + @spago build \ + && rm -rf dist/webpack/* \ + && cp -rf fixtures/* dist/webpack \ + && BROWSER_RUNTIME=1 webpack --mode=production --env entry=./output/${ps-entrypoint}/index.js + +webpack-serve: + @spago build \ + && BROWSER_RUNTIME=1 webpack-dev-server --progress --env entry=./output/${ps-entrypoint}/index.js + .ONESHELL: check-explicit-exports: @if grep -rn '(\.\.)' ${ps-sources}; then diff --git a/dist/esbuild/index.html b/dist/esbuild/index.html index 7c9b27620..e3c16ed39 100644 --- a/dist/esbuild/index.html +++ b/dist/esbuild/index.html @@ -5,7 +5,9 @@ - + Examples source code is located in examples/ directory.
diff --git a/dist/esbuild/wrapper.js b/dist/esbuild/wrapper.js deleted file mode 100644 index 9f0811035..000000000 --- a/dist/esbuild/wrapper.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -import * as m from "./index.js"; - -m.main(); -console.log("app starting"); diff --git a/dist/webpack/.gitkeep b/dist/webpack/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/esbuild/bundle.js b/esbuild/bundle.js old mode 100644 new mode 100755 diff --git a/esbuild/config.js b/esbuild/config.js old mode 100755 new mode 100644 index 8c3d46424..0b32adc2a --- a/esbuild/config.js +++ b/esbuild/config.js @@ -24,5 +24,5 @@ export const buildOptions = { platform: "browser", format: "esm", treeShaking: true, - logLevel: "warning", + logLevel: "error", }; diff --git a/esbuild/serve.js b/esbuild/serve.js old mode 100644 new mode 100755 diff --git a/examples/index.html b/examples/index.html index 0cee19da7..3247c9a06 100644 --- a/examples/index.html +++ b/examples/index.html @@ -5,7 +5,9 @@ - + Examples source code is located in examples/ directory.
diff --git a/package-lock.json b/package-lock.json index df17096ec..409a9a846 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", - "node-polyfill-webpack-plugin": "1.1.4", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -38,10 +37,11 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.0", - "webpack": "5.67.0", - "webpack-cli": "4.10", - "webpack-dev-server": "4.7.4" + "html-webpack-plugin": "5.5.3", + "node-polyfill-webpack-plugin": "2.0.1", + "webpack": "5.88.1", + "webpack-cli": "5.1.4", + "webpack-dev-server": "4.15.1" } }, "node_modules/@discoveryjs/json-ext": { @@ -426,9 +426,10 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -439,9 +440,10 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -450,31 +452,35 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@jspm/core": { @@ -483,6 +489,12 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -518,41 +530,6 @@ } ] }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@textlint/ast-node-types": { "version": "12.2.2", "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", @@ -641,6 +618,7 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -650,15 +628,17 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.13", @@ -701,7 +681,8 @@ "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/mdast": { "version": "3.0.10", @@ -721,7 +702,8 @@ "node_modules/@types/node": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "devOptional": true }, "node_modules/@types/qs": { "version": "6.9.7", @@ -776,9 +758,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "dependencies": { "@types/node": "*" @@ -794,165 +776,188 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -963,12 +968,26 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } }, "node_modules/accepts": { "version": "1.3.8", @@ -984,9 +1003,10 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -995,9 +1015,10 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, "peerDependencies": { "acorn": "^8" } @@ -1034,23 +1055,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1105,6 +1114,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -1168,19 +1178,11 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -1191,12 +1193,14 @@ "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/assert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dev": true, "dependencies": { "es6-object-assign": "^1.1.0", "is-nan": "^1.2.1", @@ -1204,19 +1208,11 @@ "util": "^0.12.0" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -1338,7 +1334,8 @@ "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "node_modules/body-parser": { "version": "1.20.0", @@ -1373,18 +1370,16 @@ "node": ">= 0.8" } }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { @@ -1417,12 +1412,14 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -1436,6 +1433,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -1446,6 +1444,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -1457,6 +1456,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -1466,6 +1466,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -1482,6 +1483,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, "dependencies": { "pako": "~1.0.5" } @@ -1490,6 +1492,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1517,6 +1520,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "funding": [ { "type": "github", @@ -1547,18 +1551,14 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "node_modules/bufferutil": { "version": "4.0.5", @@ -1575,7 +1575,8 @@ "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true }, "node_modules/bytes": { "version": "3.0.0", @@ -1590,6 +1591,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -1612,6 +1614,7 @@ "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1699,6 +1702,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, "engines": { "node": ">=6.0" } @@ -1707,6 +1711,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -1724,15 +1729,6 @@ "node": ">= 10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1804,9 +1800,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { "node": ">=0.8" @@ -1815,12 +1811,14 @@ "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -1868,6 +1866,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -1876,12 +1875,14 @@ "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -1894,6 +1895,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -1929,6 +1931,7 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -1983,23 +1986,6 @@ "ms": "2.0.0" } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -2025,6 +2011,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -2036,28 +2023,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2071,6 +2036,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -2101,6 +2067,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -2110,19 +2077,8 @@ "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/dns-equal": { "version": "1.0.0", @@ -2131,22 +2087,15 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctoc": { @@ -2224,6 +2173,7 @@ "version": "4.22.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true, "engines": { "node": ">=10" }, @@ -2291,12 +2241,14 @@ "node_modules/electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "dev": true }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -2310,7 +2262,8 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/emoji-regex": { "version": "10.1.0", @@ -2336,9 +2289,10 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -2357,9 +2311,9 @@ } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -2372,6 +2326,7 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -2405,14 +2360,16 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2428,7 +2385,8 @@ "node_modules/es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "dev": true }, "node_modules/esbuild": { "version": "0.18.11", @@ -2497,6 +2455,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -2523,6 +2482,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2535,6 +2495,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -2546,6 +2507,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -2554,6 +2516,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "engines": { "node": ">=4.0" } @@ -2567,6 +2530,15 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -2577,6 +2549,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "engines": { "node": ">=0.8.x" } @@ -2585,6 +2558,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -2724,28 +2698,14 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.14", @@ -2756,15 +2716,6 @@ "node": ">= 4.9.1" } }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -2814,6 +2765,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "dev": true, "engines": { "node": ">=8" } @@ -2872,6 +2824,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -2936,12 +2889,14 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/function.prototype.name": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2959,6 +2914,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2967,6 +2923,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2992,6 +2949,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -3037,32 +2995,14 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", @@ -3074,6 +3014,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -3085,6 +3026,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3093,6 +3035,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3101,6 +3044,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -3112,6 +3056,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3123,6 +3068,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -3137,6 +3083,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -3150,6 +3097,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -3168,6 +3116,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -3244,9 +3193,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -3354,7 +3303,8 @@ "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true }, "node_modules/https-proxy-agent": { "version": "5.0.1", @@ -3429,15 +3379,6 @@ } ] }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -3467,15 +3408,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3494,6 +3426,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -3504,20 +3437,14 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, "node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -3555,6 +3482,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3570,6 +3498,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -3593,6 +3522,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3631,6 +3561,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3639,9 +3570,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -3654,6 +3585,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3702,6 +3634,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3738,6 +3671,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -3753,6 +3687,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3773,6 +3708,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3783,24 +3719,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -3829,6 +3747,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3844,6 +3763,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -3867,6 +3787,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3881,6 +3802,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -3895,6 +3817,7 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -3913,6 +3836,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -3957,6 +3881,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -3966,15 +3891,17 @@ "node": ">= 10.13.0" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/jssha": { "version": "3.2.0", @@ -3993,10 +3920,21 @@ "node": ">=0.10.0" } }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, "engines": { "node": ">=6.11.5" } @@ -4054,6 +3992,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -4249,16 +4188,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/methods": { "version": "1.1.2", @@ -4435,6 +4366,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -4446,7 +4378,8 @@ "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/mime": { "version": "1.6.0", @@ -4464,6 +4397,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -4472,6 +4406,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -4491,12 +4426,14 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, "node_modules/minimatch": { "version": "3.1.2", @@ -4515,18 +4452,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -4539,24 +4464,18 @@ "dev": true }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -4569,7 +4488,8 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/no-case": { "version": "3.0.4", @@ -4639,9 +4559,10 @@ } }, "node_modules/node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "dev": true, "dependencies": { "assert": "^2.0.0", "browserify-zlib": "^0.2.0", @@ -4649,7 +4570,7 @@ "console-browserify": "^1.2.0", "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", + "domain-browser": "^4.22.0", "events": "^3.3.0", "filter-obj": "^2.0.2", "https-browserify": "^1.0.0", @@ -4658,27 +4579,45 @@ "process": "^0.11.10", "punycode": "^2.1.1", "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", + "readable-stream": "^4.0.0", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "string_decoder": "^1.3.0", "timers-browserify": "^2.0.12", "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", "url": "^0.11.0", "util": "^0.12.4", "vm-browserify": "^1.1.2" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependencies": { "webpack": ">=5" } }, + "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -4717,6 +4656,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4725,6 +4665,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -4740,6 +4681,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -4748,6 +4690,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -4831,7 +4774,8 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true }, "node_modules/p-limit": { "version": "2.3.0", @@ -4858,21 +4802,6 @@ "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", @@ -4897,7 +4826,8 @@ "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "node_modules/param-case": { "version": "3.0.4", @@ -4913,6 +4843,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -4961,7 +4892,8 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -5000,19 +4932,11 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -5032,7 +4956,8 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -5057,35 +4982,6 @@ "node": ">=8" } }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -5100,6 +4996,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, "engines": { "node": ">= 0.6.0" } @@ -5149,6 +5046,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -5161,7 +5059,8 @@ "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/pump": { "version": "3.0.0", @@ -5176,6 +5075,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } @@ -5263,6 +5163,7 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -5271,34 +5172,16 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, "engines": { "node": ">=0.4.x" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -5307,6 +5190,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -5371,15 +5255,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/reconnecting-websocket": { @@ -5391,6 +5275,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -5505,12 +5390,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5551,16 +5436,6 @@ "node": ">= 4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -5579,34 +5454,12 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5629,12 +5482,14 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -5655,9 +5510,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -5697,9 +5552,10 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -5785,7 +5641,8 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -5797,6 +5654,7 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -5838,10 +5696,20 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -5857,15 +5725,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -5881,6 +5740,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5889,6 +5749,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5983,6 +5844,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -5992,6 +5854,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -6011,6 +5874,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6024,6 +5888,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6058,6 +5923,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6084,6 +5950,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -6115,12 +5982,13 @@ } }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6132,15 +6000,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -6167,7 +6036,8 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/through": { "version": "2.3.8", @@ -6184,6 +6054,7 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, "dependencies": { "setimmediate": "^1.0.4" }, @@ -6240,7 +6111,20 @@ "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/type-is": { "version": "1.6.18", @@ -6259,6 +6143,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -6389,6 +6274,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -6420,6 +6306,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -6428,6 +6315,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -6436,12 +6324,14 @@ "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true }, "node_modules/util": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -6522,12 +6412,14 @@ "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -6546,33 +6438,34 @@ } }, "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -6592,44 +6485,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -6639,12 +6530,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/webpack-dev-middleware": { @@ -6724,41 +6615,41 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", + "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.1.1", "serve-index": "^1.9.1", - "sockjs": "^0.3.21", + "sockjs": "^0.3.24", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -6766,10 +6657,17 @@ "engines": { "node": ">= 12.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } @@ -6803,18 +6701,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -6840,32 +6726,17 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -6893,6 +6764,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, "engines": { "node": ">=10.13.0" } @@ -6939,6 +6811,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -6954,6 +6827,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -7012,6 +6886,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { "node": ">=0.4" } @@ -7218,9 +7093,10 @@ "optional": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -7228,36 +7104,41 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@jspm/core": { @@ -7266,6 +7147,12 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, "@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -7289,32 +7176,6 @@ "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==" }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, "@textlint/ast-node-types": { "version": "12.2.2", "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", @@ -7397,6 +7258,7 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -7406,15 +7268,17 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true }, "@types/express": { "version": "4.17.13", @@ -7457,7 +7321,8 @@ "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "@types/mdast": { "version": "3.0.10", @@ -7477,7 +7342,8 @@ "@types/node": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "devOptional": true }, "@types/qs": { "version": "6.9.7", @@ -7532,9 +7398,9 @@ "dev": true }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "requires": { "@types/node": "*" @@ -7550,168 +7416,192 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } }, "accepts": { "version": "1.3.8", @@ -7724,14 +7614,16 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, "requires": {} }, "agent-base": { @@ -7757,20 +7649,11 @@ } } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7811,6 +7694,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "requires": {} }, "anchor-markdown-header": { @@ -7860,16 +7744,11 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -7880,7 +7759,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -7888,6 +7768,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dev": true, "requires": { "es6-object-assign": "^1.1.0", "is-nan": "^1.2.1", @@ -7895,19 +7776,11 @@ "util": "^0.12.0" } }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true }, "bail": { "version": "1.0.5", @@ -7984,7 +7857,8 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "body-parser": { "version": "1.20.0", @@ -8014,18 +7888,16 @@ } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "boolbase": { @@ -8055,12 +7927,14 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -8074,6 +7948,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -8084,6 +7959,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -8095,6 +7971,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -8104,6 +7981,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -8120,6 +7998,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, "requires": { "pako": "~1.0.5" } @@ -8128,6 +8007,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001358", "electron-to-chromium": "^1.4.164", @@ -8139,6 +8019,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -8152,18 +8033,14 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "bufferutil": { "version": "4.0.5", @@ -8176,7 +8053,8 @@ "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true }, "bytes": { "version": "3.0.0", @@ -8188,6 +8066,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -8206,7 +8085,8 @@ "caniuse-lite": { "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==" + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "dev": true }, "ccount": { "version": "1.1.0", @@ -8256,12 +8136,14 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8276,12 +8158,6 @@ "source-map": "~0.6.0" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -8343,20 +8219,22 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true }, "content-disposition": { "version": "0.5.4", @@ -8395,6 +8273,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -8403,7 +8282,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -8411,6 +8291,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8423,6 +8304,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -8455,6 +8337,7 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -8497,20 +8380,6 @@ "ms": "2.0.0" } }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -8530,27 +8399,12 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -8561,6 +8415,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -8587,6 +8442,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -8596,19 +8452,11 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -8616,22 +8464,12 @@ "dev": true }, "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "doctoc": { @@ -8691,7 +8529,8 @@ "domain-browser": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==" + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true }, "domelementtype": { "version": "2.3.0", @@ -8738,12 +8577,14 @@ "electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "dev": true }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -8757,7 +8598,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -8782,9 +8624,10 @@ } }, "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -8797,15 +8640,16 @@ "dev": true }, "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true }, "es-abstract": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -8833,14 +8677,16 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -8850,7 +8696,8 @@ "es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "dev": true }, "esbuild": { "version": "0.18.11", @@ -8901,7 +8748,8 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-html": { "version": "1.0.3", @@ -8919,6 +8767,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -8928,6 +8777,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -8935,14 +8785,16 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, "etag": { "version": "1.8.1", @@ -8950,6 +8802,12 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -8959,12 +8817,14 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -9077,25 +8937,14 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fastest-levenshtein": { "version": "1.0.14", @@ -9103,15 +8952,6 @@ "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", "dev": true }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, "fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -9150,7 +8990,8 @@ "filter-obj": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==" + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "dev": true }, "finalhandler": { "version": "1.2.0", @@ -9186,6 +9027,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -9234,12 +9076,14 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "function.prototype.name": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -9250,12 +9094,14 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -9272,6 +9118,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -9302,26 +9149,14 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "handle-thing": { "version": "2.0.1", @@ -9333,6 +9168,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -9340,17 +9176,20 @@ "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -9358,12 +9197,14 @@ "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -9372,6 +9213,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -9382,6 +9224,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -9397,6 +9240,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -9469,9 +9313,9 @@ } }, "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -9545,7 +9389,8 @@ "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true }, "https-proxy-agent": { "version": "5.0.1", @@ -9591,12 +9436,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -9613,12 +9452,6 @@ "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -9637,6 +9470,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -9644,15 +9478,9 @@ } }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "ipaddr.js": { @@ -9681,6 +9509,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9690,6 +9519,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -9707,6 +9537,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9721,12 +9552,13 @@ "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, "requires": { "has": "^1.0.3" @@ -9736,6 +9568,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -9762,6 +9595,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -9785,6 +9619,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -9793,7 +9628,8 @@ "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true }, "is-number": { "version": "7.0.0", @@ -9805,22 +9641,11 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -9840,6 +9665,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9849,6 +9675,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -9863,6 +9690,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -9871,6 +9699,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -9879,6 +9708,7 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -9891,6 +9721,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -9926,21 +9757,24 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "jssha": { "version": "3.2.0", @@ -9953,10 +9787,21 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true }, "locate-path": { "version": "5.0.0", @@ -10000,6 +9845,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -10145,12 +9991,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "methods": { @@ -10274,6 +10115,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -10282,7 +10124,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -10295,12 +10138,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -10314,12 +10159,14 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, "minimatch": { "version": "3.1.2", @@ -10335,15 +10182,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -10356,21 +10194,15 @@ "dev": true }, "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -10380,7 +10212,8 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "no-case": { "version": "3.0.4", @@ -10433,9 +10266,10 @@ "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" }, "node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "dev": true, "requires": { "assert": "^2.0.0", "browserify-zlib": "^0.2.0", @@ -10443,7 +10277,7 @@ "console-browserify": "^1.2.0", "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", + "domain-browser": "^4.22.0", "events": "^3.3.0", "filter-obj": "^2.0.2", "https-browserify": "^1.0.0", @@ -10452,21 +10286,38 @@ "process": "^0.11.10", "punycode": "^2.1.1", "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", + "readable-stream": "^4.0.0", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "string_decoder": "^1.3.0", "timers-browserify": "^2.0.12", "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", "url": "^0.11.0", "util": "^0.12.4", "vm-browserify": "^1.1.2" + }, + "dependencies": { + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } } }, "node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true }, "normalize-path": { "version": "3.0.0", @@ -10495,12 +10346,14 @@ "object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==" + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "dev": true }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -10509,12 +10362,14 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -10574,7 +10429,8 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true }, "p-limit": { "version": "2.3.0", @@ -10592,15 +10448,6 @@ "p-limit": "^2.2.0" } }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", @@ -10619,7 +10466,8 @@ "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "param-case": { "version": "3.0.4", @@ -10635,6 +10483,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -10676,7 +10525,8 @@ "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true }, "path-exists": { "version": "4.0.0", @@ -10706,16 +10556,11 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -10732,7 +10577,8 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", @@ -10748,34 +10594,6 @@ "find-up": "^4.0.0" } }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, "pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -10789,7 +10607,8 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true }, "process-nextick-args": { "version": "2.0.1", @@ -10829,6 +10648,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -10841,7 +10661,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -10857,7 +10678,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "puppeteer-core": { "version": "15.3.2", @@ -10911,23 +10733,20 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -10936,6 +10755,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -10987,12 +10807,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "reconnecting-websocket": { @@ -11004,6 +10824,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -11087,12 +10908,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -11118,12 +10939,6 @@ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -11136,20 +10951,12 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -11158,12 +10965,14 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -11177,9 +10986,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -11215,9 +11024,10 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -11290,7 +11100,8 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "setprototypeof": { "version": "1.2.0", @@ -11302,6 +11113,7 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -11331,10 +11143,17 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -11347,12 +11166,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -11367,12 +11180,14 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -11449,6 +11264,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, "requires": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -11458,6 +11274,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -11477,6 +11294,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11487,6 +11305,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11512,6 +11331,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -11525,7 +11345,8 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true }, "tar-fs": { "version": "2.1.1", @@ -11551,12 +11372,13 @@ } }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -11564,20 +11386,22 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true } } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" } }, "through": { @@ -11595,6 +11419,7 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, "requires": { "setimmediate": "^1.0.4" } @@ -11635,7 +11460,14 @@ "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true }, "type-is": { "version": "1.6.18", @@ -11651,6 +11483,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -11746,6 +11579,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -11761,6 +11595,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -11769,6 +11604,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -11777,7 +11613,8 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true } } }, @@ -11785,6 +11622,7 @@ "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -11848,12 +11686,14 @@ "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -11869,60 +11709,62 @@ } }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } @@ -11982,41 +11824,41 @@ } }, "webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", + "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.1.1", "serve-index": "^1.9.1", - "sockjs": "^0.3.21", + "sockjs": "^0.3.24", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "dependencies": { "ajv": { @@ -12040,12 +11882,6 @@ "fast-deep-equal": "^3.1.3" } }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -12064,19 +11900,10 @@ "ajv-keywords": "^5.0.0" } }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "requires": {} } @@ -12095,7 +11922,8 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "websocket-driver": { "version": "0.7.4", @@ -12127,6 +11955,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -12139,6 +11968,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -12173,7 +12003,8 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "yauzl": { "version": "2.10.0", diff --git a/package.json b/package.json index 98ac3febe..a80fd416e 100755 --- a/package.json +++ b/package.json @@ -26,8 +26,10 @@ "e2e-browser": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test browser'", "e2e-pack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test pack'", "e2e-unpack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test unpack'", - "dev": "make run-dev", - "build": "make run-build" + "esbuild-bundle": "make esbuild-bundle", + "esbuild-serve": "make esbuild-serve", + "webpack-bundle": "make webpack-bundle", + "webpack-serve": "make webpack-serve" }, "author": "", "license": "MIT", @@ -48,7 +50,6 @@ "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", - "node-polyfill-webpack-plugin": "1.1.4", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -61,10 +62,11 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.0", - "webpack": "5.67.0", - "webpack-cli": "4.10", - "webpack-dev-server": "4.7.4" + "html-webpack-plugin": "5.5.3", + "node-polyfill-webpack-plugin": "2.0.1", + "webpack": "5.88.1", + "webpack-cli": "5.1.4", + "webpack-dev-server": "4.15.1" }, "prettier": { "arrowParens": "avoid" diff --git a/webpack.config.cjs b/webpack.config.cjs new file mode 100644 index 000000000..2923bd761 --- /dev/null +++ b/webpack.config.cjs @@ -0,0 +1,110 @@ +"use strict"; + +const path = require("path"); +const webpack = require("webpack"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); + +module.exports = env => { + return { + mode: "development", + + experiments: { + asyncWebAssembly: false, + layers: false, + lazyCompilation: false, + outputModule: true, + syncWebAssembly: true, + topLevelAwait: true, + }, + + devtool: "eval-source-map", + + stats: { errorDetails: true }, + + devServer: { + static: { + directory: path.join(__dirname, "fixtures"), + }, + port: 4008, + proxy: { + "/kupo": { + // `KUPO_HOST` env variable must be set to the base URL of the Kupo + // service, otherwise all requests to Kupo will fail. + target: process.env.KUPO_HOST || "http://localhost:1442", + changeOrigin: true, + pathRewrite: { "^/kupo": "" }, + }, + }, + }, + + entry: env.entry, + + output: { + path: path.resolve(__dirname, "dist/webpack"), + filename: "bundle.js", + library: { + type: "module", + } + }, + + module: { + rules: [ + { + test: /\.(png|jpg|gif)$/i, + type: "asset", + }, + { + test: /\.plutus$/i, + type: "asset/source", + }, + ], + }, + + resolve: { + // We use node_modules provided by Nix shell via an environment variable + modules: [process.env.NODE_PATH], + extensions: [".js"], + fallback: { + buffer: require.resolve("buffer/"), + http: false, + url: false, + stream: false, + crypto: false, + https: false, + net: false, + tls: false, + zlib: false, + os: false, + path: false, + fs: false, + readline: false, + child_process: false, + }, + }, + + plugins: [ + new webpack.DefinePlugin({ + BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, + SCRIPTS_DIR: '"scripts"' + }), + new NodePolyfillPlugin(), + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + new HtmlWebpackPlugin({ + title: "cardano-transaction-lib-examples", + template: "./examples/index.html", + inject: false, // See stackoverflow.com/a/38292765/3067181 + }), + new webpack.ProvidePlugin({ + Buffer: ["buffer", "Buffer"], + }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), + ], + }; +}; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index c99c50e06..000000000 --- a/webpack.config.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict"; - -const path = require("path"); -const webpack = require("webpack"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); - -module.exports = { - mode: "development", - - experiments: { - asyncWebAssembly: false, - layers: false, - lazyCompilation: false, - outputModule: true, - syncWebAssembly: true, - topLevelAwait: true, - }, - - devtool: "eval-source-map", - - stats: { errorDetails: true }, - - devServer: { - port: 4008, - proxy: { - "/kupo": { - // `KUPO_HOST` env variable must be set to the base URL of the Kupo - // service, otherwise all requests to Kupo will fail. - target: process.env.KUPO_HOST || "http://localhost:1442", - changeOrigin: true, - pathRewrite: { "^/kupo": "" }, - }, - }, - }, - - // we can add more entrypoints as needed - entry: "./examples/index.js", - - output: { - path: path.resolve(__dirname, "dist"), - filename: "bundle.js", - }, - - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/i, - type: "asset", - }, - { - test: /\.plutus$/i, - type: "asset/source", - }, - ], - }, - - resolve: { - // We use node_modules provided by Nix shell via an environment variable - modules: [process.env.NODE_PATH], - extensions: [".js"], - fallback: { - buffer: require.resolve("buffer/"), - http: false, - url: false, - stream: false, - crypto: false, - https: false, - net: false, - tls: false, - zlib: false, - os: false, - path: false, - fs: false, - readline: false, - child_process: false, - }, - alias: { - // You should update this path to the location of your compiled scripts, - // relative to `webpack.config.js` - Scripts: path.resolve(__dirname, "fixtures/scripts"), - }, - }, - - plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - }), - new NodePolyfillPlugin(), - new webpack.LoaderOptionsPlugin({ - debug: true, - }), - new HtmlWebpackPlugin({ - title: "cardano-transaction-lib-examples", - template: "./examples/index.html", - inject: false, // See stackoverflow.com/a/38292765/3067181 - }), - new webpack.ProvidePlugin({ - Buffer: ["buffer", "Buffer"], - }), - // ContextReplacementPlugin is used just to suppress a webpack warning: - // "Critical dependency: the request of a dependency is an expression" - // See https://stackoverflow.com/a/59235546/17365145 - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), - ], -}; From 60e97c017adf7de5bd85a0cb4a8a97d1a4327959 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 25 Jul 2023 14:41:33 +0400 Subject: [PATCH 268/478] WIP: more tests --- src/Contract/Transaction.purs | 5 +- src/Internal/BalanceTx/BalanceTx.purs | 29 +++-------- src/Internal/BalanceTx/Error.purs | 2 + src/Internal/BalanceTx/Types.purs | 7 ++- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Wallet.purs | 6 +-- test/Ogmios/Aeson.purs | 2 +- test/Plutip/Contract.purs | 71 +++++++++++++++++++++++++-- 8 files changed, 86 insertions(+), 38 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 70c7c5f6d..41c2e3a46 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -51,8 +51,6 @@ import Contract.TxConstraints (TxConstraints) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) -import Ctl.Internal.BalanceTx (FinalizedTransaction) -import Ctl.Internal.BalanceTx (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction import Ctl.Internal.BalanceTx (balanceTxWithConstraints) as BalanceTx import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) import Ctl.Internal.BalanceTx.Error @@ -62,6 +60,7 @@ import Ctl.Internal.BalanceTx.Error , CouldNotConvertScriptOutputToTxInput , CouldNotGetChangeAddress , CouldNotGetCollateral + , InsufficientCollateralUtxos , CouldNotGetUtxos , CollateralReturnError , CollateralReturnMinAdaValueCalcError @@ -75,6 +74,8 @@ import Ctl.Internal.BalanceTx.Error , ImpossibleError(Impossible) , InvalidInContext(InvalidInContext) ) as BalanceTxError +import Ctl.Internal.BalanceTx.Types (FinalizedTransaction) +import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) import Ctl.Internal.Cardano.Types.NativeScript ( NativeScript diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 9dd842453..a28222dc1 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -1,7 +1,5 @@ module Ctl.Internal.BalanceTx - ( module BalanceTxErrorExport - , module FinalizedTransaction - , balanceTxWithConstraints + ( balanceTxWithConstraints ) where import Prelude @@ -39,29 +37,16 @@ import Ctl.Internal.BalanceTx.Constraints , _srcAddresses ) as Constraints import Ctl.Internal.BalanceTx.Error - ( Actual(Actual) - , BalanceTxError - ( CouldNotGetChangeAddress + ( BalanceTxError + ( BalanceInsufficientError + , CouldNotGetChangeAddress , CouldNotGetCollateral , CouldNotGetUtxos - , ExUnitsEvaluationFailed + , InsufficientCollateralUtxos , ReindexRedeemersError , UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed ) - , Expected(Expected) - , printTxEvaluationFailure - ) as BalanceTxErrorExport -import Ctl.Internal.BalanceTx.Error - ( BalanceTxError - ( UtxoLookupFailedFor - , UtxoMinAdaValueCalculationFailed - , ReindexRedeemersError - , BalanceInsufficientError - , CouldNotGetUtxos - , CouldNotGetCollateral - , CouldNotGetChangeAddress - ) , InvalidInContext(InvalidInContext) ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee @@ -85,7 +70,6 @@ import Ctl.Internal.BalanceTx.Types , liftEitherContract , withBalanceTxConstraints ) -import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction import Ctl.Internal.BalanceTx.UnattachedTx ( EvaluatedTx , UnindexedTx @@ -302,8 +286,9 @@ setTransactionCollateral changeAddr transaction = do maxCollateralInputs = UInt.toInt $ params.maxCollateralInputs utxoMap' = fromPlutusUtxoMap networkId $ Map.filterKeys isSpendable utxoMap - liftEffect $ Array.fromFoldable <<< fold <$> + mbCollateral <- liftEffect $ map Array.fromFoldable <$> selectCollateral coinsPerUtxoUnit maxCollateralInputs utxoMap' + liftEither $ note InsufficientCollateralUtxos mbCollateral addTxCollateralReturn collateral (addTxCollateral collateral transaction) changeAddr diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d4678387f..d3071e37f 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -9,6 +9,7 @@ module Ctl.Internal.BalanceTx.Error , CouldNotConvertScriptOutputToTxInput , CouldNotGetChangeAddress , CouldNotGetCollateral + , InsufficientCollateralUtxos , CouldNotGetUtxos , CollateralReturnError , CollateralReturnMinAdaValueCalcError @@ -73,6 +74,7 @@ data BalanceTxError | CouldNotConvertScriptOutputToTxInput | CouldNotGetChangeAddress | CouldNotGetCollateral + | InsufficientCollateralUtxos | CouldNotGetUtxos | CollateralReturnError String | CollateralReturnMinAdaValueCalcError diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index d7bf8bc76..9be83bf21 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -22,16 +22,15 @@ import Ctl.Internal.BalanceTx.Constraints ( BalanceTxConstraints , BalanceTxConstraintsBuilder ) -import Ctl.Internal.BalanceTx.Constraints - ( buildBalanceTxConstraints - ) as Constraints +import Ctl.Internal.BalanceTx.Constraints (buildBalanceTxConstraints) as Constraints import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), Transaction) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) import Ctl.Internal.Serialization.Address (NetworkId) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Scripts (Language) -import Ctl.Internal.Wallet (Cip30Wallet, cip30Wallet) +import Ctl.Internal.Wallet (cip30Wallet) +import Ctl.Internal.Wallet.Cip30 (Cip30Wallet) import Data.Either (Either) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 5b471652e..81d8ed656 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -73,7 +73,7 @@ import Ctl.Internal.Types.TxConstraints , mustSpendPubKeyOutput , singleton ) -import Ctl.Internal.Wallet (KeyWallet) +import Ctl.Internal.Wallet.Key (KeyWallet) import Data.Array (catMaybes) import Data.Array as Array import Data.BigInt (BigInt) diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 8d868f8e3..63e5bd68b 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -1,7 +1,5 @@ module Ctl.Internal.Wallet - ( module KeyWallet - , module Cip30Wallet - , Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) + ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) , WalletExtension ( NamiWallet , LodeWallet @@ -49,7 +47,6 @@ import Ctl.Internal.Cardano.Types.Transaction ) import Ctl.Internal.Helpers ((<<>>)) import Ctl.Internal.Types.Natural (fromInt', minus) -import Ctl.Internal.Wallet.Cip30 (Cip30Connection, Cip30Wallet) as Cip30Wallet import Ctl.Internal.Wallet.Cip30 ( Cip30Connection , Cip30Wallet @@ -61,7 +58,6 @@ import Ctl.Internal.Wallet.Key , PrivateStakeKey , privateKeysToKeyWallet ) -import Ctl.Internal.Wallet.Key (KeyWallet, privateKeysToKeyWallet) as KeyWallet import Data.Int (toNumber) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (over, wrap) diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 7d6ca074a..5f9d58f94 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -11,7 +11,7 @@ import Aeson as Aeson import Control.Monad.Error.Class (liftEither) import Control.Monad.Trans.Class (lift) import Control.Parallel (parTraverse) -import Ctl.Internal.BalanceTx (printTxEvaluationFailure) +import Ctl.Internal.BalanceTx.Error (printTxEvaluationFailure) import Ctl.Internal.QueryM.Ogmios as O import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, elem, filter, groupAllBy, nubBy) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 605d8a9ae..e8e8d9b46 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -18,6 +18,7 @@ import Contract.BalanceTxConstraints ) as BalanceTxConstraints import Contract.BalanceTxConstraints ( mustNotSpendUtxosWithOutRefs + , mustUseCollateralUtxos ) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) @@ -63,7 +64,7 @@ import Contract.Test.Plutip ) import Contract.Time (Slot(Slot), getEraSummaries) import Contract.Transaction - ( BalanceTxError(BalanceInsufficientError) + ( BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos) , DataHash , InvalidInContext(InvalidInContext) , NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll) @@ -170,8 +171,9 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) +import Effect.Console as Console import Effect.Exception (throw) -import Mote (group, skip, test) +import Mote (group, only, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -270,7 +272,70 @@ suite = do withWallets distribution \_ → pure unit - group "Contract interface" do + only $ group "Contract interface" do + only $ test + "mustUseCollateralUtxos should not fail if enough UTxOs are provided" + do + let + someUtxos = + [ BigInt.fromInt 5_000_000 + , BigInt.fromInt 5_000_000 + ] + withWallets (someUtxos /\ someUtxos) \(alice /\ bob) -> do + bobsCollateral <- withKeyWallet bob do + fromMaybe Map.empty <$> getWalletUtxos + withKeyWallet alice do + pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> withKeyWallet alice + ownStakePubKeyHashes + let + constraints :: Constraints.TxConstraints Void Void + constraints = mustPayToPubKeyStakeAddress pkh stakePkh + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + res <- + ( balanceTxWithConstraints ubTx + $ mustUseCollateralUtxos bobsCollateral + ) + res `shouldSatisfy` isRight + + only $ test + "mustUseCollateralUtxos should fail if not enough UTxOs are provided" + do + let + someUtxos = + [ BigInt.fromInt 5_000_000 + , BigInt.fromInt 5_000_000 + ] + withWallets someUtxos \alice -> do + withKeyWallet alice do + pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> withKeyWallet alice + ownStakePubKeyHashes + let + constraints :: Constraints.TxConstraints Void Void + constraints = mustPayToPubKeyStakeAddress pkh stakePkh + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + + lookups :: Lookups.ScriptLookups Void + lookups = mempty + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + res <- + ( balanceTxWithConstraints ubTx + $ mustUseCollateralUtxos Map.empty + ) + liftEffect $ Console.log $ show $ res + res `shouldSatisfy` case _ of + Left InsufficientCollateralUtxos -> true + _ -> false + test "Collateral selection: UTxO with lower amount is selected" do let distribution :: InitialUTxOs /\ InitialUTxOs From b7a151f3c78ee05a0cb1906219fef8eb2f522ea9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 1 Aug 2023 15:53:46 +0400 Subject: [PATCH 269/478] Use CSL version with GC --- package-lock.json | 84 ++++++++++++++----- package.json | 4 +- packages.dhall | 6 +- spago-packages.nix | 24 +++--- spago.dhall | 2 +- src/Internal/ApplyArgs.js | 7 +- src/Internal/BalanceTx/UtxoMinAda.js | 6 +- src/Internal/Deserialization/FromBytes.js | 6 +- src/Internal/Deserialization/Keys.js | 6 +- src/Internal/Deserialization/Language.js | 6 +- src/Internal/Deserialization/NativeScript.js | 6 +- src/Internal/Deserialization/PlutusData.js | 6 +- src/Internal/Deserialization/Transaction.js | 6 +- src/Internal/Deserialization/UnspentOutput.js | 6 +- src/Internal/Hashing.js | 6 +- src/Internal/Serialization.js | 6 +- src/Internal/Serialization/Address.js | 6 +- src/Internal/Serialization/AuxiliaryData.js | 6 +- src/Internal/Serialization/BigInt.js | 6 +- src/Internal/Serialization/Hash.js | 6 +- src/Internal/Serialization/MinFee.js | 6 +- src/Internal/Serialization/NativeScript.js | 6 +- src/Internal/Serialization/PlutusData.js | 6 +- src/Internal/Serialization/PlutusScript.js | 6 +- src/Internal/Serialization/WitnessSet.js | 6 +- src/Internal/Types/BigNum.js | 7 +- src/Internal/Types/Int.js | 6 +- src/Internal/Wallet/Bip32.js | 6 +- 28 files changed, 127 insertions(+), 133 deletions(-) diff --git a/package-lock.json b/package-lock.json index 409a9a846..6dad1eafd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@emurgo/cardano-serialization-lib-browser": "11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -63,16 +63,6 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, - "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", - "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" - }, - "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", - "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" - }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", @@ -495,6 +485,34 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", + "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "dependencies": { + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser/node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", + "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "dependencies": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -6928,16 +6946,6 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, - "@emurgo/cardano-serialization-lib-browser": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", - "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" - }, - "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", - "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" - }, "@esbuild/android-arm": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", @@ -7153,6 +7161,38 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@mlabs-haskell/cardano-serialization-lib-gc-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", + "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "requires": { + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + }, + "dependencies": { + "@emurgo/cardano-serialization-lib-browser": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + } + } + }, + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", + "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "requires": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + }, + "dependencies": { + "@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + } + } + }, "@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", diff --git a/package.json b/package.json index a80fd416e..2fb7fd727 100755 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@emurgo/cardano-serialization-lib-browser": "11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/packages.dhall b/packages.dhall index f1adb8dcc..e2e7a9fcd 100644 --- a/packages.dhall +++ b/packages.dhall @@ -222,7 +222,7 @@ let additions = , repo = "https://github.com/errfrom/medea-ps.git" , version = "00981e4ce7249808413a6db8d88d849bbe85245a" } - , purescript-toppokki = + , toppokki = { dependencies = [ "prelude" , "record" @@ -233,7 +233,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "b043e9342463df76972d05981ac4ec25316834bf" + , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" } , noble-secp256k1 = { dependencies = @@ -251,4 +251,4 @@ let additions = } } -in (upstream // additions) +in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index aab9a94b9..fde48e59d 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1169,18 +1169,6 @@ let installPhase = "ln -s $src $out"; }; - "purescript-toppokki" = pkgs.stdenv.mkDerivation { - name = "purescript-toppokki"; - version = "b043e9342463df76972d05981ac4ec25316834bf"; - src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-toppokki"; - rev = "b043e9342463df76972d05981ac4ec25316834bf"; - sha256 = "0kkk4xfnkq6fqr30d95i3x4r6z9479bx7v0ama7xf36pr0y26lk1"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "quickcheck" = pkgs.stdenv.mkDerivation { name = "quickcheck"; version = "v8.0.1"; @@ -1373,6 +1361,18 @@ let installPhase = "ln -s $src $out"; }; + "toppokki" = pkgs.stdenv.mkDerivation { + name = "toppokki"; + version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-toppokki"; + rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "transformers" = pkgs.stdenv.mkDerivation { name = "transformers"; version = "v6.0.0"; diff --git a/spago.dhall b/spago.dhall index 3fe7222b5..74edc759b 100644 --- a/spago.dhall +++ b/spago.dhall @@ -68,7 +68,7 @@ You can edit this file as you like. , "prelude" , "profunctor" , "profunctor-lenses" - , "purescript-toppokki" + , "toppokki" , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 5d382749f..9ff670298 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -3,15 +3,12 @@ let lib; let apply_args; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); apply_args = await import("apply-args-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); apply_args = await import("apply-args-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); -// apply_args = gcWrapper(apply_args); /** * @param {} left diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index 023f7a290..5b6910c84 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function minAdaForOutput(maybe) { return txOutput => dataCost => { diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index 62589355c..f7b57ae04 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _fromBytes(helper) { return name => bytes => { diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index c256eff37..4beb728a4 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index 03868dff9..e39c2a5aa 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _convertLanguage(langCtors) { return cslLang => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 3e8ff3f62..4ef2dc16b 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _convertNativeScript(handler) { return ns => { diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index 62f5dc775..3d0c28805 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _convertPlutusData(handle) { return pd => { diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 0c049c025..af0a3071e 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 733f2ca97..61f5ecbee 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 2d174a493..db5d6174d 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -7,12 +7,10 @@ import SHA3 from "jssha/dist/sha3"; let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index 59d2f9c15..ee93d49db 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index b844a972d..e62c7882a 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const callClassStaticMaybe = (classname, functionname) => maybe => input => { let ret = null; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index f1dd93146..33fd344de 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index 712825212..dc61768cc 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _BigInt_from_str(helper) { return str => { diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 783ec38c8..1ac1b8c79 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function hashToBytes(hash) { return hash.to_bytes(); diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index 3a3d0cd86..52e0732ad 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _minFee(maybe) { return tx => txFeeFixed => txFeePerByte => { diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index cbdb38801..810331fa7 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); const mkScript = prop => arg => lib.NativeScript[prop](arg); diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 4c1c8681e..9c642c773 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function _mkPlutusData_bytes(bytes) { return lib.PlutusData.new_bytes(bytes); diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index eec701181..ab48270fe 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function newPlutusV1Script(bytes) { return lib.PlutusScript.new(bytes); diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 28a736895..96b8fd2cd 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function newTransactionWitnessSet() { return lib.TransactionWitnessSet.new(); diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index d0acc28e1..5514c3054 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -2,12 +2,11 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); + // lib = (await import("../../../../cardano-serialization-lib-gc/nodejs/index.js")); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export function bnCompare(lhs) { return rhs => lhs.compare(rhs); diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index 0446f9d77..8110b53cb 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); export const newPositive = lib.Int.new; export const newNegative = lib.Int.new_negative; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 493c3ffba..9518c9697 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -2,12 +2,10 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-serialization-lib-browser"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@emurgo/cardano-serialization-lib-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); import bip39 from "bip39"; From ebe2c7bfa20a4381d9f81ffaef68e8d19f473368 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 4 Aug 2023 19:13:26 +0400 Subject: [PATCH 270/478] Update docs --- doc/getting-started.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/getting-started.md b/doc/getting-started.md index dc354275a..f758fa847 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -38,9 +38,7 @@ Then, add `https://public-plutonomicon.cachix.org` and `public-plutonomicon.cach The easiest way to create a new CTL project is to use our `ctl-scaffold` flake template. This lives in the CTL repo -- you can have a look [here](../templates/ctl-scaffold). It contains a simple, yet complete, flakes-based scaffolding project with example `outputs` for a CTL project, including its runtime. - Alternatively, consider [the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold) flake template. It's a scaffold built on top of the above mentioned `ctl-scaffold`, but includes a react based frontend and a haskell onchain additionaly. It's more of a demo application, than a minimal working example. - A new project can be initialized as follows: From 35debff54dd04982a40d569e12a8d0aa69c81419 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 8 Aug 2023 23:23:24 +0400 Subject: [PATCH 271/478] Do not store scripts in external files --- examples/AlwaysMints.js | 5 ++++ examples/AlwaysMints.purs | 16 ++++++------ examples/AlwaysSucceeds.js | 5 ++++ examples/AlwaysSucceeds.purs | 4 +-- examples/ECDSA.purs | 22 +++++++++++----- examples/ExUnits.js | 2 ++ examples/ExUnits.purs | 4 +-- examples/IncludeDatum.purs | 12 +++++++-- examples/Lose7Ada.purs | 12 +++++++-- examples/MintsMultipleTokens.js | 17 ++++++++++++ examples/MintsMultipleTokens.purs | 20 +++++++------- examples/MultipleRedeemers.js | 17 ++++++++++++ examples/MultipleRedeemers.purs | 20 +++++++------- examples/OneShotMinting.js | 5 ++++ examples/OneShotMinting.purs | 4 +-- examples/PlutusV2/InlineDatum.js | 5 ++++ examples/PlutusV2/InlineDatum.purs | 4 +-- examples/PlutusV2/OneShotMinting.js | 5 ++++ examples/PlutusV2/OneShotMinting.purs | 3 +-- examples/PlutusV2/Scripts/AlwaysMints.purs | 12 +++++++-- examples/PlutusV2/Scripts/AlwaysSucceeds.purs | 12 +++++++-- examples/Schnorr.purs | 26 ++++++++++++------- test/Wallet/Cip30/SignData.js | 4 +-- 23 files changed, 172 insertions(+), 64 deletions(-) create mode 100644 examples/AlwaysMints.js create mode 100644 examples/AlwaysSucceeds.js create mode 100644 examples/ExUnits.js create mode 100644 examples/MintsMultipleTokens.js create mode 100644 examples/MultipleRedeemers.js create mode 100644 examples/OneShotMinting.js create mode 100644 examples/PlutusV2/InlineDatum.js create mode 100644 examples/PlutusV2/OneShotMinting.js diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js new file mode 100644 index 000000000..e9f4424fd --- /dev/null +++ b/examples/AlwaysMints.js @@ -0,0 +1,5 @@ +export const alwaysMints = `{ + "cborHex": "484701000022120011", + "description": "always-mints", + "type": "PlutusScriptV1" +}`; diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 7322ebf9c..5b5c8f8e3 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -13,7 +13,7 @@ import Contract.Prelude import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) +import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) @@ -21,7 +21,6 @@ import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt main :: Effect Unit @@ -50,12 +49,13 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ $ do runContract cfg contract -alwaysMintsPolicyMaybe :: Aff (Maybe MintingPolicy) -alwaysMintsPolicyMaybe = - loadScript "always-mints.plutus" <#> \alwaysMints -> do - envelope <- decodeTextEnvelope alwaysMints - PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope +foreign import alwaysMints :: String + +alwaysMintsPolicyMaybe :: Maybe MintingPolicy +alwaysMintsPolicyMaybe = do + PlutusMintingPolicy <$> + (plutusScriptV1FromEnvelope =<< decodeTextEnvelope alwaysMints) alwaysMintsPolicy :: Contract MintingPolicy alwaysMintsPolicy = - liftContractAffM "Error decoding alwaysMintsPolicy" alwaysMintsPolicyMaybe + liftContractM "Error decoding alwaysMintsPolicy" alwaysMintsPolicyMaybe diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js new file mode 100644 index 000000000..f6c35572e --- /dev/null +++ b/examples/AlwaysSucceeds.js @@ -0,0 +1,5 @@ +export const alwaysSucceeds = `{ + "cborHex": "4e4d01000033222220051200120011", + "description": "always-succeeds", + "type": "PlutusScriptV1" +}`; diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index c756569c0..94339b70a 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -34,7 +34,6 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt as BigInt import Data.Lens (view) @@ -120,7 +119,8 @@ spendFromAlwaysSucceeds vhash validator txId = do alwaysSucceedsScript :: Contract Validator alwaysSucceedsScript = do - alwaysSucceeds <- liftAff $ loadScript "always-succeeds.plutus" liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceeds Validator <$> plutusScriptV1FromEnvelope envelope + +foreign import alwaysSucceeds :: String diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index a21da1b68..25a48913f 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -15,7 +15,7 @@ import Contract.Crypto.Secp256k1.Utils , randomSecp256k1PrivateKey ) import Contract.Log (logInfo') -import Contract.Monad (Contract, liftContractAffM, liftContractM) +import Contract.Monad (Contract, liftContractM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData @@ -36,7 +36,6 @@ import Contract.Transaction import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Map as Map import Data.Set as Set @@ -60,7 +59,7 @@ contract = do -- | Prepare the ECDSA test by locking some funds at the validator address prepTest :: Contract TransactionHash prepTest = do - validator <- liftContractAffM "Caonnot get validator" getValidator + validator <- liftContractM "Caonnot get validator" getValidator let valHash = validatorHash validator @@ -86,7 +85,7 @@ testVerification testVerification txId ecdsaRed = do let red = Redeemer $ toData ecdsaRed - validator <- liftContractAffM "Can't get validator" getValidator + validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator netId <- getNetworkId @@ -129,7 +128,16 @@ testECDSA txId = do , pk: publicKey } -getValidator :: Aff (Maybe Validator) +getValidator :: Maybe Validator getValidator = - loadScript "validate-ecdsa.plutus" <#> \validateECDSA -> - decodeTextEnvelope validateECDSA >>= plutusScriptV2FromEnvelope >>> map wrap + decodeTextEnvelope validateECDSA >>= plutusScriptV2FromEnvelope >>> map wrap + +validateECDSA :: String +validateECDSA = + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59080459080101000032323232332232323232323232323233223232323232223232322323253353232323500222253353335734666ed000400c00808007c40804cd5ce249167369676e617475726520636865636b206661696c65640001f3333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd406806cd5d0a80619a80d00d9aba1500b33501a01c35742a014666aa03ceb94074d5d0a804999aa80f3ae501d35742a01066a03404a6ae85401cccd54078099d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40c1d69aba150023031357426ae8940088c98c80d4cd5ce01b01a81989aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8183ad35742a00460626ae84d5d1280111931901a99ab9c036035033135573ca00226ea8004d5d09aba2500223263203133573806406205e26aae7940044dd50009aba1500533501a75c6ae854010ccd540780888004d5d0a801999aa80f3ae200135742a00460486ae84d5d1280111931901699ab9c02e02d02b135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860286ae84d5d1280211931900f99ab9c02001f01d3333573466e1cd55cea803a40004666444246660020080060046eb8d5d0a8039bae35742a00c6eb8d5d09aba2500623263201e33573803e03c0386666ae68cdc39aab9d37540109000100e91931900e99ab9c01e01d01b101c13263201c3357389201035054350001c135573ca00226ea80044d5d1280089aab9e5001137540022464460046eb0004c8004d5405888cccd55cf80092805119a80498021aba100230033574400402c464646666ae68cdc39aab9d5002480008cc8848cc00400c008c030d5d0a80118029aba135744a004464c6402c66ae7005c0580504d55cf280089baa0012323232323333573466e1cd55cea8022400046666444424666600200a0080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c054d5d0a80119a80780a1aba135744a004464c6403666ae7007006c0644d55cf280089baa00135742a008666aa010eb9401cd5d0a8019919191999ab9a3370ea0029002119091118010021aba135573ca00646666ae68cdc3a80124004464244460020086eb8d5d09aab9e500423333573466e1d400d20002122200323263201d33573803c03a03603403226aae7540044dd50009aba1500233500b75c6ae84d5d1280111931900b99ab9c018017015135744a00226ae8940044d55cf280089baa0011335500175ceb44488c88c008dd5800990009aa80991191999aab9f00225008233500733221233001003002300635573aa004600a6aae794008c010d5d100180a09aba100111220021221223300100400312232323333573466e1d4005200023212230020033005357426aae79400c8cccd5cd19b8750024800884880048c98c8048cd5ce00980900800789aab9d500113754002464646666ae68cdc3a800a400c46424444600800a600e6ae84d55cf280191999ab9a3370ea004900211909111180100298049aba135573ca00846666ae68cdc3a801a400446424444600200a600e6ae84d55cf280291999ab9a3370ea00890001190911118018029bae357426aae7940188c98c8048cd5ce00980900800780700689aab9d500113754002464646666ae68cdc39aab9d5002480008cc8848cc00400c008c014d5d0a8011bad357426ae8940088c98c8038cd5ce00780700609aab9e5001137540024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6401866ae700340300284dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6402a66ae7005805404c04804404003c0380344d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263200e33573801e01c01801626aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931900599ab9c00c00b009008135573aa00226ea8004488c8c8cccd5cd19b87500148010848880048cccd5cd19b875002480088c84888c00c010c018d5d09aab9e500423333573466e1d400d20002122200223263200c33573801a01801401201026aae7540044dd50009191999ab9a3370ea0029001100291999ab9a3370ea0049000100291931900419ab9c009008006005135573a6ea800448800848800526120014910350543100112323001001223300330020020011" +} +""" diff --git a/examples/ExUnits.js b/examples/ExUnits.js new file mode 100644 index 000000000..8a2cbb76f --- /dev/null +++ b/examples/ExUnits.js @@ -0,0 +1,2 @@ +export const exUnits = `{"cborHex":"59079f59079c0100003233223232323232323232323232323233223232323232222323253353232301b0023333573466e1cd55cea801a4000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd405805cd5d0a80619a80b00b9aba1500b33501601835742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02c0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01801781689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03002f02d135573ca00226ea8004d5d09aba2500223263202b33573805805605226aae7940044dd50009aba1500533501675c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c028027025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00660206ae84d5d1280191931900c99ab9c01a019017375a008202e264c6402e66ae712401134661696c656420766572696669636174696f6e00017135573ca00226ea800448c88c008dd6000990009aa80b911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355014223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200923333573466e1d40092000200923263200633573800e00c00800626aae74dd5000a4c24002921035054310032001355003225335333573466e2400520000040031004130023370200290010910010910008891918008009119801980100100081","description":"","type":"PlutusScriptV2"} +`; diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index bd4e41c29..c728dfdbf 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -33,7 +33,6 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt (BigInt) import Data.BigInt as BigInt @@ -123,7 +122,8 @@ spendFromExUnits iters vhash validator txId = do exUnitsScript :: Contract Validator exUnitsScript = do - exUnits <- liftAff $ loadScript "exunits.plutus" liftMaybe (error "Error decoding exUnits") do envelope <- decodeTextEnvelope exUnits Validator <$> plutusScriptV2FromEnvelope envelope + +foreign import exUnits :: String diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 54406ec5b..438ccd9c5 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -32,7 +32,6 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head) import Data.BigInt as BigInt import Data.Lens (view) @@ -98,7 +97,16 @@ spendFromIncludeDatum vhash validator txId = do -- | checks if the datum equals 42 only42Script :: Contract Validator only42Script = do - includeDatum <- liftAff $ loadScript "include-datum.plutus" liftMaybe (error "Error decoding includeDatum") do envelope <- decodeTextEnvelope includeDatum Validator <$> plutusScriptV1FromEnvelope envelope + +includeDatum :: String +includeDatum = + """ +{ + "type": "PlutusScriptV1", + "description": "include-datum", + "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" +} +""" diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 1a28a3101..d5eaaa5ce 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -36,7 +36,6 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt import Data.Foldable (fold) import Data.Functor ((<$>)) @@ -118,7 +117,16 @@ spendFromAlwaysFails vhash validator txId = do alwaysFailsScript :: Contract Validator alwaysFailsScript = do - alwaysFails <- liftAff $ loadScript "always-fails.plutus" liftMaybe (error "Error decoding alwaysFails") do envelope <- decodeTextEnvelope alwaysFails Validator <$> plutusScriptV1FromEnvelope envelope + +alwaysFails :: String +alwaysFails = + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" +} +""" diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js new file mode 100644 index 000000000..911a34f94 --- /dev/null +++ b/examples/MintsMultipleTokens.js @@ -0,0 +1,17 @@ +export const redeemer1Script = `{ + "cborHex": "59099959099601000032323233223322333222323233322232323232333222333222333333332222222233223333322222333322223322332233223332223322332233223322332232323232323232323232323232323232323232323232323232335001011223304849010e77726f6e672072656465656d657200333504b04a00233504904f4800848888c014cc00cc010008c01800494cd4c12400441484d4060d4c144cd5ce2481025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ca002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999817a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666046a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998112800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135025500113006357426aae79400c4cccd5cd19b875001480089408c9401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa82811191919191919191999aab9f0085505125300212001056350022200135001220023555505712223300321300a357440124266a0a8a00aa600624002266aa0a8a002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ea002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940a8940092613333573466e1d4011200225002250044984d40a540044c018d5d09aab9e500313333573466e1d4005200025027250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088108940092613333573466e1d400520002040250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa824911999aab9f00125047233504630063574200460066ae88008120800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa096a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c0c140044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0ad40044c030d5d09aab9e500813333573466e1d4011200225002250044984c09d40044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189812a80089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840844a0049309999ab9a3370ea028900510211280124c26666ae68cdc3a809a40104a0044a00c9309981e2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981c2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981ba800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0cd40044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189816a800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc0e140054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0c540044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c2606ca00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189819a80089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133026500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c4424660020060044002444444444424666666666600201601401201000e00c00a0080060044002442466002006004400244424666002008006004400244246600200600440022424460040062244002240022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a00800640024244600400642446002006400244a66a600c0022010266ae7000801c4800488ccd5cd19baf00200100600512001122002122001200123750002224a0082244004244244660020080062400224002400222442466002006004224002224646002002446600660040040022222466a0044246600246a00644600400646a00644600200600224646460020024466006600400400244246a6008246a60080066a0060020021", + "description": "redeemer-1", + "type": "PlutusScriptV1" +}`; + +export const redeemer2Script = `{ + "cborHex": "59099959099601000032323233223322333222323233322232323232333222333222333333332222222233223333322222333322223322332233223332223322332233223322332232323232323232323232323232323232323232323232323232335001011223304849010e77726f6e672072656465656d657200333504b04a00233504904f4801048888c014cc00cc010008c01800494cd4c12400441484d4060d4c144cd5ce2481025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ca002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999817a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666046a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998112800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135025500113006357426aae79400c4cccd5cd19b875001480089408c9401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa82811191919191919191999aab9f0085505125300212001056350022200135001220023555505712223300321300a357440124266a0a8a00aa600624002266aa0a8a002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ea002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940a8940092613333573466e1d4011200225002250044984d40a540044c018d5d09aab9e500313333573466e1d4005200025027250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088108940092613333573466e1d400520002040250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa824911999aab9f00125047233504630063574200460066ae88008120800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa096a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c0c140044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0ad40044c030d5d09aab9e500813333573466e1d4011200225002250044984c09d40044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189812a80089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840844a0049309999ab9a3370ea028900510211280124c26666ae68cdc3a809a40104a0044a00c9309981e2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981c2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981ba800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0cd40044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189816a800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc0e140054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0c540044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c2606ca00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189819a80089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133026500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c4424660020060044002444444444424666666666600201601401201000e00c00a0080060044002442466002006004400244424666002008006004400244246600200600440022424460040062244002240022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a00800640024244600400642446002006400244a66a600c0022010266ae7000801c4800488ccd5cd19baf00200100600512001122002122001200123750002224a0082244004244244660020080062400224002400222442466002006004224002224646002002446600660040040022222466a0044246600246a00644600400646a00644600200600224646460020024466006600400400244246a6008246a60080066a0060020021", + "description": "redeemer-2", + "type": "PlutusScriptV1" +}`; + +export const redeemer3Script = `{ + "cborHex": "59099959099601000032323233223322333222323233322232323232333222333222333333332222222233223333322222333322223322332233223332223322332233223322332232323232323232323232323232323232323232323232323232335001011223304849010e77726f6e672072656465656d657200333504b04a00233504904f4801848888c014cc00cc010008c01800494cd4c12400441484d4060d4c144cd5ce2481025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ca002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999817a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666046a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998112800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135025500113006357426aae79400c4cccd5cd19b875001480089408c9401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa82811191919191919191999aab9f0085505125300212001056350022200135001220023555505712223300321300a357440124266a0a8a00aa600624002266aa0a8a002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ea002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940a8940092613333573466e1d4011200225002250044984d40a540044c018d5d09aab9e500313333573466e1d4005200025027250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088108940092613333573466e1d400520002040250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa824911999aab9f00125047233504630063574200460066ae88008120800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa096a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c0c140044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0ad40044c030d5d09aab9e500813333573466e1d4011200225002250044984c09d40044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189812a80089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840844a0049309999ab9a3370ea028900510211280124c26666ae68cdc3a809a40104a0044a00c9309981e2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981c2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981ba800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0cd40044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189816a800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc0e140054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0c540044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c2606ca00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189819a80089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133026500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c4424660020060044002444444444424666666666600201601401201000e00c00a0080060044002442466002006004400244424666002008006004400244246600200600440022424460040062244002240022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a00800640024244600400642446002006400244a66a600c0022010266ae7000801c4800488ccd5cd19baf00200100600512001122002122001200123750002224a0082244004244244660020080062400224002400222442466002006004224002224646002002446600660040040022222466a0044246600246a00644600400646a00644600200600224646460020024466006600400400244246a6008246a60080066a0060020021", + "description": "redeemer-3", + "type": "PlutusScriptV1" +}`; diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index bdba95fcf..4cb4cd031 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -30,7 +30,6 @@ import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName ) as Helpers -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt (fromInt) as BigInt import Effect.Exception (error) @@ -75,23 +74,24 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract +foreign import redeemer1Script :: String +foreign import redeemer2Script :: String +foreign import redeemer3Script :: String + mintingPolicyRdmrInt1 :: Contract MintingPolicy mintingPolicyRdmrInt1 = do - redeemerInt1 <- liftAff $ loadScript "redeemer1.plutus" - liftMaybe (error "Error decoding redeemerInt1") do - envelope <- decodeTextEnvelope redeemerInt1 + liftMaybe (error "Error decoding redeemer1Script") do + envelope <- decodeTextEnvelope redeemer1Script PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope mintingPolicyRdmrInt2 :: Contract MintingPolicy mintingPolicyRdmrInt2 = do - redeemerInt2 <- liftAff $ loadScript "redeemer2.plutus" - liftMaybe (error "Error decoding redeemerInt2") do - envelope <- decodeTextEnvelope redeemerInt2 + liftMaybe (error "Error decoding redeemer2Script") do + envelope <- decodeTextEnvelope redeemer2Script PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope mintingPolicyRdmrInt3 :: Contract MintingPolicy mintingPolicyRdmrInt3 = do - redeemerInt3 <- liftAff $ loadScript "redeemer3.plutus" - liftMaybe (error "Error decoding redeemerInt3") do - envelope <- decodeTextEnvelope redeemerInt3 + liftMaybe (error "Error decoding redeemer3Script") do + envelope <- decodeTextEnvelope redeemer3Script PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js new file mode 100644 index 000000000..0f3fd9df9 --- /dev/null +++ b/examples/MultipleRedeemers.js @@ -0,0 +1,17 @@ +export const redeemerIs1Script = `{ + "description": "validator that checks whether redeemer is 1", + "cborHex": "4e4d0100002223375e0046ea120021", + "type": "PlutusScriptV1" +}`; + +export const redeemerIs2Script = `{ + "description": "validator that checks whether redeemer is 2", + "cborHex": "4e4d0100002223375e0046ea120041", + "type": "PlutusScriptV1" +}`; + +export const redeemerIs3Script = `{ + "description": "validator that checks whether redeemer is 3", + "cborHex": "4e4d0100002223375e0046ea120061", + "type": "PlutusScriptV1" +}`; diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index 5b96c9b6c..a8811323e 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -30,7 +30,6 @@ import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName ) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Examples.MintsMultipleTokens ( mintingPolicyRdmrInt3 ) @@ -119,26 +118,27 @@ spendLockedByIntOutputParams (validator /\ redeemerVal) = do pure $ constraints /\ (Lookups.unspentOutputs utxo <> Lookups.validator validator) +foreign import redeemerIs1Script :: String +foreign import redeemerIs2Script :: String +foreign import redeemerIs3Script :: String + -- | checks whether redeemer is 1 redeemerIs1Validator :: Contract Validator redeemerIs1Validator = do - vredeemerInt1 <- liftAff $ loadScript "redeemer1-validator.plutus" - liftMaybe (error "Error decoding vredeemerInt1") do - envelope <- decodeTextEnvelope vredeemerInt1 + liftMaybe (error "Error decoding redeemerIs1Script") do + envelope <- decodeTextEnvelope redeemerIs1Script Validator <$> plutusScriptV1FromEnvelope envelope -- | checks whether redeemer is 2 redeemerIs2Validator :: Contract Validator redeemerIs2Validator = do - vredeemerInt2 <- liftAff $ loadScript "redeemer2-validator.plutus" - liftMaybe (error "Error decoding vredeemerInt2") do - envelope <- decodeTextEnvelope vredeemerInt2 + liftMaybe (error "Error decoding redeemerIs2Script") do + envelope <- decodeTextEnvelope redeemerIs2Script Validator <$> plutusScriptV1FromEnvelope envelope -- | checks whether redeemer is 3 redeemerIs3Validator :: Contract Validator redeemerIs3Validator = do - vredeemerInt3 <- liftAff $ loadScript "redeemer3-validator.plutus" - liftMaybe (error "Error decoding vredeemerInt3") do - envelope <- decodeTextEnvelope vredeemerInt3 + liftMaybe (error "Error decoding redeemerIs3Script") do + envelope <- decodeTextEnvelope redeemerIs3Script Validator <$> plutusScriptV1FromEnvelope envelope diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js new file mode 100644 index 000000000..532b17cff --- /dev/null +++ b/examples/OneShotMinting.js @@ -0,0 +1,5 @@ +export const oneShotMinting = `{ + "type": "PlutusScriptV1", + "description": "one-shot-minting", + "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" +}`; diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index a9d82a586..ed1fb96e5 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -50,7 +50,6 @@ import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Array (head, singleton) as Array import Data.BigInt (BigInt) import Data.Map (toUnfoldable) as Map @@ -119,7 +118,6 @@ oneShotMintingPolicy = oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do - oneShotMinting <- liftAff $ loadScript "one-shot-minting.plutus" script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting plutusScriptV1FromEnvelope envelope @@ -135,3 +133,5 @@ mkOneShotMintingPolicy unappliedMintingPolicy oref = mintingPolicyArgs = Array.singleton (toData oref) in applyArgs unappliedMintingPolicy mintingPolicyArgs + +foreign import oneShotMinting :: String diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js new file mode 100644 index 000000000..030fa63ee --- /dev/null +++ b/examples/PlutusV2/InlineDatum.js @@ -0,0 +1,5 @@ +export const checkDatumIsInline = `{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" +}`; diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 4530608ba..931dc73ca 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -38,7 +38,6 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.BigInt as BigInt import Data.Map as Map import Effect.Exception (error) @@ -164,7 +163,8 @@ readFromCheckDatumIsInline vhash txId = do checkDatumIsInlineScript :: Contract Validator checkDatumIsInlineScript = do - checkDatumIsInline <- liftAff $ loadScript "check-datum-is-inline.plutus" liftMaybe (error "Error decoding checkDatumIsInline") do envelope <- decodeTextEnvelope checkDatumIsInline Validator <$> plutusScriptV2FromEnvelope envelope + +foreign import checkDatumIsInline :: String diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js new file mode 100644 index 000000000..8a572af4a --- /dev/null +++ b/examples/PlutusV2/OneShotMinting.js @@ -0,0 +1,5 @@ +export const oneShotMinting = `{ + "type": "PlutusScriptV2", + "description": "one-shot-minting", + "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" +}`; diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index c229d6fcd..83c1d4413 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -22,7 +22,6 @@ import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Contract.Transaction (TransactionInput) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Examples.OneShotMinting ( mkContractWithAssertions , mkOneShotMintingPolicy @@ -47,10 +46,10 @@ oneShotMintingPolicyV2 = oneShotMintingPolicyScriptV2 :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScriptV2 txInput = do - oneShotMinting <- liftAff $ loadScript "one-shot-minting-v2.plutus" script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting plutusScriptV2FromEnvelope envelope liftContractE $ mkOneShotMintingPolicy script txInput +foreign import oneShotMinting :: String diff --git a/examples/PlutusV2/Scripts/AlwaysMints.purs b/examples/PlutusV2/Scripts/AlwaysMints.purs index 4d72ac89b..15b9f072e 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.purs +++ b/examples/PlutusV2/Scripts/AlwaysMints.purs @@ -9,7 +9,6 @@ import Contract.Monad (Contract) import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Effect.Exception (error) alwaysMintsPolicyV2 :: Contract MintingPolicy @@ -17,7 +16,16 @@ alwaysMintsPolicyV2 = PlutusMintingPolicy <$> alwaysMintsPolicyScriptV2 alwaysMintsPolicyScriptV2 :: Contract PlutusScript alwaysMintsPolicyScriptV2 = do - alwaysMintsV2 <- liftAff $ loadScript "always-mints-v2.plutus" liftMaybe (error "Error decoding alwaysMintsV2") do envelope <- decodeTextEnvelope alwaysMintsV2 plutusScriptV2FromEnvelope envelope + +alwaysMintsV2 :: String +alwaysMintsV2 = + """ +{ + "cborHex": "484701000022120011", + "description": "always-mints", + "type": "PlutusScriptV2" +} +""" diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs index fd9a57081..6fd1387c7 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs @@ -8,12 +8,20 @@ import Contract.Monad (Contract) import Contract.Scripts (Validator(Validator)) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Effect.Exception (error) alwaysSucceedsScriptV2 :: Contract Validator alwaysSucceedsScriptV2 = do - alwaysSucceedsV2 <- liftAff $ loadScript "always-succeeds-v2.plutus" liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceedsV2 Validator <$> plutusScriptV2FromEnvelope envelope + +alwaysSucceedsV2 :: String +alwaysSucceedsV2 = + """ +{ + "cborHex": "4e4d01000033222220051200120011", + "description": "always-succeeds", + "type": "PlutusScriptV2" +} +""" diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index ec43007c2..e5461d29d 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -11,7 +11,7 @@ import Contract.Crypto.Secp256k1.Schnorr ) import Contract.Crypto.Secp256k1.Utils (randomSecp256k1PrivateKey) import Contract.Log (logInfo') -import Contract.Monad (Contract, liftContractAffM, liftContractM) +import Contract.Monad (Contract, liftContractM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData @@ -32,7 +32,6 @@ import Contract.Transaction import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value -import Ctl.Examples.Helpers.LoadScript (loadScript) import Data.Map as Map import Data.Set as Set @@ -56,7 +55,7 @@ contract = do -- | Prepare the ECDSA test by locking some funds at the validator address prepTest :: Contract TransactionHash prepTest = do - validator <- liftContractAffM "Caonnot get validator" getValidator + validator <- liftContractM "Caonnot get validator" getValidator let valHash = validatorHash validator val = Value.lovelaceValueOf one @@ -81,7 +80,7 @@ testVerification testVerification txId ecdsaRed = do let red = Redeemer $ toData ecdsaRed - validator <- liftContractAffM "Can't get validator" getValidator + validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator netId <- getNetworkId @@ -123,8 +122,17 @@ testSchnorr txId = do , pk: publicKey } -getValidator :: Aff (Maybe Validator) -getValidator = - loadScript "validate-schnorr.plutus" <#> \validateSchnorr -> do - envelope <- decodeTextEnvelope validateSchnorr - Validator <$> plutusScriptV2FromEnvelope envelope +getValidator :: Maybe Validator +getValidator = do + Validator <$> + (plutusScriptV2FromEnvelope =<< decodeTextEnvelope validateSchnorrScript) + +validateSchnorrScript :: String +validateSchnorrScript = + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59080459080101000032323232332232323232323232323233223232323232223232322323253353232323500222253353335734666ed400400c00808007c40804cd5ce249167369676e617475726520636865636b206661696c65640001f3333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd406806cd5d0a80619a80d00d9aba1500b33501a01c35742a014666aa03ceb94074d5d0a804999aa80f3ae501d35742a01066a03404a6ae85401cccd54078099d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40c1d69aba150023031357426ae8940088c98c80d4cd5ce01b01a81989aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8183ad35742a00460626ae84d5d1280111931901a99ab9c036035033135573ca00226ea8004d5d09aba2500223263203133573806406205e26aae7940044dd50009aba1500533501a75c6ae854010ccd540780888004d5d0a801999aa80f3ae200135742a00460486ae84d5d1280111931901699ab9c02e02d02b135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860286ae84d5d1280211931900f99ab9c02001f01d3333573466e1cd55cea803a40004666444246660020080060046eb8d5d0a8039bae35742a00c6eb8d5d09aba2500623263201e33573803e03c0386666ae68cdc39aab9d37540109000100e91931900e99ab9c01e01d01b101c13263201c3357389201035054350001c135573ca00226ea80044d5d1280089aab9e5001137540022464460046eb0004c8004d5405888cccd55cf80092805119a80498021aba100230033574400402c464646666ae68cdc39aab9d5002480008cc8848cc00400c008c030d5d0a80118029aba135744a004464c6402c66ae7005c0580504d55cf280089baa0012323232323333573466e1cd55cea8022400046666444424666600200a0080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c054d5d0a80119a80780a1aba135744a004464c6403666ae7007006c0644d55cf280089baa00135742a008666aa010eb9401cd5d0a8019919191999ab9a3370ea0029002119091118010021aba135573ca00646666ae68cdc3a80124004464244460020086eb8d5d09aab9e500423333573466e1d400d20002122200323263201d33573803c03a03603403226aae7540044dd50009aba1500233500b75c6ae84d5d1280111931900b99ab9c018017015135744a00226ae8940044d55cf280089baa0011335500175ceb44488c88c008dd5800990009aa80991191999aab9f00225008233500733221233001003002300635573aa004600a6aae794008c010d5d100180a09aba100111220021221223300100400312232323333573466e1d4005200023212230020033005357426aae79400c8cccd5cd19b8750024800884880048c98c8048cd5ce00980900800789aab9d500113754002464646666ae68cdc3a800a400c46424444600800a600e6ae84d55cf280191999ab9a3370ea004900211909111180100298049aba135573ca00846666ae68cdc3a801a400446424444600200a600e6ae84d55cf280291999ab9a3370ea00890001190911118018029bae357426aae7940188c98c8048cd5ce00980900800780700689aab9d500113754002464646666ae68cdc39aab9d5002480008cc8848cc00400c008c014d5d0a8011bad357426ae8940088c98c8038cd5ce00780700609aab9e5001137540024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6401866ae700340300284dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6402a66ae7005805404c04804404003c0380344d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263200e33573801e01c01801626aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931900599ab9c00c00b009008135573aa00226ea8004488c8c8cccd5cd19b87500148010848880048cccd5cd19b875002480088c84888c00c010c018d5d09aab9e500423333573466e1d400d20002122200223263200c33573801a01801401201026aae7540044dd50009191999ab9a3370ea0029001100291999ab9a3370ea0049000100291931900419ab9c009008006005135573a6ea800448800848800526120014910350543100112323001001223300330020020011" +} +""" diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index ebf22760d..7d99800c5 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -3,10 +3,10 @@ let lib, csl; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@emurgo/cardano-message-signing-browser"); - csl = await import("@emurgo/cardano-serialization-lib-browser"); + csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { lib = await import("@emurgo/cardano-message-signing-nodejs"); - csl = await import("@emurgo/cardano-serialization-lib-nodejs"); + csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } // import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; // lib = gcWrapper(lib); From 812afecaa8fb420b9507a1125b3c81d9bce33bcf Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 9 Aug 2023 20:38:56 +0400 Subject: [PATCH 272/478] Fix unit tests --- test/Fixtures.purs | 17 ++++++++--------- test/Transaction.purs | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 097b8a7bc..bbd8b1e75 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -838,7 +838,7 @@ txBinaryFixture4 = \02ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea78\ \18dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a000142\ \5b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618\ - \201979f41820197fb8182019a95d1820197df718201995aa18201a009063b91903fd0a0198af\ + \201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af\ \1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928\ \eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959\ \d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a00\ @@ -850,14 +850,13 @@ txBinaryFixture4 = \92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc\ \0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a0004\ \0c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f418\ - \20197fb8182019a95d1820197df718201995aa18201b00000004a817c8001b00000004a817c8\ - \001a009063b91903fd0a1b00000004a817c800001b00000004a817c8001382d81e820101d81e\ - \8201011482010115820101160117188c18180a01075820000000000000000000000000000000\ - \000000000000000000000000000000000008187c09a1581c1d6445ddeda578117f393848e685\ - \128f1e78ad0c4e48129c5964dc2ea14a4974657374546f6b656e010e81581c1c12f03c1ef2e9\ - \35acc35ec2e6f96c650fd3bfba3e96550504d533610f01108258390030fb3b8539951e26f034\ - \910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba\ - \3e96550504d5336100111a004c4b40a0f5f6" + \20197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02\ + \515e841980b30a1382d81e820101d81e8201011482010115820101160117188c18180a010758\ + \20000000000000000000000000000000000000000000000000000000000000000008187c09a1\ + \581c1d6445ddeda578117f393848e685128f1e78ad0c4e48129c5964dc2ea14a497465737454\ + \6f6b656e010e81581c1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d533610f\ + \01108258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c\ + \1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100111a004c4b40a0f5f6" txBinaryFixture5 :: String txBinaryFixture5 = diff --git a/test/Transaction.purs b/test/Transaction.purs index e5226eb86..7b0692f7d 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -119,7 +119,7 @@ testSetScriptDataHash = liftEffect $ do -- Verify the hash with some external tool byteArrayToHex sdh `shouldEqual` - "e371f3cfb7be11ad70a88072dabdddef06f656efdaa52da2f68b8df4cac01d3a" + "dde4d4f89151fdbcea51fa4e9edcac89d69febe036a4976b643c713c19b0cad1" where tx :: Transaction tx = mempty From ccc7466364293a6cf0e73cc710ac75b72fdeb189 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 9 Aug 2023 20:40:37 +0400 Subject: [PATCH 273/478] Update the template --- templates/ctl-scaffold/packages.dhall | 8 ++++---- templates/ctl-scaffold/spago-packages.nix | 24 +++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 7f72d473d..96b9652f6 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -207,7 +207,7 @@ let additions = , repo = "https://github.com/errfrom/medea-ps.git" , version = "00981e4ce7249808413a6db8d88d849bbe85245a" } - , purescript-toppokki = + , toppokki = { dependencies = [ "prelude" , "record" @@ -218,7 +218,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "b043e9342463df76972d05981ac4ec25316834bf" + , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" } , bignumber = { dependencies = @@ -301,7 +301,7 @@ let additions = , "prelude" , "profunctor" , "profunctor-lenses" - , "purescript-toppokki" + , "toppokki" , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" @@ -346,4 +346,4 @@ let additions = } } -in (upstream // additions) +in upstream // additions diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index a357a3964..c3cb64639 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -1181,18 +1181,6 @@ let installPhase = "ln -s $src $out"; }; - "purescript-toppokki" = pkgs.stdenv.mkDerivation { - name = "purescript-toppokki"; - version = "b043e9342463df76972d05981ac4ec25316834bf"; - src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-toppokki"; - rev = "b043e9342463df76972d05981ac4ec25316834bf"; - sha256 = "0kkk4xfnkq6fqr30d95i3x4r6z9479bx7v0ama7xf36pr0y26lk1"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "quickcheck" = pkgs.stdenv.mkDerivation { name = "quickcheck"; version = "v8.0.1"; @@ -1385,6 +1373,18 @@ let installPhase = "ln -s $src $out"; }; + "toppokki" = pkgs.stdenv.mkDerivation { + name = "toppokki"; + version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-toppokki"; + rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "transformers" = pkgs.stdenv.mkDerivation { name = "transformers"; version = "v6.0.0"; From 325665b19859bbf3e48e296e9aa717673f5f3d79 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 9 Aug 2023 20:50:15 +0400 Subject: [PATCH 274/478] Update NodeJS deps in the template --- templates/ctl-scaffold/package-lock.json | 2136 ++++------------------ templates/ctl-scaffold/package.json | 5 +- 2 files changed, 316 insertions(+), 1825 deletions(-) diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index dc32a5c5a..d25107c71 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@emurgo/cardano-serialization-lib-browser": "11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -25,7 +25,6 @@ "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", - "node-polyfill-webpack-plugin": "1.1.4", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -68,9 +67,9 @@ "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", - "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -428,6 +427,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -441,6 +441,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -449,6 +450,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -457,6 +459,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -465,12 +468,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -482,6 +487,24 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", + "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "dependencies": { + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", + "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "dependencies": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -594,6 +617,7 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -603,6 +627,7 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -611,7 +636,8 @@ "node_modules/@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.13", @@ -654,7 +680,8 @@ "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/mime": { "version": "1.3.2", @@ -665,7 +692,8 @@ "node_modules/@types/node": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "devOptional": true }, "node_modules/@types/qs": { "version": "6.9.7", @@ -735,6 +763,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -743,22 +772,26 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -768,12 +801,14 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -785,6 +820,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -793,6 +829,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -800,12 +837,14 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -821,6 +860,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -833,6 +873,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -844,6 +885,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -857,6 +899,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -901,12 +944,14 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/accepts": { "version": "1.3.8", @@ -925,6 +970,7 @@ "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -936,6 +982,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, "peerDependencies": { "acorn": "^8" } @@ -989,6 +1036,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1043,6 +1091,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -1106,33 +1155,6 @@ "node": ">=8" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -1142,17 +1164,6 @@ "lodash": "^4.17.14" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1254,11 +1265,6 @@ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, "node_modules/body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -1333,82 +1339,11 @@ "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "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" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dependencies": { - "pako": "~1.0.5" - } - }, "node_modules/browserslist": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1436,6 +1371,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "funding": [ { "type": "github", @@ -1466,7 +1402,8 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-indexof": { "version": "1.1.1", @@ -1474,11 +1411,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, "node_modules/bufferutil": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", @@ -1491,11 +1423,6 @@ "node": ">=6.14.2" } }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1509,6 +1436,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -1531,6 +1459,7 @@ "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1578,19 +1507,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, "engines": { "node": ">=6.0" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/clean-css": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", @@ -1691,16 +1612,6 @@ "node": ">=0.8" } }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1743,45 +1654,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "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" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "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" - } - }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -1804,27 +1676,6 @@ "node": ">= 8" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -1904,6 +1755,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -1946,15 +1798,6 @@ "node": ">= 0.8" } }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -1976,21 +1819,6 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2051,17 +1879,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -2122,26 +1939,8 @@ "node_modules/electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "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" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "dev": true }, "node_modules/encodeurl": { "version": "1.0.2", @@ -2164,6 +1963,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -2193,67 +1993,11 @@ "node": ">=4" } }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "node_modules/esbuild": { "version": "0.18.11", @@ -2322,6 +2066,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -2336,6 +2081,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2348,6 +2094,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -2359,6 +2106,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -2367,6 +2115,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "engines": { "node": ">=4.0" } @@ -2390,19 +2139,11 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "engines": { "node": ">=0.8.x" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -2531,7 +2272,8 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-glob": { "version": "3.2.11", @@ -2552,7 +2294,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.14", @@ -2604,14 +2347,6 @@ "node": ">=8" } }, - "node_modules/filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", - "engines": { - "node": ">=8" - } - }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -2662,14 +2397,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2721,29 +2448,14 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2752,6 +2464,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2773,21 +2486,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2822,7 +2520,8 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/globby": { "version": "11.1.0", @@ -2847,7 +2546,8 @@ "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", @@ -2859,6 +2559,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -2866,18 +2567,11 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -2886,6 +2580,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -2897,6 +2592,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -2908,6 +2604,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -2918,28 +2615,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2949,16 +2624,6 @@ "he": "bin/he" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -3136,11 +2801,6 @@ } } }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -3275,19 +2935,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -3316,6 +2963,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3327,17 +2975,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3350,32 +2987,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -3392,6 +3003,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3426,20 +3038,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3452,32 +3050,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3487,20 +3059,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -3547,6 +3105,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3558,17 +3117,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3581,63 +3129,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -3675,6 +3166,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -3687,12 +3179,14 @@ "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/jssha": { "version": "3.2.0", @@ -3715,6 +3209,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, "engines": { "node": ">=6.11.5" } @@ -3745,16 +3240,6 @@ "tslib": "^2.0.3" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3785,7 +3270,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -3818,23 +3304,6 @@ "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -3851,6 +3320,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -3859,6 +3329,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -3878,12 +3349,8 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimatch": { "version": "3.1.2", @@ -3956,7 +3423,8 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/no-case": { "version": "3.0.4", @@ -4025,47 +3493,11 @@ "node-gyp-build-test": "build-test.js" } }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", - "dependencies": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, "node_modules/node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -4104,6 +3536,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4112,6 +3545,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -4127,27 +3561,11 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -4215,11 +3633,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -4281,11 +3694,6 @@ "node": ">=6" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -4296,18 +3704,6 @@ "tslib": "^2.0.3" } }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4327,11 +3723,6 @@ "tslib": "^2.0.3" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4378,21 +3769,6 @@ "node": ">=8" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -4401,7 +3777,8 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -4465,14 +3842,6 @@ "renderkid": "^3.0.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4514,24 +3883,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4545,6 +3896,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } @@ -4627,23 +3979,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4668,19 +4003,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4760,6 +4087,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -4880,15 +4208,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4934,12 +4253,14 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -5005,6 +4326,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -5087,29 +4409,12 @@ "node": ">= 0.8.0" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -5147,6 +4452,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -5186,6 +4492,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5194,6 +4501,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5284,58 +4592,12 @@ "node": ">= 0.8" } }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "safe-buffer": "~5.2.0" } }, "node_modules/strip-ansi": { @@ -5363,6 +4625,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5389,6 +4652,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -5423,6 +4687,7 @@ "version": "5.15.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -5440,6 +4705,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", @@ -5472,7 +4738,8 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/through": { "version": "2.3.8", @@ -5485,17 +4752,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5523,11 +4779,6 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -5541,20 +4792,6 @@ "node": ">= 0.6" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -5605,6 +4842,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5630,37 +4868,11 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5699,15 +4911,11 @@ "node": ">= 0.8" } }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, "node_modules/watchpack": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -5729,6 +4937,7 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -6073,6 +5282,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, "engines": { "node": ">=10.13.0" } @@ -6115,40 +5325,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -6188,14 +5364,6 @@ "node": ">= 6" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -6229,9 +5397,9 @@ "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.2.1.tgz", - "integrity": "sha512-+Rw35NW4Qv/9uFaPxhKtxiIPmoBEIFMAgdqQxZTw6hNT/wvBp2TvwTBPnOW8ODs7GUAA8nrO1rJJAaxF+mAG2w==" + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6391,6 +5559,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -6400,17 +5569,20 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true }, "@jridgewell/source-map": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -6419,12 +5591,14 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -6436,6 +5610,24 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "@mlabs-haskell/cardano-serialization-lib-gc-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", + "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "requires": { + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", + "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "requires": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + } + }, "@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -6527,6 +5719,7 @@ "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -6536,6 +5729,7 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -6544,7 +5738,8 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true }, "@types/express": { "version": "4.17.13", @@ -6587,7 +5782,8 @@ "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "@types/mime": { "version": "1.3.2", @@ -6598,7 +5794,8 @@ "@types/node": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "devOptional": true }, "@types/qs": { "version": "6.9.7", @@ -6668,6 +5865,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -6676,22 +5874,26 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -6701,12 +5903,14 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6718,6 +5922,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -6726,6 +5931,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -6733,12 +5939,14 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6754,6 +5962,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -6766,6 +5975,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6777,6 +5987,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -6790,6 +6001,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -6821,12 +6033,14 @@ "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "accepts": { "version": "1.3.8", @@ -6841,12 +6055,14 @@ "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, "requires": {} }, "agent-base": { @@ -6886,6 +6102,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6926,6 +6143,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "requires": {} }, "ansi-html-community": { @@ -6972,35 +6190,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "requires": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -7010,11 +6199,6 @@ "lodash": "^4.17.14" } }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -7081,11 +6265,6 @@ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, "body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -7152,82 +6331,11 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "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" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, "browserslist": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001358", "electron-to-chromium": "^1.4.164", @@ -7239,6 +6347,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -7252,7 +6361,8 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -7260,11 +6370,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, "bufferutil": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", @@ -7273,11 +6378,6 @@ "node-gyp-build": "^4.3.0" } }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -7288,6 +6388,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -7306,7 +6407,8 @@ "caniuse-lite": { "version": "1.0.30001358", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==" + "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "dev": true }, "chokidar": { "version": "3.5.3", @@ -7332,16 +6434,8 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "clean-css": { "version": "5.3.0", @@ -7424,16 +6518,6 @@ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -7467,47 +6551,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "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": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "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-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -7527,24 +6570,6 @@ "which": "^2.0.1" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -7606,6 +6631,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -7633,15 +6659,6 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -7659,23 +6676,6 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7730,11 +6730,6 @@ "entities": "^2.0.0" } }, - "domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==" - }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -7780,28 +6775,8 @@ "electron-to-chromium": { "version": "1.4.167", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } + "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -7821,6 +6796,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -7838,55 +6814,11 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "esbuild": { "version": "0.18.11", @@ -7937,7 +6869,8 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-html": { "version": "1.0.3", @@ -7949,6 +6882,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -7958,6 +6892,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -7965,14 +6900,16 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, "etag": { "version": "1.8.1", @@ -7989,16 +6926,8 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "execa": { "version": "5.1.1", @@ -8101,7 +7030,8 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-glob": { "version": "3.2.11", @@ -8119,7 +7049,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fastest-levenshtein": { "version": "1.0.14", @@ -8162,11 +7093,6 @@ "to-regex-range": "^5.0.1" } }, - "filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==" - }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -8197,14 +7123,6 @@ "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -8242,29 +7160,21 @@ }, "function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -8277,15 +7187,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8311,7 +7212,8 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "globby": { "version": "11.1.0", @@ -8330,7 +7232,8 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "handle-thing": { "version": "2.0.1", @@ -8342,24 +7245,22 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -8367,51 +7268,24 @@ "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -8551,11 +7425,6 @@ "micromatch": "^4.0.2" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -8642,16 +7511,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -8674,19 +7533,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -8696,20 +7548,6 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, "is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -8723,6 +7561,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -8739,14 +7578,6 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -8756,34 +7587,12 @@ "is-extglob": "^2.1.1" } }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -8815,61 +7624,18 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -8901,6 +7667,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8910,12 +7677,14 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "jssha": { "version": "3.2.0", @@ -8931,7 +7700,8 @@ "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true }, "locate-path": { "version": "5.0.0", @@ -8956,16 +7726,6 @@ "tslib": "^2.0.3" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -8990,7 +7750,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -9014,22 +7775,6 @@ "picomatch": "^2.3.1" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -9039,12 +7784,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -9058,12 +7805,8 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "minimatch": { "version": "3.1.2", @@ -9124,7 +7867,8 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "no-case": { "version": "3.0.4", @@ -9176,41 +7920,11 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" }, - "node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", - "requires": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - } - }, "node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true }, "normalize-path": { "version": "3.0.0", @@ -9239,12 +7953,14 @@ "object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==" + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "dev": true }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -9253,18 +7969,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "obuf": { "version": "1.1.2", @@ -9315,11 +8021,6 @@ "is-wsl": "^2.2.0" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -9360,11 +8061,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -9375,18 +8071,6 @@ "tslib": "^2.0.3" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9403,11 +8087,6 @@ "tslib": "^2.0.3" } }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9442,18 +8121,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -9462,7 +8129,8 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", @@ -9516,11 +8184,6 @@ "renderkid": "^3.0.0" } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -9555,26 +8218,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -9587,7 +8230,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "puppeteer-core": { "version": "15.3.2", @@ -9638,16 +8282,6 @@ "side-channel": "^1.0.4" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -9658,19 +8292,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -9734,6 +8360,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -9817,15 +8444,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9843,12 +8461,14 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -9903,6 +8523,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -9972,26 +8593,12 @@ "send": "0.18.0" } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -10020,6 +8627,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -10052,12 +8660,14 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10130,26 +8740,6 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10158,26 +8748,6 @@ "safe-buffer": "~5.2.0" } }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -10197,6 +8767,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -10210,7 +8781,8 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true }, "tar-fs": { "version": "2.1.1", @@ -10239,6 +8811,7 @@ "version": "5.15.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -10249,7 +8822,8 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true } } }, @@ -10257,6 +8831,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", @@ -10276,14 +8851,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "requires": { - "setimmediate": "^1.0.4" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10305,11 +8872,6 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -10320,17 +8882,6 @@ "mime-types": "~2.1.24" } }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -10366,6 +8917,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -10375,39 +8927,11 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - } - } - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -10437,15 +8961,11 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, "watchpack": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -10464,6 +8984,7 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -10687,7 +9208,8 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "websocket-driver": { "version": "0.7.4", @@ -10715,31 +9237,6 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "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-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" - } - }, "wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -10762,11 +9259,6 @@ "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index de6c65827..ee21a7b72 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,8 +27,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@emurgo/cardano-serialization-lib-browser": "11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -41,7 +41,6 @@ "blakejs": "1.2.1", "bufferutil": "4.0.5", "jssha": "3.2.0", - "node-polyfill-webpack-plugin": "1.1.4", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", From b462b658ac7b5bd3ea3e07fbb733cc9dcff1a249 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 9 Aug 2023 20:54:17 +0400 Subject: [PATCH 275/478] Update CTL revision in the CTL template --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index a3421472f..4d3c688e6 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -2757,17 +2757,17 @@ ] }, "locked": { - "lastModified": 1688727102, - "narHash": "sha256-qeYJOsLWEI3byvvcUqm9Z6LwCs4NB7JFHRHTwib2ET4=", + "lastModified": 1691599815, + "narHash": "sha256-i7t+KgDAMCaYqqF+BdBAsV1B4/9gFr11Yd9RpxF10JQ=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea", + "rev": "325665b19859bbf3e48e296e9aa717673f5f3d79", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea", + "rev": "325665b19859bbf3e48e296e9aa717673f5f3d79", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 023907d1a..cf1d5cfb0 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; + rev = "325665b19859bbf3e48e296e9aa717673f5f3d79"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 96b9652f6..7b8dccb2f 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -328,7 +328,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea" + , version = "325665b19859bbf3e48e296e9aa717673f5f3d79" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index c3cb64639..ae7055f70 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; + version = "325665b19859bbf3e48e296e9aa717673f5f3d79"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "ef1441b9a401586c8ecfb3d8cdbbb42d4bcda3ea"; - sha256 = "0ghiyqkc5lqi3m2v41qdrq5g18k7pnlm5p7vrbdqs46nq8x0krm9"; + rev = "325665b19859bbf3e48e296e9aa717673f5f3d79"; + sha256 = "156hfl8sflfzc5svs5k0zzil2pdi8380azm1mac2cc6000m7xfwb"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 5357a71e1f526111d8e582aa41334fd62c17732b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 10 Aug 2023 19:43:49 +0300 Subject: [PATCH 276/478] Mark Lace as supported --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0852dda31..0e79291f2 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Support is planned for the following light wallets: - [x] [Lode](https://lodewallet.io/) - [x] [Eternl (formerly CCvault)](https://eternl.io/) - [x] [NuFi](https://nu.fi/) -- [ ] [Lace](https://www.lace.io/) +- [x] [Lace](https://www.lace.io/) - [ ] [Typhon](https://typhonwallet.io/) - [ ] [Yoroi](https://yoroi-wallet.com/) From 174324f5b52c6a08631bfbd6877b9d79647d1698 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 10 Aug 2023 19:46:02 +0300 Subject: [PATCH 277/478] Update README info --- README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0e79291f2..6a8fb1ab6 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,8 @@ Support is planned for the following light wallets: - [x] **Stage 3** Once we have a simple working transaction, we will seek to build a Plutus smart contract transaction with datum from scratch - [x] **Stage 4** Once we can construct Plutus smart contract transactions, we will seek to build a library/DSL/interface such that transactions can be built using constraints and lookups - as close as possible to a cut-and-paste solution from Plutus' `Contract` monad code in Haskell (but with no guarantee that code changes are not necessary) - [x] **Stage 4.1** Investigate supporting compatibility with the Vasil hardfork and improvements to our initial `Contract` API -- [ ] **Stage 5** Once we have a basic `Contract`-style API, we will further refine its public interface, expand wallet support (see [below](#light-wallet-support)), expose a test interface (**DONE** - see [here](doc/plutip-testing.md)), provide a more ergonomic JS/TS API, support stake validators (**DONE**), and support CIP workflows on the public testnet (**In progress**) -- [ ] **Stage 6** Once CTL's `Contract` interface has been stabilized, we will add support for even more wallets and attempt to deprecate CTL's currently required Haskell server (**DONE**) +- [x] **Stage 5** Once we have a basic `Contract`-style API, we will further refine its public interface, expand wallet support (see [below](#light-wallet-support)), expose a test interface (**DONE** - see [here](doc/plutip-testing.md)), provide a more ergonomic JS/TS API, support stake validators (**DONE**), and support CIP workflows on the public testnet (**In progress**) +- [x] **Stage 6** Once CTL's `Contract` interface has been stabilized, we will add support for even more wallets and attempt to deprecate CTL's currently required Haskell server (**DONE**) ## Architecture @@ -90,12 +90,10 @@ CTL is directly inspired by the Plutus Application Backend (PAB). Unlike PAB, ho - This is handled by `cardano-serialization-lib`, a Rust library available as WASM 2. How do we query the chain? - This has been solved using Ogmios & Kupo - - We [will support](https://cardano.ideascale.com/c/idea/420791) an alternative [BlockFrost](https://blockfrost.io/) backend as well in the future -3. How do we query for datums (i.e. the datums themselves and not just their hashes)? - - `Kupo` solves this problem -4. How do we get wallet data? + - Thanks to [Catalyst](https://cardano.ideascale.com/c/idea/420791), we now support an alternative [BlockFrost](https://blockfrost.io/) backend as well +3. How do we get wallet data? - This is done via browser-based light wallet integration in the browser based on CIP-30 -5. How closely should we follow Plutus' `Contract` API? +4. How closely should we follow Plutus' `Contract` API? - CTL's `Contract` model is **significantly** less restrictive than Plutus' and allows for arbitrary effects within the `Contract` monad - Certain features cannot be directly translated into Purescript from Haskell due to differences between the two languages - Some of the Plutus conventions do not make sense for us, due to differences between on-chain and off-chain From fd65ad4741e202ade226f0f0dacd07c3f31cd0c6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 10 Aug 2023 21:55:28 +0400 Subject: [PATCH 278/478] Update the template and docs --- Makefile | 1 - doc/e2e-testing.md | 2 +- doc/images/e2e.png | Bin 113042 -> 107703 bytes doc/importing-scripts.md | 29 + esbuild/config.js | 1 - examples/Helpers/LoadScript.js | 12 - examples/Helpers/LoadScript.purs | 14 - examples/index.html | 60 + examples/index.js | 59 - package-lock.json | 2881 ++++------ package.json | 16 +- packages.dhall | 2 +- spago-packages.nix | 6 +- templates/ctl-scaffold/esbuild/config.js | 1 - templates/ctl-scaffold/index.html | 61 + templates/ctl-scaffold/package-lock.json | 6222 ++++++++++++++------- templates/ctl-scaffold/package.json | 14 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- templates/ctl-scaffold/webpack.config.js | 3 + test/ApplyArgs.purs | 6 +- test/Deserialization.purs | 13 +- webpack.config.cjs | 5 +- 23 files changed, 5721 insertions(+), 3695 deletions(-) delete mode 100644 examples/Helpers/LoadScript.js delete mode 100644 examples/Helpers/LoadScript.purs diff --git a/Makefile b/Makefile index e7c7db1d6..e985f148d 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,6 @@ run-ci-actions: nix build -L .#checks.x86_64-linux.ctl-staking-test nix build -L .#checks.x86_64-linux.examples-imports-check - clean: @ rm -r .psc-ide-port || true @ rm -rf .psci_modules || true diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index 242bff4df..402388558 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -214,7 +214,7 @@ Note that the test closes successfully after the first successful `Contract` exe CTL offers a function to serve the `Contract`s to be tested with a router, that dispatches contracts and configuration parameters based on query part of the URL. -It also builds a page with a table consisting of links to all possible examples with all possible environments, that looks like this: +It also builds a page with drop-downs, allowing to select an example and an environments, that looks like this: ![Headless browser test suite - served examples](./images/e2e.png) diff --git a/doc/images/e2e.png b/doc/images/e2e.png index 7af557e9d33eaf6ad222910d39c40564763850d7..178768b5f9c90732c388c6d8d16a0f74dd0be58a 100644 GIT binary patch literal 107703 zcmdqIRa9Ne7A;DG1$VdL?(PZh?(VX%z``}SE+9Z~Cs=TIcXyYCySsBaXYbS6d;jG1J%54ucw<%RIr?#d0*Xkh zefc=NznF!6JmWcwYdNbrSU9^GJDEdR+B?{pGXhPW%+2kARu0bRkR3uFMvVV45_K{+ zcD8n~|EgwfXAYrhZuXUh_v?2T%dc!KZ0uiIS@<|O_*l5UD#?GPXW_`8HvS0#@fAW^ z?7NzK`pKG`H|YNT{c^xXLE#QP`~(*cy?0$#xn*|!Z&4fIH=Vd_ahndK3}{j2G`Bwa zyPXL_3R(CGupCShJ}5SM_4sCRzrxtSHPBRk>;sAi3Rc{!kdbw(1)++3A^kXo*;=i; zefr;%cOwM{{C{45d>i}~B=PSpDsS8*&A&EelIZxs{}$en63P2tJ%rL$nEzDyYFmc~wme!35_)a>g0MK4YTD&M*#73CL;cs~ERu8w z+bij8MwwSIrPmzQSc(}o693YXD~Wj>3?aT(k{ z4bs~Z&&dI>rCljNd8I!N@2Ji&e?BijaM#fTIR6osrk~y6$rU+sntJDX7l{6PU;*`= z8}h+xn|ZXHFM)DIQe{m+T6eluj=Dc-3J8oAJ{H=UEOOl5?gC#qcH4JrobD{^YQFb5 zZGzAq+fSsKbPGyfWbZ<{QE`p2tgtNw=U*2FTxV& z=<^Uap^z=p;{iog*q-fJFtEq|qSf=zmMHsAci&SU`?SR+9T`Ry^3fU7S5&d7T8)CO zXfU4LTdfvS3A;C~vu0chgcXr~rpg^m;oaaKj!hY+nO2xBb-x?NF;$*_`w?QQm8~MK zmr3%iMh5ZG4hh65q}7^*{x5LEqSxCM^OS`EQORO%6*rGF-xiUDT|+y3X2#z=LTEC@ z@Tc3djf~B^A{p$WWK;NNnRai4wb`lv!Pi5_=^A2C9=%L>E*>9iE){rxya%No?Z{6` z{PzjNzcwVd_H+%iG-P>fl;j{r*LsH(>39*i#pXD5-8;vZ7o;<2N%V@N%E4{9E)(k=_pp##dX-6? zv}@1mQtpJ^GFjG}^Io}kBav$(A&LnuSdm!PaO3tyJl(Z1rkL2k}lO>#w;Q@-H_b0Dy|&&dW%=d0Ti znfFPv3F9W{018sVLSvD)DXv2a&D(oKsS2QvKT8{6w>RV9-konpuT^i1A_-aU$V?Fd z)t4Z^6ilOBEL7HfpKT{D>3oPi1y1f6n4?CE^?0G~Ay4FRGnPK8z;B6u(9aYto-3oh z-R)u^UoUuh);l5yd>ckQn$PSGmOGy1aW;Mxt|>A_j2+ApY+1-qoC8DAdQreD&j#usEfUy09>AO?suwM34ab?Q*S(X|pSMegP zt_yJVgS93!1v^Z3`wDT@pye~Syr=W1`xpXv+Z`EUk!^Qg{N))^^)tE<{4CV$B-tc| zL?2i!?vBQ80%N4qK8XjqY{neS76}k1!U+hp#mm!MT<>3Ld+P!aVefsz?~nH+`qI(I zyk_*5hL1YVb7)t8D%>I%2OwwV_GgbNu4VdEf!Z^yF*O*Y)mLWzMj^pxyA+4Dq5rye zjXSTdUr-8p!4q>r=1c_KcqAge1voT7p_c^Y0{@5{ug@}OZ?5~hl-`3!#@M~I+l;tC z{Y)ml;48d<#HSq^aNXf>dW|A0M1=S!K)t=9xuRDTMo*K=9&^2&?hsg4<6 z>gn`AqX42_!ZAqi-g5tL?BTsG+&uELmhUxAY5{@MJn9v9yzu$R>b5aO2|RvFThqhxl*&ttMj#ynf(5*t`fLX zp5DoL8Oy&a?dic9HNI1tEN`D{_*_kfiw|ZA?2$Z#Q@f*o3(}-xvxUs;FEDZ7w`Exc z3MFyh?zv;t?Ct%5#Z5XJspbT$43PTp(8)zsP)(AJ(3Ilq9iy0a8&%+tYJyDrhic?x z1O^xR467OUJj7T~t1k)KkzI3-N1L3>jw0TcC8)f4<3*>69i&_PEA&@b_Kd`29u1F>|uyI_ADId!>K} zx%4|ms-jjGW2k(%FjDIYh&k||7(wXw=uNJYA(IDcg(Tqi&4c18KY5GAh=k5B67ILU zW9{Kstg`o+4&`q$`xb`RZr%mKrV}h>qTCkHf999139Y#uOpn?RtW~pl=LViI9Kt9z z_A{NwuBlf-l6s+(2mzD(EBF*y8J(G9hoX5{SS@}%e@62P6VHbqu7>ndJ;RWAgCszr zj8DG0pr7G>RlEa}R&q6c_g~(3(PVWJO?z{2I2WYfY?f4?>A4ghZq2}-_p zWl&(vLVaF9DJZFd_3GE`6~GzL`p1Q>4w|bQkqrza^sSF)wmz=X?C3@&2JQhjjL{>S z5X@7NjP?q))7LnEg)liJ47jba{Qj z3-t$@UC>{4faTixCX&ie0{W2WuWWPY7bB6)35lsDCHrlVf2AmRreF+3kAW?!j)2Mx zKC0!rLh6G z%d(yCOZ$PfY z{x`6>6lPA6mW;G1J43`52>brpk?qwYp+;v0(okmYg+Z&dBQ^DOE1ck_=Owzc2;9IW zejlnPI<&FJl#9g9GYUZj$QYl$90ID<;_M%)UZenXs#ogs6+-fQ&3ozi#}R7RV+BN6 z<4F>y0M)t#SnP^9VY!LzHB+l4YbNf97?YkTa~B5ot24QG7>}7?9!BxzG1Jo{ zM{ir73>W%nw0K|P>&J}@ZXXZKlL$;wp91ym@ygZntc2{Mezdf=Z&*ut*{Bg0E(R4Db5!P zLyI;;h|5D)@na2$80SL0<1PP^Gx5#2#q9^X_Sdd)yuXZUAVB${LV8?igt|A|O`n=+ zOpW>dwjQ?+)<3SwWw$y)K2kE!KT1|uF%Q3I&c*aVXg0>?5@t)3soHc?>20|d1ZU%y z7gMn`qLD0a@>BQ|+#&zDbtSNJWY$nQFhg`bDtrO8>kxxms{AJmxy0?@0Px z;Wk5fNtJG29SS5rrMBMf%ykCVipGtu#TUBU(ty&qgvHzBl|H^Bf~BW|@w{7dmS4Chns|)(voJsa2n{b8}H{_xE$`v^Ykgp1XI8bdJe| z?5EQ$=HR!?pG~AW$$ri>uoEF5lte-HS&db3sBUSs*S#U^IYnK5N`h_Eq9E&Q|SxO8xTrsc+zZCx2Nxpk6nX@G1l&GrgeJKm@_unWJ zwVE1;A-JT=j`LoKAvG+Q#pz$?WQo+y zgbP8*JO*={ooqcHm`5cu%Tq2pDoL1GyzB&RX{$AX;IMF?=a1XIT zoP>5SQjB=aB&S#c%5A>#F{F>K@&B{Na@Sm+^1kA0P2SJ#P6d0%_dp*`SS4nDp4q^qM!b;M274}j(GF;Ox+z*+lon) zgdMT3Zx%IqOY)e-G}a@!YQ!TXx@*ZCzR1TfBo^?e6ANe~r)$E~yiybOf_b!QO?jLA zxr^LJ{q>ygzWl#}b(v99lh@u3JUq?Wx0i#n*IL5Y4VDG~AW>`lxjWCpudMh4icXq1 zZ<*$9_ClRHD*wzYegpjQplrt<-9o^&e9~me7~sr`3~5Xah6Q}p*Z*}yo zn$g(Myb^Z&Z)p>Fuw^1oymW|FQv&Q4*e)eHdb-Rz6Tu`H0wuiih3T6q@VI2W0>#4Y z^!DazDeqjqR)qRLX6f|g8nOT)pW#vhf>Tkmb~!=u^vo9Bld%mi`=jgYAZa&99_Nj( zp(rGK8#(cMD6(>HC+b_wjN1*OqO`igp^wDiPZ_d|Fz?kdzN(PCE(Z?C#C+X3fuX!! z&$QBqcRi>s0e$onGutcGR;NT&3!e|^MCyncA6z#f1i(M!3N&Rs27d|F6#q@#)sdHx z@vX7M4u>mN?Q3-(Ld8k5wwFTExVwAtvK0NVD|>lAJ54JrU=s^!OD_0ocgnT6yi<lu{}A{P(D72MX3l)_iQ%$8d8bc&2}0> zDv*F!#>Sefln=i%0|B70oFBLBx=W+T>!b7YNOdOYM~Qsjc*ws#NmkQcT!4)z za&jQZLRaZG^?pMQpihP?3wf-TS%!)340DuWjJ;i$mQ}P8`u8BUBAABbC@|1HeKVEw z;$f4VtyW6I8IyVU`YiM9zs>dK*U$%yJnc`H`+m!e`dEjfT|Z9o%NgUxS*8yrPfJnqU$JEA5D7&B_2xNp7pHbs&L3yTXihDJ4u>t~)5GPxA~!d&=Lx;< zOoW7hhA^YJQiru?emVleS)-FqhkLcM?SWut;mrM936);(3)&f#TUtM}|tDn~Wc!C3A?iJ!63+^I+na%aam+E_E)UL@j4?W!$8bBe* z69c>jf1d@j&G%A)b;h}C6yuw!IS${<%k#aItNtnk9wjob8|{4WLge)R7%SZ>(f)5- zuw1s56X1Jk-?eYZvF;&{hRpi_y@G}93Lq=Xp?FzFzyA}`NPaXvK{Caj~@Ga zc8#^{g_YB8`c!wCQXwiNpkZczVRm%_W5Rtbj!J3N5X~*nV2r5%gLYpyQ+H* zTt-W#6!dQ%5u}eW2>e`|#-aU~>?nH&Pn?9_CJ>lW`hd$_MPc^VI7+e#!O!@9FFeK<>jNR--<$B6m-snq)uxrzL?%8+j~1UVVfU$i)_m3^2W`0cH1gN zMNB%GSq>++nxq+XS=rIg_(++;o1JA9(#yr{5-7pko4t_u_x`<1&s>ez<6c&7fLLAY zNOUPwc?zPlfVSp4!`buM6isxrMO1!Jd<`0IA(*Ung z3{aZdz`zut&koV}$$IztzG{?JDa~UaVLx}Jg04(eabGVdg4DqsB|Vdb>9>j3+qPmC zQ+mc@tbr+-)RjWlDwlU8bioxC%ONEhOFq;HdHrQ>N2B|Y*o0#>kmY++mt3oE!sJ?q zBh7jQAVXJ$=T?BmRUS{U8b5S^Siw5e?u+^9PYVG%4d_D4q$Ls~1rQAJ>e}0uaR5Fr zaTlZCak7l*)pJ3{nkpSh|F`QbN~%Pp3Puf=gSy;>EqmIop}P0sH{pNC(pE-FGBSqk z*CL_VCZv+<)0BlGB4tbt9U_aw`bGXGy0>YQ zIkR^@QXd~*l;HbidWYq6eW}qdi5IW$8K0YIW}FdA_v$$GgvoC4QX{86|7_pP6{Wuz zXmig%*w?Tlvd5AMNPhq~aicSO-Kf;4#)>|1^4(3f*&OI5cKBkY}8Vu*Op(T)>I$q{yDFjcn8aUY3gffC~YsSbv_ zyDcRBOMTUOukfljs)RGy0mG@|HQo2!nAFK~S%SYUmc(q7nf##*mDiJafT#xWEe*E2(r7 z=j$aaHTT>2Fyr$@$B%ee<0%SjxysRPxg3+-qNzrrESFMwf5Lu7l|1Gu`#lCm_1uCx?BOX(lz%v8lt2 zM`j8Rub;WCalZcdH|vo9AH{&ecAu> z9(ugiZ1NL+@WBxeLy2o?Ahl>~BC)F!0^BXI$=IbaMOIUQkPcfh>Q>K>cV89* z19aSAcP!=#k?A1aFQj6rr9Sxa%Isks=&;1{ zRXWpfHmmo7F!)W>@@_* zJ_=HN5lx40_B$t#@^KG8lvi|Or`>hSyZW76TZ`-ZzO+~g!vr!MX$4&tLEy6k7yz>S zbQOjWx7N6ld$2!@{JwOdc}A6vRWWZ#^)b__bOgY?AA`XmEy6Rk(^@YWs=nOid?_=! z9i8(1=l`zy0~0wpbTs=*&mC`opILAXpd?2~_>Il3BM#ztSpZkr$19&QZs`-*#cCQ> zsODjDtKZ$AIrxYy?lc;cuCt%^`)Capc^IW=qYa!5&qY?}A{lUj@drr`r-s>GC4Q#; zF45E*E&8@dgS%THG{}f6W6SIoYWVl8K7Vzy*PF(klr4FHITW`-*^|l6r`Ud{k==s> z@t!WF243UXAX!~sKBdSa1cZY{Kct*@04=x!wNUqLG(JGU4&`Wc zNv9y-l5>VbMEm}C;?D0>lsW4^0^bJ$s+;x~a_oelM!uU*T481`@bpJ%iC@hm-6)PS zu^{6IiUS)o!A3R=MK?a|{pIh;67Bfk0wwRCyxVekO}RNNOARq#6lf)PU*J|(U85<9 z+^Q(Q9`;>HP%V1xcJ+eb(80A;0Z6PI5L{B7a#wX*Yk#cC-Sym$&YtzAC^KC0}6pHeApL~ zY(Ma>2hPp+m)B$Gg7J%OwH?^S^9NC8Fl_h54-$laq|M{Gg}1(A70RoJiKvsc;6q9D z_qwt$wWl=Ol-aDz9!=o!doKyW$5?pB*-=t9i>epr>T=vUItesQ?6ius-@s+iY3#7r zm@?Wm4)vN6SWGQ!HQBO?Y-!LRRt)#XwAm0{3BI*f(L-?DJkduTjMvLgL`m9oL{vn~ z=1DfqaFyU_tSyqtJF*~AvwC@tn~x_(NWADt$a*yYSs`anCxrXN-|~37Fn7{^Md60x z=p;^gwMtU@W=f*jZJ1#a7jVa3XsG%Z`@VB*F8s6j$h7^GdE9&5)hmf<;~2PPzUq2b z-(=S#{68~5udEJ^1qNY--3UG*5I!oa-QH*vIs>VFu1xvo&PdMcdxsNFoNXtB6{h&- zE!g2)DRR$Sd;bcK_!r?3RF7y*jFy?&zbFR83XQwWKOJ^GopE{KI)G?9Pj71%KW`yz zRLf5wT-z+5^|z|dt#!t5NEC7OGEN+w91Dz;4gYcjCSt8^cyaFhH3j>!OaRa0a!XE- zBXp;S>_1QiS7vho%9^$B*5Biru52s;iDg|-?|(Eq1Q8(Je61yXslDLq4Y~sf(LK7m zs%B}do{0F^>nrf+k zU?eRt*tzRsw(IPAqtq(X=Rc9}IwAW{Z5zT1!%OtzV}6?>VA;81QULjOAA;XEFAQTE z-@j&3kgHx{JN{7{LHB+M7ff6dw-Oa_tJmA97`t!u6%4Tq#~&pu{c-J*>+YjS=Vumk zD=Qho`2%<)VNn_;t%;FsG;?R#{>%|}&i5{QasAwx@qF09zU#*sEORx-Cy6|}GEz0W z=YelY5@OFBIMqL6Yv2;Yf4?m~9mv)5tDOe!f4Kmi!k(Gwt>b4{{(1r=L-Dv+7+wVM zYV?DWg5ETniDQeB3l3G!NhRrm7~gv_1o7z+2z}CNlsmp+9r16Qlnk*gD&6!8-hdyx z-D(rEmck8g!6)@fNc!K?;zXCSV$a040dj&hDF)@m)ReplswI1D4!a636)WRY5A|dOgJn>MIajA|EfwD z+Ki9&cKxi5KTghq_pPgS*8z&jK4K_x8pFjJ18DiyKX01UNb>9F{BlY+Wr@mrJa(523mi&@c2Fo{Ti~^Vcd`%Qxr1&(V=)z@7b;1sS1gCPwGoFmYS@zXlb}nCKyE0l0~hOv1#v!(kxTMtad*BS+&}WQR3^`eogG-2Rzp z#PikKkgtIrM0v2RPAq}#ajNsp=KzUm)jLZ2F!82zGh#eeO74JYoJ4SNImK&fqapAx zEorj7GgKQ)(`T|I+{Q5}%BgbHF3Hb^A`o@)AH!7_Omy_mFiSPZB{84d=YlX3vA` zw0Ssqstk92=!){Wv@1{22WBbD>`;*v^SznxRuH_#B)%Ir~Ug4&hveWQmY0Ue1DLW=L&h|hpIqf&%87c z&=jLQoRocAdgRV)j-Q|R~14pd;Fx-DU;HEd5-WJJH{!g3ZYV5E4gd~5-m46%Qis9gyKb+t;{Ox@S%SRigpQkekyhUzL1OCLWIcgjD zmWTnl>2`*0KB>}Vc8OByT_H>9J|Z%|#+|Q|R1ow~HgH}jj91x+4 zpkv9I1FozFwoC%c_m!3tQE^Fl@5_LL%_W|4%tUkJ=B9nP4;l`@S2Zh|Bn|a#!4aDo zS#jZ9Vj{y3d8^?ZFA-G2x^YbAj#EVzQ^J^uBs1fsA*~16n6sNl6yWy@cahCf1^^(N zeN#~uy6buN*hN@b$+I+x_0pYbe)dnJCv|(M_zH|pT9?w^dRV9Wo_!Z$EK;-wZlqF+ z&My=mhdI@zD`gpE*iA=!oJ^^{@ZFb&wI`c-Hz;9b;LkDUAOtbJvQ? zn|34=n_9?-36hG06q{vaU%F~JYo<7Ywl{P4LEbB(QKyiIJWqfaGfJqZidy|(wFbKn zp7&1)=V(YVWahe%dyBT^wQ>0VMnxnKfo8HjI3`~n%RwMr|3kMD^1)^>);e4$MViLW zz0Cdbac{XKkUnUmI zOk~%-Hq``RO~iQRsCchBkotl(B!PC6kT49g`U+j$#VqUVk5%k2m_R~7pNmWB$4jQ< z``rP^NwD_B%NWX(k3d|C&#`iIEIreic=5C=!$?6xw@?qsr{9Io12e!Y)=X@o&T8`> zYmItT`wxp%3&Ij?mma|_)OeWjU6JVz?4KQacngP_sY`Cs%?-Z1h?-i5%J0pR;0%r* z`aJxRQHF19+R(11D+_(=t=cFZlbo|8I6TY5ksL@MX|O}dB;>N^B?4I zfb#?G#s|jK?3B2As}+1DKC^e%ESlJlpTAOcg+!nf+SpJOwbmR+>LwoFVLp-H4be~W zqvIO5rPk9I(N{G0z zg>Or_H>r91F24SEP|HagcdQ0y#OC3dNY@sY^|~AWih~)GBs$9d*dN2|2u$XKsFD`g zzTt&GxA)J3m0nNJFU#GB;@SdyHKa#aunK-i9r@4U;|l@p;HUyibyc$am*M5rD49Gh z<)g?qj^Vu6hY8m4*3;N^0Irv$M*rGU{2uVL``yc}ra`E5dWzO39BMbd3b>I6m;8|G zzk&1$_DEXp&yWsxA6aBuZ6o3Yg|i#D+`$Ki<=H~-cgk|CN0(UGj9_ykjvv5fm?wGJ zS9NvPqU-}X$LB@?yLP(o%Fhd6ovTCo6aF-)`pjATRO{3)eNk+u2u2P2@F*`#j#W1D zGP(iyK3N^}0;Jkie?+|8O4;nj2U}2o%NXvbUXBbKfAzj+-IGHcuylf4o@4VnrKPLR zqe@e5cT-NEIZLhEc`s$^A&;us!;?%}qv*~ieJ>Pp*EZAB*jG)!-+eQ#d)L3Sjre2B ztjhsFS2mU|`Wr&sHB{6$4VwL1m9sTTw}{vAR*UaYtEgOw`)xCcws%fm7eu_4sty5>CVQH{Oajs z=x1wwv>yLCU3VQzvMipC-OS>NFL2TQMw4imH;8q!kq|NSk@MSyn}9gs1)nChHiRr> zK(N2<4mmKl<&>Y4YNua`oaL0F<-eX^q~9e`r?qUT%(2qK7rB087)e5s<-jx zb;umd5Bxx;vYmTV(PV>TpQy5uzP2!Gi(waqSD~~v62;v15!s`VZ6=luQ`z==#R8=a z#ltBwX2*s5YU@+(T7DOj4kECs;2MW$gd?1e&m*n4>O{(XK70lL=_vvotD8NV$)wTd zNyI5Vlm2TU(v5>qEaP_z%<`Fp@=Oacz15L%=+~tV?w?>T#hhq;0BKzL<%%WagQp*l zMzGCHr7D{3Tp`q2Soa{^b6BRc8&M!1Xg|ym(pQf&&4Nis$|k6!=XqwcmM+oL*y>7Y zT^#bM#P-<(x&{4Owar);pI=v04b@RxPn8&o!ob*Z0XvHSAwhuhXl9EYrM9bZsm2ap z@cz`Y5iAk%TlTRB+s*s4UGwYctM~86n`>8hZR+ctGfMkZ9iv}wivZi=MGuJEHC027 ztKNGo_3TUP#HyoQnW-+pV!Lexy$Op^p6Xw}=_jUv-oXnbuS?m~yquB6P3LIO0Z$1S zGkjBS;;7=!r6x<+Y+9W*2BCc3$8&v;`+e!FenAI!jFrCa>y~eXLTNweYq&U9^YPU_ zmR%#e<)(5wF6bz$9%#6qW}$9iV`5h+gqv5vaJ&EE20WeZo&?N_DZ~fRyf=wM6SK_k zs2hrI%;ouN$FK40kYNH81jwc#bQED%YnqH%=#GA-oxyJ^k^pzB{im@w513&b1$D$( ztH}K}ZO>ZVh_~ z{_RJM*;;}U?8A)NN~9Ucx|)1vRTi|XQkSFAVnS)oGk%C!R}d*gpS8{;VMa0KpxG%? zOKx@0-b-Q?dtxsGT3W2y_eR8PLy~`+ZVDvy0eq{v$uCu$A5q^{N$%FbR}kXut3r_W z)|tUos&ttB)qmHb1@uHZF26G|15opDdUKb!iR1+%IavV`5h56O|6=x-z4OlBS&PV> zzuf@9L3F{TQ@LGj7SyX?v%0 z<+y5b7h8eL*q%`P>EA@zg%ELxjv2OJJnFG^VECW`4w0Dy5lof(ZQEYGDY&8L&3O zb@fg2mo$-VHl(vl^Ay`VjIVY_f{*C%%z+C`51ZHzz^1pWWbuKFX0GjCVRVHoh|0(w zr+MrRb|6|-i??0^khQnafeaeq&da%0NhDq!&nd#@ke3HZ?;``rbOL2p_}u-H_02vK zK)k;h2oH$8iLMUf^%~0B#r>tB6)v7}6d-7d_~XWtm0A^uR6da=j9pLer>#lns}W4v zk(h5}0`-RRZgSccwBYVrf{uq72~SgBu!Q1j3W&&W`W)g;7NCk>L?z%WQTnNpqlazb zHwlbL1EI-{xXm3TxGjyIoor&Bb~>%KoRa$qv5Qp< zU&R1;s1Z5Ax6?x>6ju`&&5{>RLY{hVvGhW)I#^J=){-khZ0VH7G|ER5EM!J-t!Y4g zj2lYFiW2A!fXL;Z8XH4{4V4ov&$x(G>O$@6$!^4n)S1f>MbNC3*3@cv;-ED>!F8{l zi|Hs!o5{J;tu2(#>nnV(c$uyF?6F;OxqsvDtG<1(3HYaez^NkRm-N?;E=W%_7fv=g&S=TpKcpq^y zJ{K-s?~%wym{xMBIqQ16T(?))&+tmU-WKs|S1EoLSM|2E66*Kw-=UzzV+&P~;H@!u z{Kz)?p21RV4Zg=>b;G;GdQD`U1RRA64`5y#JH@h3rq<`LSHe<&3$FRINHNtNb_o}n zgmU3B==|rX?BG0^No--{zRyqJ>TP+X)63C)B)EsDSS;w40)_FW>QRo#hFQG(oSq)q z^FA5eEG)I2aa=YJ-w@C7=x3<}3(SSG7nM^EEzH-v*`jCntq-A*a|YxQ)c+9NTk|=` zC4TK17W}0(eW{<+(!b;Iz5RecR@~p_uA7Q1m}zQ42GL&}Qa>u^-qqZ8&dgp> z19vZ!MSkQOd;})vK*kRm;-Z-oq{xKI?L>9St>O^OQGWn~JdhwSke0;9Gk$w2Kmdn5 z!`Ie>KVS>5Hy9t0KaTFcg;&TekgYC15jFP9V6Ovzs5`c^P85zqe-c) zffgKU8moq4dh+O%CvLEhHM2U~#@y-JN}?U9psiV5V3A<6j28+(wyTZ5+i;M#?zg|s zGrWYCBP_7AX)_fPxaSpXIvH%ODc%+sX?j3(kerX+iuzR>_egM^Ur-yZRHU!9M|sq> zTiix`N|5&Bs||jz9a8ah-*u*>wJOyIpO2NyXR@94R~M~W<=T^2wt$%#w63UUT1d7Q z8-=x28ld{0R#qE7c$fM#PHi15&y0>2*Mp33^u+N-oY^3L*Ug3|+^1zo6#=%orY>#_$Z&0kTOeks0V z#;l!p8YE5dr0g}}{Fl>OvCv-MN@aPIv7A)U|5(#epeq`i2tWTgtt4M+ML{k38Y@)8 zVMC$iEd|Du4Hd64Q+ywjL!v)fmv=*@i0*WmBhPd}L+yuW4b{R^XTJBXDEePn%e~hN z>*l?qZ}#P)AXf9`hQfym)x`#T{+uzsxQQQW9Vk#Hg9|AVOHuIjA5i?*wlVpzBTz+d z@#_b>zL6Zkjm4KlnPz46_sESR)~ z4b!{oI*a8H2i@f)z0O|XidNl6h9p9{>FMs4^Fz}jzy0T8qa&3}Y{=mmlTM0Ey|tb# zIMbA>eR%qi_isHhds7?vr*L5Jmc()<+5u|5s0*>d>CIu(@9vH8RzF-v3Oo*0SgP{} zCG~Nym2o5ngnRwgecrBKiSCiHH82?Eddw<^2s{(*RzH=r1b9euKg*2-G*`m9lN zr{d5~m-04>yUA&V1KYuLt?*uMm3}-~aDc^ia&0Pw!mRPe^>aG0*st-oo?htB`X7?b z3#kK@q9u#o4T5d6f+tO8olU0fbnVZ-@;~tPLUMCeF&_r(Mb1iLVp+~U=H^?==3WB* zeL73~Yhfg{VI4%8-&715vYBNA{3za%BSt!a6m80qZ>icTF&2>e+}DqHZbBO>rrRA% zrU4HSfpW9An6Vm19m-+#N)~3ONh`3@VX#$|6mwyeE8INOx{OkdSNuVBW5~y}7yXbh zor{a!=tj$D!!FF3>6K)ngoRZ8JH2uq0`OTg>8a-4*`#@y1_|4Mm?Om?CBhZ{Xhw=S z_z!(eoKE5IGfGhrbVt@FJx)fo((6Cb(E#zf3d@-VNy*ie6vRv)p`Odx-^JoC1W14v zVJJQMaSM5vvvT5ZdHp?$gz3dlI*K}Or2)lH2^|{c`!VVS?n+INW#GAVq$3REaiYHN zJmo{=P&AKL0(O%jwdF+{7BPeE4t7@W^jwy=1N@ux*}nxOOy93CD@zAi6c z|BG520pHl&+aDoCcmP0wGqFadeH@fz+1ypY(v>fwE5WeX7j9Z|pe`~or*5k4P6wwn zc^LIgo`Uu8RtDG2nKSLYh)3f&-MB}RO<-nXa-NcP0c_NhiqWdwbG@p}ATw=xi0pg1 zBYm?e?R?r0(78`?xvCcmfp4jEV;?AcMVt8Qnohq`|6_eaVMas!EwoVLBT4YmaF~}P z1oqD?3rvBpAi#F=mIx$%{E}k7`?j)?Oz0kuv5%OIt6W(yV#9gQLANiuR?QdII?;8? zisw*2>pou5CLi>-ugu5MTeYQ`R^x2eAqke8Gj+y>?T*lR{64&K7wb-}`q0WJ$7i9QT@39iOae6z1K3nsatX?B!?LL#=ZILu|Qk*V~pK`$2j-G;#74IsUxw3nk;8RaqaN z$qh(OtksPyVicRGmoW>{6_kXil~z`1d;?K(G2P0o>xf;GQ699M;xXs>?Myt0M=ttO zKVy`CC~AHHq=f$9dB~Nm9C@;h`~39LRsd(vDG~hKUF#(ub|9Ye_F@9doQieIv3CwG3#2kuG-PE zpWqbe+f0PHKw6t#B|CV|<|PM;Jj_8dqzQ!YP8_k=>EH-d!v)H$hdA5XP9S$EWokSB zQSH%Fm?kEX*~nlqA^tOaf}2bH<91k`;S^ybg?slQxRhl4-SnKPC$AA30@1G~P8^-W zz7ZPkOh=$gKfo(TO7@pZb}f#zzlu()*3<@57inV)R6{Ik@K%-Jz2xU1d#)k-pWUZ| z=hvfIwyyi5Q@rew&3wX^QfU!84RaS)Q_%H_&;E62TnQw+s1*#>>47xeXRDMajx5a3 zVaZZwuuvOTS%EK1Deh>_fs&gj9{8|fNl@S~UpuFM33!}L=H%VPddRg-B^uknZpXjk znKsXT?a1(;{9i7BLw}*(ictJ7QxtUFB66UGE4jn;jq-l32(;$xzC)GUHLZ?i&Hi$L zi{6xa0Z^R1pKKuA+-c$afy8~Ty`yHSDS4BN8Si#shQD4J-hAB;5p9)0m1}D3=yu7L zD!=J`qA0vG(c8~UVMt9u;Pk4OYDUPiy%(|gKO;*8ctYQI&Vm^PTtjKF+1v)c9l5#4 z?N6TXpFB6wu5rO%B{51?t&W>jMeKT9a7L5xiEbRrxg!&bnR-D_s+58&yidW=v;-Z0 z_JS#A%XJVJMgwq28yX)bJtAdpmhvN8~SPpf>!;q^G;+ho<)vA!m0|BL%>F28PqIZm@!TG>1s&WS#W-&0&L-)yS5~|x*~SX{1Ox(m?F^X*$rQcAK}d#O!}2zBYWB+Uz8z zso9!iG!$NqMqX5Mb?>w!IYT|yg%!3}657?~$6BjNv=g?`HvpCmpb<~D7y_#FmQCfW zW+WZCFcUMTgumHd-5i!bBtF;Jst=W(bX9r$`2WmlUPUsFY*k0zy}5?wV0i=)kzvdcXmo*ma^u^%dVXy^Qr$|sKp znq|QADmM5MmwB&tYQw7Xwe?m<$vKT4Sy~^Mxu&o&47Nw-cw7gvN;7PCv!;anwhx^? zs-fKy2}=T%EY5w#Q?}39*>JE2o4QrCPgbTgdgA2wQWW!x;(E`N#B2A4CwhG`w>5-R zNc1(Qs9m@$>qAd=wm)5jh-34`sB0=atJqaVcgxg?O3iDQbXRcGhx3^_m($y{Tk@T; zY&*-xe?Ax<#yit-ijc<2y19iqI;)Rucha-Er;0S6D1asQ05b)GeciddnIgAxlKG+{ z1x-dml@+l@8tCQDS2U+_Y`K4&xZ`eWy0?It(pqFvhgHk5ZM(rg)ve&;#B7VSFD`6Y zuonv{?B6T#@hT4oZ)8(|n@l7w?0&mDD-+k=$OEDdcJnetjOzn`%0F)MLgI33;*kYg z;mzuHg>mwI$^*p^afRF`A(c)}M;jl}2#$~#{ui{wjw0vPpVw@A?<+C+0ts8=>&7

deWMSr!slC-am=NJv&Lw zt~%AnLHIhCgg>0SzNv7vZWWG_q063WDgDajc1J94%wmvS%r&3xW~#7Rggz0+_k-ky zi#0gfY@>^o&$kfN^bZD4WLiHAQ1~rJ_kq&;;5dtQTg0>ODSs>5**l=dTv(0}RV+Ee*ZJ-QB^A+J1v} zR^ZW-<%aRhd%Sf}1n2hdES=|4bhY7eneAgX-{g46c1NgcJhL{$?05s9KV4oMvRx9a z?!LrsPvg9JdDxq&pa(}=$F-ktQOFSaRLKk4G!qAMiJJo_m%8sAxF4ay8(E=7p04^L zx95hk_+;~9qVu0(G1h$0d%z_c-{8^^G;3TZB!BNeE4WDx3 zt)}gV3@9?^=KsKRN)T0k|LcAzX%{RSKU@f-iubLmT7~-pZZMv60W6RZH!BKT%woZ{!Q`p}pYg_MSJ`33wjkYYWA+JmcLv zZU4idn^yEJ5Jx6C^B%I7IZ*uKIc>(kJpDz5!@?`-Z=3E$bN>05!JK0Qjbzb$-!!lv zLzSGG-I23M=^+AfZnZV$axeex-MWZ3D(?3EpR3y=i?k-)P`524NHC_nGmvxHGJ#Ao zZbQl!IzVJ> zvvsu?$se{>N3T8_4+Kon7jeTTmwfiSi8BUMIv$yFh+IiFRV)h|^n9*3Np}lT{J4g= zI4NJON)xeNFd_%w5?rrV(&=TmYr5g*mz9Zl>=y@PzIizddq*hCi;UR8GZr`Bqk^;Y zg;k7EDvs>cyMN=bV^hm48%BI-FV7^t7Q$1U7|GtP8JyxB9@XHWW% zdJau@|9HTPF>7q1r`6)}TjGZ+eAg5**gk@ld?qTS7TR=GKT40T)@oQU{#e&-H6?G< z$JdQy8RU`s2NWBY$_A<=fW9dLab;$7Ff^|(`$OCPmD=u93O_H4k;2J<3wG;m!qND0 z**w_)I>(&kNr>yC@vek|BEQ@=pY60C9xu>M4)62fIB4P>-pFD(-2%mY+@)pHmpQ?I zZ2|aNH%s*~niv{dtkd%2Z(j&;HV;+Yt>(y|zA#jBK9m2L%uC!2m;B!g{P$CUKHMny zKh6K?$>sl_UINMgxblAvD3N_Q{J&#L;U>lZG5>!KNc}lu`>^N#J|}ftrr3W^Pev{J z?~?vIRw(iRo%;Vx_Wxr>uSvQ5Ez`d|zGo`QaZhWGZo{%YsPmRHU@SMj8NZYtQZwD* zS?#Qyj!lh&3k!tW+UjYHaH2jZ2LGD-oriJ3rFUP~dsk*37AuT>w;q|^>QH^J(c7DW za^%e+JmmqQo9tCSe53CdBpTLpg)n4?l*>rY@DYLRlI`S@b#(P^9YjXRFqh$!*+TYC zBgDayqp5F}kFD{eM`rE&H8Zq9bi;}0K&z>w$c z&#VlS=Lgh{N7j&!IaHrl?iq1OUYtS+gr=IeOCyNBkJty1@YyV9pDJp zu*$nR68^Qh=q8B;-Q$^XeHlwQfjCm#_UeoU{o{rJjuJyC_4Lfo2p;~n7Bkjn_be|qkgfB-+g#}o5K-5g$3YG}3j0l1%?k|SKe<1T4C z!1uYLD18oAw$9szczw#+(rFXT0tCI5@1r6jC)^Hvu`Mf2b;PeKZ^*Mk+J@Na$hSM= z%bS**9;7Imc+8gPKSokJuGG(P<}+|4-_gB;N)d6HE_4tsT%TE;78nyI(-T{2KHW2< z{0+R;)vV9suV0WaEcG_B25%g)2fPhaCqa0^z@A-2c8e!me*P3^&M?9&My>91+3E7V z)A)SSOR;r(K3H-+r_!e>ERM(=nIkiUyzV@Nk*}*hD_n}Ej>QU?SaZ=h3jbPGxk8uf zXgjb`nIdB1PCi&sD#p(|)vvpaD~d~zWmoC%*F&4)A&5XysVrNo+R`C?c;`k^{KB>R z$CLbLRu*@Zp7g-=Q4gt65S%&IU_XrFe%^KHrGQ;YVT_og1*pK3*~U*NP;FkIT5kCe zzsWC>hlt;d;pgrf6-^Tuvgob^uznA*%++XDY)QeJmPh3oN;})5)9-*5qnT1uTMC^-OA#i@4AuDgZ=Inc%fnJhIo<|NF~*@(*UV^ zEJh0c2&}irQsVZP=R$-GY$>n5xbm)vbiVOwd)wF&P;*%j4b-=6gs&`wWVi)8%b&pm z``!W>`}MLUR0qkjc{z>lU;BIdcP`5--U}IJX}#kX$1#%EL`$b~C5$c!ERYPtC7%lLu57wG-ADs#^AGB^wXE zKDxfx=06b>Ve-QgpKQ1dxK;(3GpL`PpVc-p_Hsg_8q2=l!dVYI^V7t=&LCc zaUTpJX|#Oo<~FWth`#0fMr?zFiNVfoG0DD5m_7Hk&F% z!yw#_jvvu)#??Z=1?la#q!QrZ8>uumPH@i=Pku~vK|uh#>sw1E*8%T6i-5YL93)!T z_xao>eq@KaX!mixQWkOqh7xsd-;QhlrtgA3xX@0$H@2h@J%J+wmJ%I0-to8YVwpRC zhS#1Fseny8pO1@MzfPwx$!_R?El)jsVP=5Rz>|oiemB_1stk*E7%aM?; z7yQk*BmX+NCA>Sv$EDzQ!7~H?S zrY=-7@5Al)4|7vOjk4!m&hhg}sM+m!pw@(l?!L^H$(c%_4~5lB+rcG*^T0#o8F12` zO#yGmP)WeeEZnRo2S+FJ7<1W`7#&a|j9)OiWCl}KLsw`_0+Sp)q3mIsDRoL82G+wD z^y-c9&)rXsFNNIo2*zB1IyNLR=N%oM%3V{RA(*sHI?1>2YI(VA8B+Rw=ZnW`gBwnQ zt1_ivA#PpAVZ~6T#+B>yvj9G+(m0tvL5|i|c|aAeK{MnW!)2kC*1a5qRtkg^?=(sx zFBY@^I8$yPHhF5PZ7YFZa#2=0i3my8)D%lSJ}PEq1BDkOG^Lo&({NiPZf+tyZ3!G% zc@!zU%$yPZdkL>w`9*hyXPX-m+T%}|KibCRLXMuV0Hb0jFj`m@yhImrGk2JwI~6^)X@ z?`2lT{ar6{%eSo{v#L~v44AXC@0Qz3~3h@-?&sucE zhG6Um+wNTb5yt0sinS%BDc~AjE*rqUf1E6KCS)%;vt)5)3~53v7V5=fgYv4`+p?oz zuK~3UU_!K2&b51xeaaJV0Wr^l;1-bhxX(`DkExLBihu`spB94s|@z~_l} z;T~V-D_-BYKD?rt<#V|D7q9KtO8u31r}@_7Is+nKWWuOV02vq+rmM}2NLwzHql#^!$Ib~A2O z3j}Xxo>N#4y8bO+RkFiblZCGLk}waZ>k`kkL%UuFX4DV5*I0dIBI~H zgAI4o*EheNcwzD3>P3gY&B$3GWqEkL%k5&ffE3S--)aJ{L7TO+8Efqsj`a1;K0J6E}A!@eS6)LXYuCV z>>!CWgV#Nfp4Ch7YQw4PaxIPsS>!8R(|8d@X)%Ij#Dn=Au^;BcP&Oo^ly2*)>0*hw zj76h@o5NEB0kRN!d zwcr@p)-!YAdPUd}2`$>aGkGq~?QO(4>T4rWRPT3f{1EK&erjk0z?$R+duv-YVGkE! zsbY6oP*TcWnC~xrx44(h0gjtN4h{O-k)lWT;k}S?24W9Hr>K7#Rk0RJa~^yhRsIvVA$-wOqpx6yb8gV*ZuHph7#5)96wLwI?Sl-Ck=}e$Na77c-Tp;dia`GSe>aI3$I6x5NPevoH+v@!5xOpfMt?c-oj#jfJBS1E={*k?MQZ;aq9dT1-%Rl9j;O-row2mJ&hb0!CUS0t3xz zq05o6QBq%gkFvwNT7t6(pLATU5ybWWp7B1am(&#iER4v-HCS68f}NUu8nU7S?ACE`&L!% z3T4Y|0SN)(P7>0-pkY!-T#C-R)UU)6w(SZS`FnvLBk#=&p{T@?>s3{hKQotPyh8oC z+n~Vji4M2d7|4-;n3i^lhPq}nddzh>$au}Jk&mf$E|sRpIJLQm#>}ON4hA@#8zwOi z4HR;T)*}gk=Y5T*Di^hY^QFHJ#tkC%$h9aFrb^WgCGR;1=GO^)1k#SE;}PHE`cabn zGiI5hTEgN-T%-dhOI)Qw;(U*qcerwTSw+9|jIf;uQgqQIO7O^};hnaaFzw?)<|U<2 zYsL&8(PPucHc<2VfG;qnnX1Ezs;fa20C1%{}JRV|gIFETnU@GMYjm$+;Fed&tVP#kom#Pg@QI~#_XGyC$0@}>lZ3P*HV z@$LIQ%}oynb54yKRd{0w$F++Q0I{3Stnn5d0FFPL-0IYaM~>3kJLz1$Y9_f1b6wxr z?V0dyYeBcuC`xK@MYH;GbP|fw9A7j^T5IlrlB+yNVxFwJV;5)$A;P|(u0U@bns*L> zVLMFgn~WHqXN3{1MbTreCP#j60+2MjB3_p(E^}mJZj-PKsozqa&{Je{Fu3RLoIQpM z71yEBV{Ni@Z^)>x1xJLQDvQz+2u&}Cc8r^c!{>%=x3F|p4V6*#mYv1ysHCKBOK=g| zpD^gCz$60kYL8Z29l>UCyU%XdmBn%%2+Nd0^pE31LqBW14SaJID@3MqU;20b&N{Be z%g#kjJa|qHnH-J9`2R@Oq9*zQ%;$musH-pg7;P-Z2s?mrrUJLXvmak?N`pp9>ox4> z0HQjXG$$H(i^iq%$}wmwmX%b@H=%~<>16t)>)v7X#F7H=XzpeUXgn&tU9(p4me{_o zO%^8As8U5zMv&4$v2I>@HfIG`P*Gco%R&o*?6C*gJrXsAOSlwQvnH9H2(~X_hhHdF zk*pU{{8EzT%^hkw5%&ALf}&6{Oro)K?Uq-{wmIy+uIV|+Nt8f_#s-O9*#5b0Anu3$ zuR(|+f4W-+HpI;gTG91U?t1IoH82y?c+^y4Xz>`)JCuvNs9`FPSrMT0M#pc7;pXLE zVpItODhtJK0CyQaB1NI@vz7<>ujJiRF-L|gXkwrOo7dP&paWu}Q7~Ajg{Cpk`tG4| zg21)}7W8YUuO!jkw0MF>4>?~*g!f^0j68UD*)0-}_DWF0tIASLra1V}t$BFhFklks z@`nAjzdtB7zu8dLVc;id4A9fHAJYpT>@&lk5=f79R3$vVABXXnr_qpvrMM|`k9*gCd#Q6*#Zs%Ju|y#GGZ#qEwb7pC*KTL zlXkKG+G@6J;lWOvEvDgbmbToJ#1U7%kR4AhgZjRuw)C*LZj2kY2&6_m~nGLU>x-M71y$K606FVUYR z_w-PHO-&9A<`b{>lTw(H?t>Ih$d@z6V=pizgUZvWQ>|ypwNd(74Hxzw>EI<}UC z^cgz6Gmd52Jzr9%djZR<@VeVZ=qiKP7Vmmh6vLq;y)i-7M5x7X#q;X)j?%d6;rx2Q zRmH#k#{AbV(5&xpKczCW)pV_5=eGjY(5+X4<5su`E1n`UExT;Lso1gE>Z9T5IsA1O z-buIrq~|o{jwau2A+M~?3KkCbk^wX%5PC)#>jYU(_nI8SzO_%LaPP&sfNYgWCK3<6 zYRB#B>XbQDoytc}4sm_J|5yU^=|eu0X^55i^IkK2c@j) z?;MR!Q47p8T@~vsGDTZQnAef&#I~wotsJt`t%V100`ATgvWQHlN6O7QZPEQMO$PkS zMM|A!>b!xG(9TEUjRmr;XC@2eA`O60S5`GJlU#s#$c0KB$MgG+?vavY2+ZopZ6T-3 zT=$oX)0yIQ@w1La{QqJBj5TY1G={gF>nItI7%aIbqxeyNg8kSe16xJ5Vx*dNvG@XoGMfm?@6+ z>}48MQckDoLN;tsO|}{7oc9#VfbNrQp_cGy1-n|rHu%S7z&beGV{s%J6^Pr-Zzy?T zC|3vUPSe^joxb)LUPX@Q`UJs&ZYJuh%EAI|h?R<(J^)7*a6QLF);hEMugpqTf*3>* zt=-6_Roj{w{VDDNU9+4i*TG|TUUvbTv_9WRCZax^h}|$L=h{J4D7yjhJM#4}1PsG* zl&#TUm1erMrKkzM z?@_%S3fv>5dS&V9^gRN`OV#pzwCdygU!quy|l1a0f#!X?lK*v`n5 zn^1(9J31}*qc~i_#O(f~-N2SL96Uj@giaM&uJr@>hHb8o<7X#DQTE*MvzaFeuUy@M zMe^9o*#+uUh-P=T*F$v;y@Tubdnr}mNKhQPZk(TZJaP=gYAVEO=W)D0TuS>(HBVKE zaaEo1;p(f^PD`sXrC{O;OOY-+3mQnWyEBk7VeyEScL`jCyP-NW+hQ@KUlync%IO^j z!D9HE`w7TbEa_)#FM+TFX?V#;4`erTXD|vya$`Cvih?19;qf4RHtzKG~B}+mt{k@Th~= z7vR@BKQ%V*`H{6Wg+@oX9uS-u9?uv;D;F)t#l^L~;Dkc##Xl)5#8gXeI6@bx9Z){H zCrO>(QDNdbz@6_O>N~)y?5=61U|Qan!hX6`Lp)r2fy}d4&r}TBFbBm>KY~=YUY_zx z&Ema8{A$2yM1Ni8Cas**Dni>SqP6RJr%N_3ZMg1YlVL$05}3MeY}agM#3}1zjM-`B-@{}MzWkLd6h^HDK9=WE4h4*zSmk%DU^L1j$aP{|*y<#&pq=I$I*{l3v?x=gJ&(jUME%0eY~&cS5X;rC!0 z_Gu6)y7@J*4CRdxdN}F%M);7mVzf_fJ9SHKGOFyKSA`=Wu{55P)i49?eACZwq!{0B zQ))usfsPlBISD2tKx0P&@i|JWja5=>E_|i;>Xpyh3Jxnqlq!l#;7qG7sAc@8R0v6< zkXMgY8Pxt=Gm%P;tTiNzr!xTP*m%TTMqSw8-~IZ^b>nun5AL%OFcQ|iL=97JrK4^q z%0Vbh8w9Wc9fUmQ_ZU?D&xU);DfCNGO;lm^vTqMf(v+R(%hd%SoxLH&CieviA&M^< zAlPD)b7!xWT;$W)3e;+@nW17rfs6Ga=1teN3!cy~R-x@(!HMSJX)~u%GWpcIZvqGu zND8Yf#!hL{V%ldF7%(wEnU2^s8eA*LzZvodPt~j{U6@eGz2wHHDo_*M}|8{I&>_(P9=e(Ae4$h=34tCG>y@*XqY zX^g74B9h$qO8tF!rdyl1*yxv=oA2pP=VHH=@;^E(xNQ6_8VpJ?CV(uRJ?m zy}y|Vu`~x>K9|~*mZjnkn9es{N*N+T8HvbGi3HI_EJ;SPNo;m{o7qB16$e3_u2yh< z>@my4uh?BjY}&pAf0L*;jnr#U@6s9yjFXd8oEm*ltBq{qAK6%76ElT)r47992OWqpFibyiq#8n3~ZgRly434%?8AQ2)&hil$T@4 z#xN(_M{2|Qwj+Rbl%|cN9S+7xQ0UTF!919T6&&Q#w z1u7iNLqW?K3BIJ!`64ev9w}3Uw1LI{EH% zc~#)be;>?K0b5C>PkeBcMm8V|Qh{}*w?8qVu@7)xj#P;p<~GyIN;|TLITUU5T;91-_;IfO~k zpX+#BAEEetWVUJtCn7%-Q80({1HCqh+e;JF4Nnb1!qble2vO0YC%(H&!O^5w4BIVW zRAOjB1p<(OZM@cSWfjX3mV+q|$n8)w@oIsn=%~;oweB^nidE<~bxR$Cz7cQ>6y4Rm z8^pffk^yWf3TOo6iLM-VMGC~7@*P_0;G(j-?@fg3J#Uofmd1FaP~H3;Z$@;g@R(a| zhkjhXb^^YGn_H^9Um0T_x3hCOz*3aM6-f!}w*?VBh=z^k&_#%6ZS#WI`o z;VS>Dj~hhzE|&5RcNyY!N4ieyV?c9SVZz*H5`PXJJf_sxL9?YVimkNs#^ts(8ZJz% zXjzIOl7gM6(ipFt;kQ&CQW<`m;^rf0^cur4i@e`glTpKc>+-j>C5R8C!R+kB;pDZn zlg~4_17Sl3=4CuvJ;+Is4v^w!(TiMPSRjCBvel%^z2Y|dA;Rs!a9v#7iE?QU>3r49 z@rdQOY?A4x&tqqr$4N!D?p{4pNVIz>fgZ5|%xJAW_ z1jv`&<$XL4FSv<4DX?w?egbv0pcK$z`FNNGbIP{yv8A^VR12Cf)%p^gF4&q)iu$R^ z+?(%LEW2bi#_8j=0}G4O9STikCc0R3?DBeGrf-Tu)Pi%)L*q}Qf#OB1f3X#L9?<1*`$coP(?4)3G^ zXtEKpil2wCJqW|zYiA)e58{kxOuI}ydmufM0`7ixxPPBYs-k6`u@7P-r7@TH<5K3e zA2VjS*c=1|)XHdOsd<|kGBh;!PRP_wuyRisVT(6c8Lzh?+VHystw%7{n;+A?;kW$4 z$S+TS_^#b?u#Mw)pUI>nAyRB5<(lPu1p57IxoqcTP#mm=p_c-sx>t2seG*lsH~*&NJ?Tsw`|)NP zHfKOtV!UWJloXY!9L&>W4wT0=@*tL(n4LzGK0XQLyY8+&p8JY5Dyj}uOo#xhdm{y$ zgF1aF!^(7{jaQL#O4&1S#4tklO&9%LnBQK+$GS@u0UBA29eS@d4{$^&pmQ+v1*OK; z?74VmDGh+$sov*+V1Z6xWJ<{Ku_`8KXXo~ z5lqg-{^<0)5(Vm?J4W${SQw1@M#t&ez$r^P{zxcUW-AqGK=aWnjWq@X_f9n$km92n z(C)3^NMkr3{fgqz|PwnD)|mlgp9aH5i-x#wBU)?6iztQ*LR+ zPxgUE_D(mqXt&`Qrd=fo9m3|0NmBA_Z^%<2HP#~9URCu)?<4yN^x1d2iBEKunuKf5 z{JvYSC+3N+3}sDtGV^W$sn~8=vaAD4UJHtH@fM~9s^PQ5f8fY|;8f<2U~QMvVR}hqqx|O4a4^FN6#@>->t4z5alw*1?MC`XR0UiD-i*JESUSQM~&e5{SO;*h6rIZiG;)4iv@ z)gG!grTe;n5P0t$hc21q!Fnd@A{fCc_21EN=Bwp@hhepLnM0dr9WQsu%U5pF7(HVI z;FxmqAKy@y>Z10RQmFm zi2AZ~Sv-7CAJ*yIS4V#NIZ)!r=R_7k0EI8g=b11u_j}CA^&*b*IexOt#9p+?OXz^d z-D5;L=9q(e2JW^pCEmy>X@y2(vMR0IpLSJkDeW6ffHRa;!sstltbri-7@3LX$WFF& zIlb{m$4&TMMrBYrk7npjznZ?0 zEA0_jX-+<3uJ&UZi`$v{N$ISXlhN_q^+u_XUNxXhQ#F(`nai9d>UQnnJjOl1e%Zh% zJqEoLJlh8JbRmh$?83VS>yCEboLeML#+hl7g+=Tc#=O3SnL6W0>aY2FIj*IwhG}*B zL}6lnF(RsUb%1ZP9~#)2r$yk6tW{50Y$xp|l)apRlxA>Zgy;1Oz{;m_FjsrtpFt@; z-_A{XeQB08dEANk-WObnFE#T#7!+9=k3!B6`|C7}bGkHyI0`-#FzRm@zl@WyN2I#2 zS2>@Y%IY1fPU->N#eLYoz=BGrTcG+oTkMCoaJ+-VX%CPaRHK6%`C#Nq-uSMiWAS;v z1#2Y2&zE6|NYlAb==blnq1i{@NJo5c$n+Yh=v-|mv{E21heL5qtzVRxt9D$}oU3L( zr@#-@kL+*z!aj1Wa4X;9Fwrk$Op*bA_>riwpjN632NA^X&4i*!`<`SYczexA?F&7@ zwNC#S>|{OM9KV)E*o3drX-n<`a(xaZJsUAaizw{a>rFlF&+F~-fr8U|=Gp7qQSGT} z!rFKBFNSWqT71s@rhZc-)?2_6B@R3}od5A)!I^$wZ)Pup*g=bTr}OXjA{U`EyJ4im zTF7I!#r@4c3<$m3;(S5!v14LMsum1l<8@7%FF)>7_o!}r6i)K|N>rU~P$mD2AbUO? z>}Fc|ees&@a()`)2nBCUc1%aFrvhXUXt3Jy9;%vdV`TX)(!@ZthJ=IKAPpy#av<}DK>L61e5!D)CPOyrMks28g(s1 z3t>4|gu^7dy@Kmt9+CuGzcG_T0%)lui8q?jqBhQXo2|QTffTp8pL%y|o2CHOXfF>> zt0{3C;}eK>!hKb|&zIN1*qW8BOq$@)(Sw@J9FBU(H~SZ`FF8Vb#t? z6HHZN#3M0$&yF;X*KxmeM^i4mBTe98C{^^NiZb?GYOYfEM!!ND_u97MOsgkY?6;Zo zYKoMa?_p{GT2d(upk?M!?rbs0;dKne>|X>UW^g!ehi7uGYq#Y`!<(FEM18|UFO#^R z(CtG6-i+m#RDP6R3(tvYA3gDG4`q^~xITlaFRt3HtD-W+rz<^BY2mb$m$mk&wZ{)o z7g5RwD)*`C&gKovAESPxEYT?;_c+0_fpx%h!9LlN*|#1S(0MVX2Z3+$FK?9VKFZB- z&%XnL^hdjgBM;U|U{}k0ZmDO9Dx&*CB?&L9B^iZfTBjwxI^d%MK&2}pe%K7UrgpikdBl&$R%OB{>Y z_*_$^6+Ry4pM9y(H`}4y=>51$BRT9wQ^n-ux;+i_aG>zBJI$lu#!dktB_?D_0Qdg3 zATf9cpj#4)lNU{Ak~J-bKh2p`YjF9}VHub*E1l{$a@Ct}Pq#lwAdm7POL3t^9@Okn z>M`k|$~`|&9*K!k8?||`S=iw|-VdeECVE|#{MB`hKk2n82}`xJ)T)7}+|=};FFDtJ z!=|7-g1?EuR>P`?M#?hjY2x+TNx{R}f?B#7C+Gph{HEm@q#-M}f@~4&oMu~TdS~Tz ziLp`6Ajc{<1Mvz6XbJSlP{dIN550WWfo~BV8hzB%uNJm*KG*u>j;7`u9@ZiMxAAl> zBJ%RE+sh~3da(+{fpw`aomf>)>#@H&>j@IYOAn+;-!Kx)%+{+fn$G=)?M2+xV5{R* z2l$vG&KX^2(}MhwNCkCHiyQ!zdmVhLo5;?26UdCuR1bXk)ArvETRiSRbqU;Wab82I zR(^VA{qpr=63R%nbcu2}AMOSQq!DK%$d+(7jyAX38*1?bouSC;TSY{ue#f5dQs(2M zH~EiABFA+R9bIIfBnWlY2iDJAzS#IT)%^#ACL4#B%l(i!H^$Dv=1ya!F?*y_N%#r) zk77jf^RP}O0lib{w73|mY9sx)Go`#&{4uUW{8sWcnpxc(BrGVuJpTMX+r{$XYgfou z7zEF;&WQHZS5?~YcBB844+~89_iGE0TYp4CbN`aXelL&hL^jTHXXVXuCavqV#pfB1 zMOUdLW@Y&FVJ@T=A^{a@8vpjsi!B5gSd9hzk z5|z8x`dzAF#+(bK2UW3EW@U*cvY}ULB-xZ{Fq|*-gK~aW+357&hb%wlxk<7eBVML6 z*+J`&{v^IU%7#L9p#QaMXivlmE3}A^d%Dz!-$^K8v1ELawK+UiEmp_T8+`K>ddGBI zMA5d?41Ik)(`|Fod^hX$Oiv($n4XvA)e1lQ?yWDu&Jz_^0i&uic&c3D`_2Vjj(G@? zX4g9c)+CYXtbL~?=l&O=ZC%gyw=K!uSq|$iZ0^JjQCATgJfT@TG|es`(MwbH)*_%1 z8%r0+2@bu&}+bCc^X1^El*m8FqS`lJ~oxG$y~N?gA`1U5I(*^>%t;1r88wMju`_KST#Q ze8!@zKd-?`mk%aqwM3De$$eTxJuyK+8-D%u$?ki%$WISKm&{+kLinP-_DlQQfBWIU zNixo((1CDZHgg;Ck`Ddh7`O2`$4u{S#b8dskHqwQ8Ml5_$Jdje3%;{~T8&nCgm)n| z%SRLMos-tz$-OmcyfkwCd{Qdk+&z6Rsle(Pfq9K3+j&y%ulVlXg!=bsBT2K(FmUjs zNB5Q-vL}Oq{L@Q|gd@p`6=TT4TK&%Vk;fzM(vVgsfxwzrXdUjF(A-Uio#-Ye{_o9X zj%gA8y03C3f;DoRl1Z{sQ^Ir8ry{WB1{X> z(?w}_lL`5VN#J5}Q|;ZeF=3W&?+lP}_*zsJ&hnrAIe%*B?!1I~9AC@DpfEf+Ct9k6 ztyS|SmckDq%xn_#%S~*<`&(Fo!jLgzBU1HVb-$>|Aq@O>91)8vTe&Jc@#2jLPsJDU zfhI>OszEqS>(~BXMb%+ncS3$%S%bb~-fvKwhmiZt<7rPCEY<|0ziVM^e(ef6XYr4x zY*d$vun=wJ4vIauPoE!pcZrlbV0YdA`P3|o79v`ROPTU~o^Vl2hur?A`E#)v%7OP5 z@r$6#29-YX!O6) z>eGdQB=9!M5PQBQ$<@I90TUsuHYxMvp?1HTxxt=2+PJ!2$#Lltf$qAAFSYDzwIlr& zlHu^iQ~{|xS)o&Ymbzp^#{v7kr2?;IdTwE$I{(_7|6(<}imk@_Exrr zKn4*WGo7_vPj<7j_hkW8IymgzFiBLKZIEP=&KaDIvP+}UsY^;WeC-y$so-d4!)=&& z<{UV(AYS2Rvn=)p#T_#ovxz2`{;88IZQ%PX$^%k3RG)T4Sx|;3W~SOv1%XJ{jcos~ z;xK+M=(NpGAP~+dAyix|{vjh7r94a|_9GbM`QF!OzQ9alnB_>g9lc|IKx zwM;b&Ruim?EOyaB=B}OF{9C(`CyhsBS`xOhv%F;?<@E64*s2fshGEop@KiFVJUS3J z0kid-1)jDtvBqtTa)k4kvFNfZ%LeVJAU*TDOgTLZ4X&b1i(eh0i7+w}hA3Nj4UK?W z25d8(4aKg8wi@KnB@~92MF@Qn7g(ebp(Y)#qkM!>>*+(O*qIYBWK)QOb9NIhbv_tw zyLcG}73KPcJl&$3WoXR9w|)3TwDx56IjG_HoJOrb#Odi&TKSoezSqpxOudk+khA|_ zGSm_&L&5I%VVmtA)fwp65_NIyQlF#^iMebo6Py%}P25I+ShPrQh1x zj0Vn`(5`)S&oY@6*vez&xt26wD^)2Bv)dD{PVVZLTtK~S(oWxOk0{pWt^VX6en&Cc z0ng2n0J=8?xRib7a{?VEafuk(`AkLftBb-iBidoHRCnBE5}}ntL>*rqe_?BB7^4G3 zO&&Cf{XZZpJD90~MhVc393w(EA3H;YH)2U#8o7th?c_b9dZ55#%G=PbRX&GAEJvvB1yZY1i%Jb9}v z>^uHpEGBZ;GDOIr!b~t|i7`Et1_XxZY?tYkDo4}IfDa#`@4~FV-(*>V;RR#^_}FxB z%QPjp%$iVn@XQqpCX$Wrw^w(zu8hLYad@V;CcQ~+u0NC!)e`BdDrq7y%r_Gce>z(E z+AHS&>KrPVhtX})$@8ByslDtnd;+?d6+V_a+io8d>Z>2uwZO!bRrc3BL4)|=Ps;ke zAZ<&mo!u5nfNY1FCRDA=D2MwJ2A)Vw)4HngNCebm&Q}sI&qUPLGZt9d@<@_)Z)U~v zS?t=ITj79r#O~XO5-Zb;!3vSr)MgQpA+zaKUEAAKt-Z5$_Ths&>cOz%O}SIw5lD@| zzjxt0siWQgL!N68UoS_#ngz>;iut~F=%4b*aMt)T3d_+-kwRE= z*}c((-f9#=VYdj{)xn79c{sR`F|FKbQw(k?cFX`Qe0G~%A=&xgFl4xL&NsdKg7# z+JebCH+DKw7x9PTi{k3_$CB(mY5R}2zyG|wi|Cqy&*;CU;3i`^NBmlKq)PKgr@uPJ z#C>ayXm3w%EuXw@4jWW=eE8b(B$hL*AL#!Mx&IF%?e>zQcj?&{%eP(g7XWNFqv?iS zhz{xFCXMz^_dQ6iMBY6Fhru*4u838*i{o-Z&}g$I;)t(LzKjk=n=A|Fr*I zV>Uhas_Osg{oj)ij{@9r?;Z}P{w@=0uRiv*PV0QRBYLJQ4Kv%!5n7_m*j(s>*~AZ( zd$In|3p>={t00(<*zW@^N38{oT!}`!jd9_J>98N6h4W7?g-=}GBvneQFLXc8{f;Z} z_z&yOcB8?y=q50t-}mI7!Yx1Q3L=qP!tZ*{hYiI{ZyF0qKpqIMJ-)LQ9MuQmL+QlVVBTfp%cUyi?%YSaq5m=X3Py9*oboTpnjmY z3_IXK9Pho|J>d^Nw@r=neU3+?8bV5Kh;~@_$+48y3J%xANJJ0x#&iVhb-`&I|Jf#g z8gA+vEgoe!v&s5%L3GurG)^V-aJQR9A4ho_F+7$Sr*6^ z(NI^^SE@ViX8S)JGGzHCrJzTCZ&;lv!e&2dQ*1S zJwP)?_I+zJQ0&J}o`+jq|G37-DL!C(kjWePLx0#$l$03g#&a=dC^j(Z-aQ={VpOMY z?{L>gT)0cV1f%+uhz|p*-HDmTad%L`wmZh3Jo`PEQmD$hPV*fuMN6tVEh^8~KpaWVOh6q>j`@MWC zFEx-TMxeXeIURApJ7s5k3(SVnN#7B1=ai$C$ZZ5gKrGc|i0=oJ0s}L1Nak|qAuIVHPFMmdQl)tZ^^l%z6;XAU=vwFm3x8G~qIYOsw}08JoWMykElGm2rL3-P?YfhZ~f^ zb$fuYz(0BdLU?2rIWe;gj&&EEcwc)AZO`?rf{xH8c7wepekxh>XRPUeu{j#$##3ib z5U@U0$aeMCIz6$sqZWMl(vH>n05>eA!wG9bv0^Wcw@W%H8iFWMFFEW z$@`%!E`CLYIzk4?rxn?TIL_VP88@!eTC%^#&AzU7aH*YRPUEHP1WF(4k!sD)kOpfy z)uMmZzNWr^Vkr(~PIKDyndw%?E%k~>NsB`a^I16UsDJp_C<5577a>3P}>5O^m}`$A*9dPiG)sm!Go9$v08Yy2B$rETnz3(rE|1_M0zdaw)%Ji zor?fLZjI}VOeT_Bwn^0vX6R)z`vWc`Cby@^MnZ2Wd6Nqu0;4XB=r-DC77N6K|*DO^X zWZ<5OQJ3lzs9+gKQe45EesyYX=!p!9c3$3PTh!*P2T@G}ZZ}r(#dR{mEp8tPq1GaW<_f zu08FG0u_-a;L6EJe-k(`U-Lt;Kl}bXLzLNL8#Bq%p2F*1<~16k3Vk6i3?c?ATR3i|&-0wZLEbxtE~70c8V%`>XTI1B2?X2*j(&vT4SAm;35o3HT$fw5jZ8Fcao)TWlR~Zs>5REd8muSBRwnN2EM%|YRCsur6LmG} z3@z-gu8L4PJSdz?>kOaer8EFqqaC?VOAs+xxOE-D%$9X04Tn?b&HIl1$7rrXwOM2E z8A!S;2?|lep&Z6;LrPH3vlo{lF;6okniYL~Wx6s^ys{Ru`;Gf*q=lkZs zKweb$sixyk6{KhCqA<*z+N?(q&EZ}qDD`*dBe743ms0IcC%7w#CAv`tZ`(?cJXDON zrPelXXla4tzc@Xjy*ld}_h$fIO$NC5xesy!Dg*B1wqqhseD=z^_RN~22dj5Tht zEs%%+BmMYh#P5@o`Oj(oCIGK0__yAv1H!X`x4&u2X%)-jx1S#`BRt$C5ws>V)M@Re zy^m_5=i6MvitrI^UukD#)TdnUd7hC8wudJA!>!^$Lb<65^&mo3RCdng_!nQ2-6DB= zrjC5Pb`H)MGS(Ibdnqisac_g=Hh!$N;jq>?jmz;GO>=}cg-qm>V;Q5#*R}A{1X7WX zWQ?QX(Dsis2g%$bybo3XOgwS7n8UMJ1REUv^Xk3W9mmink*xO{MTr~*Y(M^Lo2WF} zsyhsaOKxK_x3|MzhLv$m+4LyX@Kg-3AH)1zs{Nq}gCXh4$dej}+M(Yyz^%rTGFnsZ zTqSMxfS3NnOkWszv>x});{0MZczH2|;GK*oInKYpP|@I(gD~Wq7KA>fTGJ;st&Vqj z0g;9nw4m3!BWIa35sH~w?>_oDkMX?`TS9TgEa3eJY{5V;_CWi!J6w_N^lVHRrNv!s zaw#`r9QuY~TKGEVGNqV1;7aDh9Q?=QE$?^2r#2G3dBXJIk>0z`XYsfmSjyVk!ebW9 z96Du_%hJ4LjZJV2sEnLB`@^!8jH|1A$6b#QJu;2q&5Hwq4c41Xj$1JXi*x2^6FgCw z7BKuAKGC}q6QY}8(A%JS@K;YcpGzmx!IVl!$c&8xQ)jTUL!3G)5jINw3R&M>g1Nb}w6{mI&zNdkdG=_=fBCjZ%_6j~oW}MyHxo`y_P%HGAGx^R z(a5IdldIQ3(AI)5_ve-%E~-y?=CFj!?rxa|znP9vou&`BtR^F@_;*#qZXcYB-|xkr|Cy;kqK zd3?q1Yzl{F%Y#Cz#cOhR1wSO}vcLG<+^^yE>T0HejXq@+nl8=9pVmk4!Y|m5HY>j zJ}MD-PS->?w7F6PM9UnXE@skUoyKmC0#~-<8z~-G8!4`5#Jz7SM>Cyk`x`HpwT2%* z9$&Vyrgk>4d1yzv$D2zmt#d0R<|ZpjAMs}N%1$e~-%F}MoMg@TOB73O%)PJ7`&97r zyr&*!_x;F9na_ZXt3xK6D>Lfbd-~l{qfV5y`%ud!zD-izP7wSNom#GUDpr)6H$-^d zua|_0p*VP>*@RMhhQ@vg35Y6*NIO&-VP}pNoA)>Gy#$PzNEyZFU}3`K@$lXl3JlhR z#aU8wsA4t6LPIY+mZ|hKUJ(8y_)XKRCZX7o?pwKifjms+0w`N`44x&&JmkcP#b;%= z&%tr+j^+OL^KL<*U&i z0=~`0-yUn<8#`b5e*YU(V{rs$a|obZFJTRcdtozq97(Elv-Kg`o-g7onf5HEl`%!XW#K|U;-dr!b__H>5LVvnA(u8);l7CRc z6pTs#0%oa3U8QMSU5^FG{6sSnV(~d`zk<1qu!JwMtsG{m>k?o-siebkOB?YjKB1~YKq@w3+K7sI8L%;dKZrajBo$QO%ZGf{EbWFmuykD;7D(CPlrO07Ig9LL4x!Y~%kt)uUg*zO(Ii2%Wmt?&6osxhk z3}mK&oeV9iq%^t_TDso9Ym!RM}L`Dk-?8X%+SLewj6;whE+`ot?hjLXz2*`(=)Q+{wY8Q75@%swRL}Np61@uV7pc3f!GFO zseC)PrG+oH*+vlGA8%^+4*4{o%CfkBN5UQTbf2{gTO2txEBSWqhb&Z1eKM}7 z1HQdc6dwpA%QY=9-F`kJVz5L0?QvJ-cTaKp1owkt69pVKdD>U2#1p@hJ;24)`4kfc? zXaKBEt7d&4Pp~I-&_%r{o^EwWkWjB&(a9V`57rRaqtcVV4et7hePy@nQOZ0vWS|wV z-3wq)Jg?Tj1g=ATwmBL-vG=dpbKSaGWN2kCwyceQK34gA&Vi4VlTRqGl*7_g^=mAY zaw0$5kx;$9rAs9ZObHL}VwV@sc%fKEt%KbJGtzb|WLDgvbzweN7otq3W&aRCM1Zw8 zxsE2U{c^J;kCgs!Pi;nt4G-RpIUy3lz_psDE@G5*OEr6ikONAKx!;)yJf*XosRLEn z5G}^AkqFo?jvpJ`$DdaDKLp?@TPjRz?Oqc2+;&>X{=BPs_=RNQ^~PK8n3C06i~lwQ zyHLDt8uUi#uy8S;{IvJH1@y80v> zJPYSMH%3*5gtK31lIPVhso%h1v7s=UaEI3KLsYtM_shd2m3D&rTzavp^XJjWhF^xY zLBo7Y8;nOeavT)!;!C6I&=)!pG8j1)EnJ~s;Gen9fOsAFDWFu z@$200@(_$kg4$&JN^YoqLc`vB9joNONqBCfo7$D%%a_@5!e0j0`z2%#bfsXc%=;dh zBnU;Q=AF%Vng4)F32VF#MbCWJ;Ba%*O$4`eq>^J9oE7Bjl1+vp%iGbh`FCY-EU;c* zaI2k9jdQ>dnzWio+dXzb^-UPvGh22w)q(Amn6}s}3q;$UH|raa8-e#>`%SjGKnC76 z@KkHCo3ylf`b_i6OaQYc)|hr=XVqYWg2`(+!K{ZD|n(U^J3-#ACa}c3Dd; zxmFUCTcHQ@^-L!;Qr=h-J9I46qTfKR3>i6P!#vV0>*yYMAdfAP?4 z_nv%$$*Qi990wPC##GY@T8!g%E3xZ7KW<5gdY6$PcKIQqaV@0`k78fkbN4ul`AwKvJ9sA&SxeR1AL)VVuzH709})qX0%?b%Sh@>a z+W`4FZR5FVA)d}ALfa?GFR?{pBD*4+O!KQ|0_>`W{NjNGG|z|zGMhdf#EuO&`uVo( z^H#4RuTrB`Mfq`CPG*i%HWON0du-nLsWeC->%($GDr-qxY{%-ZKy0Z=r+riU1XL+i zyJj=;)E1wdDMhG5rcxHPx0r+oS#70hLt{He0%!o$X!BJfzvqgnL?40ak*w5vi8Nt3 zE|IA@#W{!SThMx!2lKgC#e($3qYY;qt_F6wO=vOn#1|XY<;fd;mfM?)a;86BgD^dzWGQ^vCh!B5i`O zeZLA)2)82+0fp`^NNX(x8HmEDu^QDqeI`Z=jlDJB^>NYIc#4bId8e(;8!qnX6OIqZ{|HtI{4#DLjG zdkJ3C!6tnxIOS?v=7juC6;j6>SwjLN9~T(P@!bQ(2KMtbUrx9`#YzSnQl59$)#X#_QpOH-vH^yk&qpg;3CPH`uSZCnV{+ zKR?TT4mNTxVGaz-Z6u{A|MU`Oq4y+s_MG#NSocaY@3R=06?{+ShM9#@%AZNGqoh8N z=5T1%PXsmg4EMmF2aC+ox2NM*t%K?vO#Zfy9^QXksQ7)=)dT5p1ETx{r>eO*R=uHD z0&fS;OZ)4*m{sA*oqJw_y+h`I(r09tCx1%L#-qh)sc~IaR-xnj<>P`cH7_jp8uW#u z(-c`Z!qddAC64cB`d8kp>VXNa*U{5-@G<-&!lIjNhjHEAXcjW>z?7!Fo`P@aE-m70 zWfX@~Vg2Bg4E%zU!FZY7-E+@KA(14KMMF_Y{+mN2y?Xb<1n8?y4RrpVljpj}Z7)ni z%&_?>%9XOL@VyX(Bk!xp4KlH79t`Pw!D3#5f6mAuTkD!H-f}&NajQ^`-kZdW? zL%%?yYio@t7v=uc^<0(05PUxNT=cW{`g}*&mz|R}Y!VYni!Oapq=v*z+XtPwQ}(+Y z&Ts;>qg574_N1yrgR*hWcvCW@s?J(8wa@Y0XcP2B`|EWpd-g*SZ{F(KSojGB_O>dI zllid!+k@V_V6Xcoa#`mck>*0DNP&V9jecZ~Pv2o2yP}M>JfYp=EUi;0<->?iK>Zgv z!tV@jKW5@+z8MGtqck9y%zZk zD5k##-Ytni62Y7}oN+A% zyt7+09q)5w=D1{$KkvZW9CVSGnoBNOd_d))>RU)!%!*6*GT$7X4YDH8O2Wb4w?C9x zq>xfZy;8N+vnU+d4mx+|XG3HG##csTDuSEbj}X2r{BU#gokFynvI5)tJ;4=>2hBIT zrj*uYb>t>CMWfT`H2xv=s8Q$?5n*b7lFQ{Qi;xyIe9v!jRb+Bm>veMCtIB3|k36x{n&qWp(h3O880L95+|z zk+WLf7+X`Vn2X4R#pY28+1Wx1Wr;&xeG6U{^KJl-f*iQA-4yrJquBWP0F ziamENKDK6#DuaW)Xlo$rvdkCER!BmzI+cE;pPPh*O1&^DZeQXY{KN4tl{QNZl0(C$ zNnH#Da&HTMJv-&CCi1B8j?rWwSyK|71QKE&H2%I)=-uSaD!)&L>>O!GVKk@I^U-7! zA-}{UcM;$2bbf2`YNXh^Xwi*;fT7b6oC;nDG%0?6iK_UVlk7DU=s<%D^{BUeOgq6! z_vg*WSH}f=O+I9DYkYf$=NW_f_6K|XrYI8Y50|)XpAUi` z(>JZdl52K;Ovd`?3W_NYZ-&>-rB%l}sWTZ?6t#uBr~F+Mt8I_MbhD7&0j*H;Asa2V z4943k9MjToq{+8QKsluSTD_^KS+o5y@}@w+c|pLK!N$qT1B)k-xsEw(X7;v&$Amr$-6O=yat;TA+s~?4ASP6&it`Z=hquLe<0YS zMUZGI*$hJ+OZA90W0Egur-w$#SWQbhly00(kt4J+P`P^iB%BHA^?w))8PQ~#5=6_4 z8tC|{)1VQ|J34=wEx|=}G~-pae#^-IdmcR1fXP~hrgM@KrE7OJ;exk-@is8#b!SI; z`>Hujax36`hJGD;&o&Vea)uH16t$J5i0Uatmg-uDYz*Y}pmEsA8{ON%oyWPoTo(U8 zOJMD;&?~vMtHb{s3&R=%lhSy?V^215e_Ik&{^gf!-ytGRdPAxrWo(&m&YyV{)BSsy z(%88m0{m!v|7ov$@o}K<`i@}-HsoU&~k1~IlO0X znpHm_FSw7gG4l(MyNBb+xm6i0%Gsck^lJa>Y8)C%r!4u@LYB747b#Cy0#8o|!<^QM zoDG%l%FSf9I&QLJDH;jYfBWn$284k|MWW+q9`6LtHPKXL&6FA(%s8y6y|1mY8LI7* zd&<9g-jYknlWe6dk(p-)HSc@R6{gYEGYJjn|K#?0PiOO?uEI4LR`l6l-XD@6M>(<2 z*IfNNT28I|yP+Ygn~4%%#{Xvx*$7WD*oO;>){X|*_A@G)XNt$wYdPP83(LGP-x0GcM) zGsz30>qqSNUezK`7EGp!Zz$#oS|!aE5oN41ga_GBIpZe6bbKPSe>;OWg?3*@yz6kQ zL!pQon+d&>EDIZ$$_Kxxh!_W|N zI|joVU)T;Z9k@w?vo^UeyQ^`={f>z~L+ft6avM%_5Ue2(QQWIM_rUUO%ZPvLULXz@ z*nNP9Nd*>1lFBZzA8~uHIA&~yWeb&b0P_hRf0i?dAXa7`D9sPh?pNhntJy0Sh0bxmkeYcpumP?;jp zDO#TFAP`i4_m=#ZZ$HgEQG=apJXx@mXX*rRHJnbd(eCO<`)s3ms2iQw?2J3+Smz~W zmip~DfK+F-UE1zKnV?Nc06@_w(7o!KZ1tJyOx{x)ps**@^dgMRh}=wo*Vo^AshDU$ zxc-CV9z}mr+0`wRx|>ML>jFj24cj{*YjbqfEBlW+Wy@`4WWrTAFMng!(`*DDk8`3S zHwIIax~z&=at;aC-a7ov>EVx157j@g9k0Gv=&slk37dKqBxo2B03ovHB`EsZ?Qom* zL`KUfJ5C6nzG`HxzMvS+n-ki;t+%1w1HyU7o=ZCXy3YPpTN6NBjzRUTQ&@y_ue)A& z1C;k!uF8!WE~S{q2SZ4Iqd=nY?vU{Nr8qJf=WrTzz3sQW@`zb}FAojYhKS?~Q zOe3vh+xxXQ1oj@mW(Ox)VhtDlGemf*XO^IB^f;NL8SNC2g$dLpyA!7Dtu22Y&Vk43 zHSBugFQX+dhZ+MX&hG7xufvO6NIYs&VPsx=HBYO6v$fX#fDim%*bax<_7ku<8=OlD ze^W1oDK7USysUXyAv6uF9m6EIL%!}*3W~I#RtK!x)RT+vsgj#5t1K3Oz2cjNR??KVia+Um> zul>wKx)DcBsYSx=(qj2I#&IXSDcM$tRL07G#o9?M=WyZ~u5xY)so~8>;kTK#uh$ym zM?T#xK(gK5nyq*p5@&*5QkGh=`A@tqqzqfNZm=xAF`r*3t4Zh&8ru<1Mp*2zc+JTTKY+Dwp@NzS;24`RI8RzlSF3G<@z6qaLPArgz-?9AAk#>_&Qn zh6&ydY#G{t*xo!=M(+vOEY|T~Y?kC#XjCEzkJe@zSqz+Yl}MQqAO(I0is3D|B~6;G zp4p>HD1nPDkE9W;0eCd(=YZ^Sp<1Z4`-tq5$wuj%rW1xR+;6*DZ`F z!|~ymnXr;^_rIN%%IV`D!5sVrI0=L4Qe4_&Z8(bbG~FI?^w1vX(p)3C&Npi1iPO#s&TgefDwFjX65$j0{^zdKX?r|G~go=ouo*LTC%rMvA^@0 zac_aB?GLiaua*Va%GG;ySE9Z&SWYEl($X0=kgH_JhVg*)%o5}SCob|L#Jr+6%!bR%|Of1S;klm+ZA$I?UQmul|;w7v3;(G*K$*KDI6GTHA`tS4hG8?M&{6#d`+ zE`*6*pOL0n7>R~_hq*Z4dVG|Kd7ZF2!o=a_kMRRDITtz>Vne}Md>o5FKs&`0~^?^#-txj&o9Em7k6l7A`*Fvzw`O;ZBGs^ z03z`57YIzHD*{Aks`D73eKHCW25HHR-WuWBww7l!$~C;m`6R@gPC562$4$E=l7U&W-Z zSEhFB01$&(J}bV6(3^cUN|DVUX6L1#qmq(Mp$?c@pv|Ppj&&**%B#qJE&EfmZwqE9%O@$I7r~#y0 z`w6Kp%jc?{Qs_(blEz#S*J{o zQ0IXZl7)zSby~pm;W-69!KXUot(U7Fh6K}n6$T(AvuuN~ubl$5hQn2%Kt&?Y9;G5uoaI=REa4~T5 zFe+8A@@^Wl>@}dEZ{}H|R))JsiWc<{Z&Zey{YP+xQ^r$ttlu6}Mdau3_tX6EnZ(~z zgVCI{bl<3R+1EoeZ*xVf++NAR77aOx2~OK0%l#nTvFPECu<)}7&D9nkTWN8oO9a8g zra0+d?#w2aDk?X$F$SpC|G~5dPww{KnxlbrC1md}S*6z>d{^hotGHMbVp{PIcXShI z&iOdo1^`N#!td@%3fR4)`Im3NwNNp^UM)Y4Om-$=YgE1 zLn3``2g}G5m?vT5wLSzdhRej;aK@Soc~!lAYLIwWr6uxr#e~KA$93<9W4(jh;r>PC z`ZGxW5&f^tZ=w?K&*wkx_5apG@jnk2$o=G39`c7BK{cI?ACCY$M3r1Lo(yH zrux?<_eLaU&&V?(t3s+r+$Of1BPs1Za(BZBTu9GhK}Y*COPv8<(xw4sYBVq-`!b>b zI^+D1AD89Gb}SEgX7YR?C3d7t3;0<17{31Y8U4pCgHWi)RFen!ky5GPVeC3Y%QNP{ zfBWb?WN9CH7}hSK?uD7{o~i!6EBIG&7Ze|b2( z0-~L|^uczqK|l{fGV!7L<`VkdIBe!@pQx@(JHX&UYRX_wU8i7Aa87)J<~}i1#9@2q zL?A__vzq@W9~BGja>m^7C2XiMN?cd(T}fRx7C=Jy*qO!d^2wFDx)+32ekelKxO>m4?=%~4{# z;t6|)2Ve43G&P}TTbS|-Dj1cG%ouJLE7s9%NAd207%OlDHWxACFYS6+3%Nx~ZVeu8 zRCP<<$rF^gR49W>4P~yB&qmT`Vu}u$m`0NfL`oRJdL-Om60_~}=|dZJx)6E$Kv+`a zIsN7gr=RXrfce7u^l(WBugEzJRQ`m3Wh>t zU5-(qZeSb&qP}7W+M9_$*;Fp~)Vqj9eCWed8{aaBTl5062n3l-_feuZ3J{Jg4V6f* zHHG<6r`fsmoLhO_PEhX*HxSj~-1!E=N7|oC{^;Z=FC45or)0&%9;~;-@NBi<{`lLm$lc(Z(7ZqS=N+;g8{U*t z(@MK-$j_q}Kx?unyHB zoZc2N{0YOt^^7o_UXLV$&&%MPk8wFr7yS0&^}JX5Ge%@$vY9)Oso~jC93Pn(6u(99 ztFPCZOStK&I38zAOHZ`M$FJJY;FcIhc)zKSEmE}yFP+D;8t$pog9UP%U~ikw494el zYr`Oi$5Qq5Hef)QSRzwZ?6^-W%0II~uuk zqTdoBNbB-dzD2mtW?Mr03tefrn_qbklygoWt2cs}iL_oVEOk)FyXY1qrt|44vJmTK zB)Qk)aa5f$(0{bfXz`q>qPWGbH)Gl_9A1EKMs?tP1$AM5q}fPMm>1&OG}ixAz)5lC z%*rFZ?s*+{?ellSh3)q3+EDJ$syOYocrGUdY2RXqmY_dXUpWgQpp3;g!$VW0YN4H( zpKVM?w49U9nOi}sGtIg?6L^Rd*Hd4dHi{5$g+{qI0xD$>5t2Qau=Yo@1ejKqna#A$ zlvo=xk#ou91{5~>HGAGcOPZ*T#E*qMkOPYUnFa4FpJZVoLe;-8wZVx?0~n|J+fzh~ zjEFSn{iB74h39EBGK6^|k(29i>U>p7`-MwIrc$#=_-^r8fRT&&tosQNBk?yXVW$3B zVX@U#nIfOD_KW>hwZFe>NTn2OjLb(^GDiWdiTfcxJCmuy4%VHiNejpF{4_lS4|>k+ z-}-d|mBaWejD|y>zhwzvqNgwzxcUkNSXEV3_4O2R#l?pIvKWfxwG{kSNF+5+)5qg3 zo(K1M0VRE?6IG+5gGQ$nZ_$ZI#Ko4V_UrAQZ>t)}v4lIC&QSrAL9VS6;N^qADG>X8 z2#d|hfh;J16a(XyMIG(ZeYu29mYghtMsnz2FMjBBLbaUSVKW=<0JihVcab@+SeI*y ztMh1}rI1U9@2!p=XfbWNId{s!$Vx;Qy4|aJG7Y zkmwn%kQ*};OlqPrB*i0~&DDSx`7AJ(98&|r)AaTs&T46>NEnr)gc`n{Slz3NZsKtB zY&9@``MXbcYT3M6N}xTp63h}JIso+wm=UbI!0@Pq+m+=^nliUJ2a#qzn&^<|vw{ku zOrcyf_zbTZ{_F05q_fd_;IGKd;xspTB3q(S$#m43V<%Z$jFplvnxm1fPZ8D|%{YtN z&d|W9BeHA7pOjD4-?wGG2e1Lg*zh%Dm!r%(KK@jxgVYSvg(5qtK{2=1bQrnX7u@paGb;@6J+)yAnMR9i8lM{uADgmVHC^*}&`C3rO0}%|I7hB0kk8I8id)G^O zLX@YHQw>YxhoUDCpb;Bbapa#5SO%;*MdC|Po*-XfRBg%cl_3>IJwJnBRsHC&)jo?0 z-Qq2|0xA8gqL|W@{k+g^SEFbR&JIlvax1H>rU-O8TS`P7Ow#xZ&)bD7%@~>I{7Q?XgiumMRj2&f<@ymeR}n?tARjUaTTEAQlCOfuMjuB#xc)-U+O(KEE@^ z0eNuWFRDG~?*7`Jr(}d=Kb8F~3S1M1yN}4Ahn3sd3rC{17s%KsjJjGUqncjkVjbp= zHO(3t=msBJkho#+YSe5$os} z_Ers`je<~<1Ut$a3CDsHWz0TA2*Hz0mPsuhwCuPHORUF^W7jj&Oet+clwJ!kZ;w+I z|JMEx@!YrHzIk}BXt@+Z`N;A5e7wRu?QS8bx(G*Xmy&O?lUSy08PDhUqEu<3$cH)e z+*eYtUY~e=jYIWer54VJZRf~rxl4ZiK2(*%8LeF)C@O}(Gl z)D}`T8MZyeMnv(3TYE|m^*^C{--dKS;s0F-{Lk(GZx;ps`tN^f#qqy)@mVnhoExn) z6;w@lDHZ+>3?&qf>!t>9?XuTD-Yt^0!NTZ&fo#cDAvi+FUXK2KdD`cz0QZy&a z)q5gTd>$L;XoN{;aB-z8q$9_BG;WZ)1tubYB3ZTho-M#jUGdockF|Z7*(7Qcn05!v z&I$TbLBA!!r)Ja}dSW-LMW3I#I(BX|!tU(FlJf6;k5(u4Lx%$0vF{X|!|P1KH$(Ci)i<|h)`0;uIGXUrN_r+m)(UP?(3acM~tcveZ4l3yLK}opKX%j>wbX)uYp2HR+ zBSv7`lkHDVhUv7nW@;wa{oct7x$_M==K6s%gST}NryB-|r!B_)l=Z9+ z&5};WH>W;&&=DOXT_>4`a*dw?99s2E4TIXlV03nm|F*3}g=coA7_tZUikAI179gXY zGOfV)zMDVV3l~Q2DD0{Eb$>RYasG*(D~dlCc?{FQ|1?FjVc<>PW5-=W2g9!quBXYmKL3cWo#X~*pm*VwY7wZ3 zZ2YhcP2RT7Y#)CjAfKKH$EzUN35F$q^599C;^!LaxisWVxaKZtEcGp4t@QbtP*hu* z!e9cEqKR231yF@T-cz__Z}Gr`=Md`?;`KmU6IGq-`5WcyYKv3D(Gu4$)6Jy4%&l`2 zH}e^x8?Zp=1+VN#{&XNEcn?t)C#T)SF2gd=r0m*enn=-m;H9_qXv1f6u5 z!&rk8W!$gSx+$L|MNh6=_0mo$usiF#kN68J+H%)@hTWbyz4SV;&UC#vXP-(R-etLk zm+SQAdoqhN9_GkZ7VEIO@5S`T#$vYsy03&YQ8TCw`X67na2)OqW%nJL89$zQ!Z1Si z44hP`R54`qPhv4=$L0b8A6_}F5BPs~XEEk#s$0z8x?gAWg}2sjhp9w9D;FuRyaIk< zyM&^4Qaoq2Uq^->-4opJpVsI>!8?DXrpn5BC*15#Eu!dOH(~v)z-qhxw*L=7Lq9 z(bwXp{I%g!yij&5dw6Kb^K(29L9HqM&mg#Xe+v@wrTeW_e9vY~Ep4ddLb8eVfgPIr zGCiF&v|m+co529y!@EpE0F=v$TbJk9XcBI{-92(2MP_ssZ7o8E%Xf26bvYnX(S}i! z%9fK+{VESt;$0srLMT+_BHEh^6D5uUS2l}bPA`s@f5_qeDY~mWiek+NpO@b(*zKW& zqr`cGuMN8Rn?+EG63ZLAv)vmp1#QuS;ny3!20SJvrc8tY>IP%E{wUf2={+ok7B|8` zPb)?TDFud(j;OyBR%Uw|tZTlE=*6yv9VhAu^`rbvPHv(N=qWT0ecRNRSEQBx{xy06 zua;BIqH#>cDwh&IC@-?H9RuhVE#n)5B?7mcx^YEiLtP0^$s222ab;Y8R2zX;ajMKz zN!0?{1vumGGWwHiWqa7<-@uLjQ)jeADjjGR&e&A*W&!(+QWx;UQO(04>8~AM_73L_ zH8wexk=I%+Gj&X_X9emiHAAK?EUiX39TGTySzj;!V0ogg-3-a}h&^P*bUr8*uVWS-ai zVXV5T^cP1G&=H58r7?hVP}GT_K3-8?9q>9i+2GS}oym#t(#EJfvTR^(F2z|$=E-(I z{<`WBAil=F_A`>(`#9yDUPKFbzON&m^(gk1qwzuyV&Fq?$fF@#-VG>k%vi`FQlu-4 zrzG-aOrUX!T>0yGeO-r3B4TedC+yx>A<`c^Ut~=!S094gyMJ%@B(g_sQYTwk1^hz} z0G(7d)bv+~YJM5#6ip^eqP9}NXii&5?RyXwZ+XC_rB&Fi>oZ@4o!^VJv&+FasOaNV7liLkDntYkK*9;kAc+j>AzM3b$HU7dV zH%tn94mY4wxlhF!K>4Imcf|SIn7ns-DTd6BZJegIs`efVfzt4G5BsR1G{l|Q+eAVN z_Q;w#FmANVE1dVawAvD{!pl>&_fAD)>YcWQKtOcn{dW zJbYkJ%f=}0<^;e~SFV7&I)B502FL~|I@d9lPNv{C?U8K|xJjS@Aeu3(R#oSok8r=u zm)BJ7YQFigcOPI{t)g%N-UAjuoV%AQND@_y?X3PL$d68ZcO&)UF7>e96|q?1<(n)y z_n0av;3X|DlS^{Q10EBEr`G@WU8&x2Qq~pRLBD-w3=sfn$`wjNmz7&lY8HPyg^@8H z-Kcgyo??<(#t?XJ_mVzb`&2kRpPXU>>HNtSjXx7~iT}WJDqfF8#}h0bZpzU?WAMdw(Smg$F^-_$HvL?KHqoFdw2df zHR_^PjaoJ591Fj>rd$AgqvI*Vx+ZI$X0W1q`Ix@mTJq*r?V)y(Z}h>07_i+d?U`i5 zLbaN>MRid(hIPnx$mBxJQJG$Yv}2T}d)`KfHh+w7sosH^=2T{9HZxBA zYWIQf5cW*4kLsXaVNG!`pN`JQ*Z97T!m-_&NriubxAjUJQrGq@lB?1iP;!9fN!WU= z!Z&DHOW@$T_M`i3E}pEJN=eivI$FmC+YNuR%BR&M`Ep;GpuA*b_m{c&KRaboX_uGx zw23bH)VjgGSEvB@2RORI#N|>Lzu+@AW7)Cz){kA_s25&Iq?i`wE@L!xiHtpH2_?0m zwr%H@8;qyK{w4Wi#33tpEgIc6k&~v`Xp~HEGMo3`>9ve|n-{VzEw6?%>zOU5Sy>sI zAy_7P^S=Up51u2?-V>CctDjcpyh@q`g6owF4n_z~m(W1I)D@>s%HG=1?Ajq$Wa!^n z*Csi~A4n!xFEsoSQ$=K`DFE0?zloGTg*1+8rOFjZw59l@`hD_LILXBzy`g39ZaR&c z2W1tL{*=Nhobx~5C9Qcd_T0QN_D+j*qg zo%W|g^ZaUc$K>>*I`83^M({Tr?0bVrBA4HBLKQ{8N13|RFA4sIqkPZe*cp0I;F_D+ z3)ENul3s{b9S9ucztw{PM?YGaT0=Qg58(=u$0#0nJYS_C`$`fy&Re54O_K8%3g^~I zexBorZJ;Kzl`;HT_y|p#srf0AA=`VjEVy2c_J{Cv8Nk(YJi_89#3ic{yR|ZhtI3%X zGS$NT(U{^+)A>f0rkHXzrsw>poUt?U355q6Pd)*>5Hv_ z_BKNpx)@VgpP1>W0sKhy5&0x=yQ;dhKeXZPeTMmduE~?7Idk?r+KiI;Bj*H`5D>9+ z(sS%!bgWQG0sTA3)<`@R>Z#Ilk1dY?uM$;miIa?XeE>3*?F+C(tITm)_T9xjdS_?s z8w>GcdmEje;z{!%ZLE{M+P`vhCOC_%aK(6exDX~Cz>9h347fCUM7b5E0B_L%BzPH# znK)XBwaqoU_2$tepTiJa7%ktQp~4#@@lZ)B=e0OlL^U!|T}Rvk-I<)nV5r>AMfh7+ zQK5JT+M#k_H82V=&W~C)oNPhRp>kuY4aDTGpSCVpQ(Q%GMssPKQ5r4?ufB8Fe9jq> zrH_q{-cn7kLvtf8fDRI8yA&+~TK9AI^cdRCv_m`bP|D4x9PXiTo!h5b$_QR3(V6OZ zz#FsD6z-Cg>PU^UGEO}fkXBD=LSB$+JxGG@gUhDuU%?rV_xs1c$|9r%G26i8P zWA5Hv&|KpQ?~_^#)f&TPY&I^?9{rQH@z~5Qk<@2(`{9)}JJsQZZ#Hh#$j$Lh_#3(G zQ=^-=PDJ}#04UsO+}bQ4h)9MEPn^0DWarG5cq1RP{)q8uVQ7dS+4_O6hr;|-Cx8Jp z+DscQwvm@#`W#15l0qS@x8%N`{S_2(Ja3f$Ipw`HL6d@}^#rf@JToMb%aGuzx3GtcbL8UE0>Dd|n-*PfKvg8^5-;)`k=ZsvDxu zqBdIm%aU+5x)Kg5QbMn?v-*wOi=(Ix;#}r`?xme|k?u;QXWUZ0C<-(|rYcHbE}VRF zu^4p8 zg9WET_axcF#NE(SD*sUlX^wnyt!1tqTVkjvt}qj#SSMea4!u*C1jQtCUNP@Mp(XG9^IEWF>#E~C zwOg+7ySwwAz2XK`?KSPmC4FBVa2)f!pa|JOpIsXlddi&INeeSlG0-)lj{VaQ03TZc zhyoN-ESMGk#i{m^DZ9cu0>F|MQ}Eh%KziJMdKp>)jk%d@xb?KXs z3#p@fXW|8g!ReL=8f+7a62MH^gTg083)UIF$g@Mgwnt_=YQ4!R51QUZXEYIj1nOyn zqL|nmffA}hB%4xfDPC+h>7qwPFmiDnPB(uw&3}yO$$+t>AwRCDx8UP5Tl{hT__bpI z(JMLbcbTOu@=?L8aaUVjGz9=F0s^Q#d!~dR?jtk?Rrr-RQ)^UO(t_L^Vm+Cs$B4id zp}Qz)p#Eh$JbhixFBQ8B{r_ltEPQ$0{q0#LPPhvu!z`jBASD!(o3gwlgim;1d+Fgs zh?2W7U6e~NT%0S+lQ#|fCRqINJX{;ftN>8u@;LR|CEXV#qs9~&lWqBPA3GMV^G03n zWqOldmBQ>!N;4+KF}0(KIS22L_ET!TJ>rs=h0x1k?Hgj@D`)WGRtO|po;J=`+B3b7 zL|9mnj@cOD)OOxVMStt3MNpN*d+QeEJYV95T&IG&{IFYYTJ$E*`Q%)(wz%$|?CQ%Z z6R$K=uHWiNNP+|X6_Y*;)k4}QEi!rG--Mi5)F8`$%Ut(e-}#71JLjpdjwn-1c!gK* zfYj;RnNEh(V(BB(WuPG?n9yrrz?f57+L;!2EXni)EsC%4cG7)n#cAfbZ5)QG8x zF9)1#mT$EnYD zm&v2rl9}qw(L1T~G2LTOvALsRAd41k5Iiz@*y@hO_k9qDUfkNfcMbK_|DMSs=(EHr z?En?4`#I&&1ZSF&Ku4HAR4)ryvN@Nl zTXk}25|e5hybl8BiW-3Z1*y3;hyJ%WEm+=3^fvJ+~ zDick#^Mfzc<>6lx|4?@!c1CMu?uljsLX5F!XwL>^p;k`F!0BK9TG2J^AjM!((-g;GZ7CIi!d*bqr`c7))I$#|5LC~xpO;!8E) zr(V0JX1`~^>9R*5U5*tgbSMnE-Gu5kEsfcL(UN0MyYT3p*r1Dh${;KIuK0*JlRzc zN%zO0QVL0jX#Y9 z{6&3^l{nwmIW@{`1w6n%MYY);z8vfQbDD+`b zVM3KYlIF*ecS^fS2M(Dmf%O+sz-P}S4E|dKB>5uNz*o-B8G|B27N=@C0|}ww``c5u!QmjPX63bU#QAx;!`7(JEtg(^z;QBS{oYBi~a*-L)x1mCd+O0paaJ zG-5m{NFRjQ?CmYTGLZ?W_QMjh6N2)Lo=h~-f1JYZuN{`yy-%Nv}Q(Uz9A8e-)nJZJDdJ7 za&xo9CS4oM`7^x7@65*LD&`_b%}b8{`d3}@8!5X> z7Kp2;uGi><5#5<_j3KaZxE>lU85O3#+ZFh&T!zI;KfBKlsCXdq?&O!3i@R{bKguJ z40i*cYH#s>MMEUH)kH{eP38UT9sL0wux#dF5pnef>wC0|1kJioS;-7-q8}>cL26FI z>GYDzgDFGo#*R>U8&{2r)0U;DUB%>pE%Ea?mrxt5VwBZ>R?QF)MXlVgNh$uQI3w}L1%%=g1wDNG}AT2D?-s_ThUJL`!C39 z&?F#s5S1*akxy(>T2A_JU2b13&RmOuD~bjmA(dB!%A~wM#f9arwzR+a-_ddy%0!qi zFI7>okne!($1}C&mLvOcNy;T?%g>Mr%7c4{cCRcmQ-C_WGG=6^Y0# zIZU(Ys_JTfgByVpU*eM2k|D^U)MoFV!}uGkCu_=LmBwQ#S4kcOJQL^ubS2{#hQl+G znH~NFS1R`Df@g^ReELj0@bzz}7176==2}L+PD^Dnu(BnJ}Kt3 zm>i3}oPBI!&{bJkb>s4Wl9CIRq1FB&T9IBe2FG^R{Eu-Ml%odf-K;)boF`rSBQY3n zjb?OuZdL+tua3*=8U_Zo;cdmtTX=FmWdQl{8Wxq`(JYsWf-W12dXt2Q-oq$(cYbmlJv-$7pNG>K6({VMG@FnSzsPaqJx zCTh(gwhFmSGC13QQA?31UENSaUJ%faoM~{l#@*zld!ZBiXh;1lHF@^Ldm{fP6hn(I z6}#x-K%)iS9E^5&n39%?JAV0dS~w)JxZHHfGze+iFHtxtsa%&eu^SA!?PD<6X>OQ? z(c#jCo*FQ|>M^q@P5f~V!L}hy9p&zbXh%R>lS7wQGFl2Jb8-t?wyjN@SiTmr%$YRs z2Vk4cB{e^^+I`>Ef1;VAyD>iBlWn0rku$rvsIIPVXlpBUtKn}hjEuB1!>POWVK5r6 z<9EHaHFwC{P7ak=FzAU8Cy!MThX`5yFp;N#f+lEQ@a+QZN;bn${HzZnB>+^JAJWZrTO8Ab$o>48Af*Q>N`%pdHre4&Q) zK=bcx9$_a}Gk@{dslV5p!rFx`ER%7n&qfAO5~i7bRML#>Du2Yi_aJY&F3{NSvVc(v z6V`~22#xm6ZrEI0ik0t#WVHN)8>uI2x=wy1V4B{8Wu)Zs89sdh(R{e~w*y;Ssf9qF zoVQ{UN(nprq9Sj0xl=4CL-;B)J4@5#r`xJ6=UgsboqDgiN~j!u=!10hur*PFwJ1*$ z+quAd#ve_LJkT=u;9amVsn95)#XA_MH-0#J>}>0A^dP|Ok3isuYW z1RW^BPy;tj0?EijwJ8nm`Zm&fzZ$(3?YS0Q|KhYATAXtM}i z5tqX%NDzL}H+JLVQo`y0?B7hRLoA7>iBU34I(??fems??E~O3EN_2K}E%)s|BuJ(mSTcP7)0_5XK^PJtnAnnpP3Desoe89PotjG0o&yq~YP&@*OIsV0 zzUKz#+p6;0gHw{z^xibb=#6L77rk>JrttJgH4Wxcb_O~X%M6AFTMHUAsR1e||Sf0Ye?2ix2Uw{+t%cLRx9`y*Ra=HAK(w#Y6Vo6X;>gftn%dNVMw zNax* zlizMr8RPFeuzZ_*!p#>k8uR#zcyzx*ldB!SDr{gCa@91kXicg;HfWM=_H+<$| zyEm~2Su6&$xI}a8dnLSo)H{RRf8_=;vS7~rOkC$Z+>1-zniy(PtI)c6Z)x;)xS&{T zwKh3>0Mq8^%6=|&y*lcZ9bf;OmV*ZCkAa)>jN&B(zSxCP_mP@%9Mgeq#< z8+I}qIcfv$zp_X7bqBP(rZ){Stmy5G=kDpT^i=F!_Q(P%?@il;OkMBl@5keiA7rkv zmr!E`E~U*uJ+s?{i*_7C%h+(tFHRDp4l+Qmjw87>Z%nNbF-L_VN{szPc&LIF*@M(S z=BV%_8f}N6cXP;lpF0n^T?3hkdzQ1~$9!v@at0S{ zIiBgNMc*e$*qLf0JyIOSE0B{$uNNUe;cpQO$n}s$dx&ZvA-uF9rGbNOBop&c2<(v*qhL=IY0qqaYCsSGM6k zs=k1Gi?srdO`NGcCyuPe+D8=iYLsdkKpc(vi6)HDR^k%~X4|683OB5*ukLVw-&L)s z&&e|{F2K|~JIdmrf4{l9iReVG)@|>25GgU$w$~A&NA}j+lG%}VWkjvr z$;-I(*0*viH!T@5Z>`F26q>y8TZpMJyA-D6wbkDB-PHDh;P=&wkGZyAsZDz;60(T3 zHATgrGBx?80FoF^`EWr?YH8Ffjt9orJt84Zd7JreJNf_10^ruu-+I|oD)bL>X)OL7 z5+*l(SjQ|V1kd|zlQ}XUQ$;ZkSxaZ4-g*U}xs<)H_|%g`mK>IC|Z^rhv^<}l|G?|!FZ0d zg|zhD?>bgjn@XdpR4j8>{Mt+d=!|=O9S7~)@S0VG0B&PO}5jrd;Y8|xf{t8zzM$-)BY{xd7>Q2;o%c^il~s^vnokynIVMfSd2NnH@2 zebCz+<&u6k#rorx0XhLd`3#eDSsY#)7VRV3$)>RwB7zq71Z;CBNt6(zuXVUKMW(PZ zUoR4*+vLJhoNL5MR@UrwtuZ=7w|fAz^j3E1n&sD(I3z}tP1}QRlBFNu=IoDVRdOsy zp%*PAb+W(zjSq(kLGJXvQMQ}nfg@tKOB_&51I4%pY;`)&NVe*4{n>@TcyfJqZcnG2 z=7S^S&=%T!j|xh9IZ+W)W3A0a!Fl8|*$|PP9I=C~t5y4@1P%b#-F6Idk<<(J~M z+vZ^p4#Sp1$~Jb2Zr=36|3@P7z?Q{7NKnVd)-R9do6Li`}ghzRi~ z54+0tX1Dcff8G(j|HW9Oi`2i@MYD0k(C1nGWHpxFb@QW^YB4|Rqmr;3v$~T@pOVzk zWyc(StHR&xF~Y;w$ao##5xrZv2V@3Wi)gPccU#bijIjOX!pe)@99uVOEt_dkL07Wj zM_v_oeQ!%f+<-=9#ML;TxEBUDt$9Dmc=4bFuJN7leOO^!FU^#}!i)U?0AM9kdNiRh zlS)NdjZlemnEAvca+jGCe6-#g3CvN;VoS9+VG}Ov9y0YH>rMmA$Zlne3h2C9^N>X| zI;=H48Qz_~A$bK1IJMriDwtT7Sd&qtw-o!SX(eSKw$QA^`{D(L?F{GQIOR;psG%Df zMUf)b>XmqVp!8dxhWd!ms|H)fN3`Fl_=!b*&462W|KwC*U)pJp^pyVC3lYMUCwH?G zPJ-XKE;9)WTN!)gKQI0Li(b|B*p^f>ifcl|l5!Sm;sdlU1Kf0<7c?=bKZN zGf$ep0M&9O;Ry&vdqGDO(=TvBtG2*HkBwLt(b=B%wo4AF)Q^TVEfG4oAjzYFeYi50 zQr|Et9^n3d>LMwIF_o_{scfJ9O17r|A4h;@xfG)RCDcFn{#JjOdv_MEn`O3g>XiPo zMzf&y-1NS;T6;1MP2`8fpV=tI;)qTc2$7wN$z>dIb6bML?TNb=WIvZ*9k+%QT$l?4 z!>RWXgof}}OKk6iB>p&7M~yGWxNOPeeBz;&^5r=AtguK5+|RbXx=9y27CJOWvSnfHR0F#FSJ!R#*Cz%ZzT`06ok(;7VUuHq6V^OEzL}qp zfs>3FkTtspS*{Ulu!~DpbyA#rG+3zM+_MUjS620}KBp9BA~57ZvO#f3-EQw}++Sq6 z`jSdsr`~=EK?rP{Pj)vce02WDUIITMHi&nFzx|{qwnak4?C&~`TBO~@N5aJ%?@BXP zdt!Pc_z`%ClK8D(%!!>MZVjmx@wec(Pe6bz@{9I2WU>kJMnglCh>edxK79UNAD*zd zF#Ag#-u~U%^(Rle@9UKf_mS~-CqdP{%wcy%>5yw3m<)dQJ7Lk zY&-H2rRSZ9&RY}i{_%xU2lI$F+6xw}su!-V|ABkggs%h|6>xYcqj}f|Q#mZE#Qnp40%Ge|Ia+;*(A69bAM-b+0A00$ZwS z@39r7ti>7p1>D@)2^$9Zi#df_mO$Ynn8`fa$W-9Y4ZAKmXX5;lu7&nys{-9&QR~twmpxh5u z^IEgNHbdQ3=xF?}tcFt0CfWguGoYOevCRe*f2(Hu--?ws=U!hz?MAx&IV%Km7{<;z zEbOjqQukzK+2JN0xlqqs+L5v&NOnP5FBfNr=S9xcxo+pWWXBn&Il#z|pOAQ$i2ZGm zp=Rydhv!TdC9~&=^a71wBk1Tx#Dt{aF=nUHcTS@fL?QNAZML{g7X{x`C<+B0h7q&@ zOMI-#!I@r7g;p!V`%9>4XJ}>5E%nNaT%+ZKM%h+Csrd&(!C+dkG)P})JVn7>=IU^N zLM({CbF!X4WRG(s7x0=xqrMyq+mX}>CqmioPHOfU?PVjSRtu4Ci&R*5I(p6@sJA4{KSd1u!#S(!TCXrdtQ&jg9mA5A}7X>)aF zr|U^?%T_O@oi!cs@6aPc>V|9)i*L#P2>eTsxW__62}#Tzn-7}O;=sZcG*;$tqbJbc zQQK-HT}|WC^NY4RE!g9E!BV+@nWurQoxCuSv*$pduQ8pN!AP=R#Ptfq%}PWaxXAk* zAZR%AV|5uZ;HzQ0d+dZ9d;Y$9eZd?He>LHCc;e$tBjle~ToG#m0_!o-5;|7u*+{p8 z@j==hxpl^`Q7~|16clZ~n@{Z>GyO;98%_qG zT7F)wk(hHIq0O@=9ixIfiaJ-EzC20r>2;0CfB5|Mm&@Qax_l#(oO;`guh4=&n(Bjo zf+N3eLrJvV&Dg!b_eDyBIMY1-V@XIofxy_Sp}HJtF1-u^W-V;yJujwh-vo&*oA z&efFPl2JS16>vE=GR!_uC3WY$=lsClm8%~>&pU&chsJg2Xu$acxa$=DpS6Ccq!&Z@ zJ)9##Az#<_$ZeB;+AnkPKrP)147fx_`)qll|B9`B?cUEeR^!DS-hOw6#{s-q?cUM1 zp=!*VKA2jCiHWA&G3|*w5FV6FkMaKgKZ~0Tm>@V7D@7RpvvLR8w=}0%a;q}l>N8}q z(!f)}AC0g4!mwmpa5zP?k@y#sNn_FH-jxdmi{?Btarx0>Q`}HRUydp)!#}wRhzew* zFjQ1Lhl+@MZK5wt)ADygI&%ZtuB^gXbG^OtCKM6s%i&zvA>q%V0n9w~w|b{!!=6)2 zmZa$GF{tcE&Eph>4MmupK(!+uyfStpKg6mWa z;t;TsSQ%Pr#^yfTZC#jI^5=vVCA1_&!6*kmQn?$??5CE($ZzBj7hiM?{4+f-EgDDG z(PdlF8pDz5zTM0S2&@>&i;(cZ*aps&4b$p)&m}AuM5#czaG+=l#w2MZ6bYD+!g6PU z`KnjNG74(WfX_|g1wmw5TIlYozsc?qJ$HDB$`}mJoZ#1Y0i>&_A|P}`BSeO5Piz4A zq?fPssCvznWY&?`(8&fw2AVA;$5#tH4*Dwm`Km>WLWdWKw@(Ran`M9EpjptFYr9SM zHp=uJjC+=LZ`)ma*EyawOii+a&+_#8C(qLDpkJRJh^}9^RSP0k)iJR!p^aQjW^N+4 zg6*zUXSO7-OD54ganQ{ky^guX?#lE;lPL0#D}Iy|c+Uy!PBF*ct+J@&=I~29R~V6x zM`A)J$A{NBngiNnwa8@G=eFW_j)2G9)WWIA(D@a70$JW;hYLhUT?0kBv_XkB4hqxL z@~BL-v{`HL$a8Kw6P{paT70{y_;5kl76Jz5%F4@JZiq&U+K33QcS{yy^D=cp0}s9_ zg7G~-tcX?q+@-n1bKm&gp5Sc5>qj5qHLhe4P8SCS`C?@7h?THW8Q%UNmD2vcV`<}w z=3FSWqZA*a3{?h{U}cEjGIa}uC94t+Pkt(~BVl}ex^vjOF-yX)`tN|=+IK2!EYqrA zsllzn&i!=P!PSbOG{q$B1~Id}8;a}gdBtlPF*AjRvUmmt7W73~I>Y4~rQL22=8pNF zuiBe&cpk4o%QtJ7GleEHJMx2ysH}=meS#$g&iASXTS*hU5g#E_EAPZL5jOlDVIc<- z!bHiEnCWG~MsxUvvx8lRmPSH&TX*T|SSccU;Jw2x`F}H$Z8vT)#)e!_qR*>?!s8_| z(V0+O@7u%bspU?a><+n-&xHzwr?X11a;@eC-|%sX=-#xoFi#1T(jxFPnO{PV*Q5r_ z22gwRZq$(w(|tDfWv2>+uU`BMETN1P8t#>Max>W=JBVUxvMC4eL4XXdRE*Qz;NW;g zBGi!JAd3;n0)x^X!_&b=VnBB8HQE-}=_6+X#bvW@&_GaxiVifCM6Imy0uZBA>7GLE zBFD+=bKd&k0%+~s*Rkl3pDhp#t?dse}N%df>54YZn*F*$rfmzhc&HF0a@BfoPCeZ?h28SjrhSqEk=yMtjVziYjB2}Z{9j`xvH?trj`%lQnIjAk>l**jix zzl8YbB_zKL&{>C*jrccihy%k<#dJT~@KV1#*&)&(_KcBYoA|aOVQ<0V7Ge^T zTS}54>*w%??`!PYgYA{%aQoj2qog5pv)B74$)m4dI*ZP|KbXy-5Y+oJ_R>iMka)U0 z678#zVSa_S+U63G+-`kA^jKKwe)Nv(4|JV8V+32YM}m^Xq5Z(6#)k&5oScPCPUftr zaUcQQqw7a+trtGoFLB}wAL_@1`4;kv@q@5qU|>jS=pm!;Dcj`gLqO-xNrj{!9|8B3VSYk#qD>ua>GhsFpU$!)HX)O@hb zIQLE34LUC)u=5Y4m<`tP9CBi-9?dO1$;Y|#ON=t3gT541Ce9VlK5++zw85eViDh*9 znD|j_%A=g&bokAVXe}b@t8XworYT7Nml8>DGDNZdm(pqCe?@<#IsAXpAV$D8G5%j_ z5XNU29sXZ3mcWOI*1V*%j#PnSmP}$O6o#_ms*Mt!EV;Gi*;wWmYGfO~k1gJ|RRbThqy9(I-EjkX3Vjz{ zw`qJnY-_g1zW~tIys6t>y{RIXmVDzeK`SGPC^=4!k~mZ;cB4-ujJf;YTI0s(pK`8@ z-s2=StaF}EQiwi4)#Dj_fzN!8!-$RLr_4P=xqDuNijQCyjf6Q_CKuya9o1cU4hm#c2wULdUQj9t-scRA zrSsSUc>->I{ZQ~wqCh8cQDB*J--5$wA7bE_HBbrX>W9g-AbKjTw9gqIlZXokUEy>VRpfAmbSCCCROQ5 zo#&n>>mxh(gFZ<>^#9eN-q7dxa-sb|3v9(xeX%?H2aL&opZ;$XZt(^oI*tKgRy>`# zgkfe|+e~)Ia7prRJGEEis&i1f8>=I7x)WvEgAgw1mMmwS!MtwF>5^2tfA?B*(zovZ zH5 z4<`yup8>KijIJ2!v~bbBPVB0uUH%-DPEf{;JbVcWcW0{<)o8|cS+Qif%^Gf}mK!-4 zAIT!sL+bq770cPzK3ym2VLjiHK_$ntvY63Ul+0>XES*+oYQm9Gz@gDkdIJ^ zP7dvwyp`-yIHI`)T#HAYJPd0aT&r;I&!q}mYW_H#35;LEOgTc=Kb*L*$>9mVwkK0m zw+xnKq1XV%{>OoX7R+dTikxnXC?=~j#6gSAW$Lro%{Jf_ zYz{_GxCFL9ahot7~J8taGVG zbHuWyhLKJSw9A_N^?lO}$TXjyfAeWmQ)WM6tSh^^M~djF{_kkTYW*Ng`HW0V!IYq$#z zQg?lQGO3%6V=cK~QU|^iz3bWI5pS2j7<}`;5%5!i2^KpM1sB)Ilp6&AYr%B#g$@4% ze0uv8Hfju_(d^Ekhqz1cMOdJ$zuxy3pIg~Jy-j|LrOaB4Wz)qoZ5VK@k@yOU_X4!TLU3D zoIWy3sebe{`Kq{Iwg%O%`Aq_V>K|WKSs6JSK&-tglW5VcKXuCj;^=fs4ovwHCRR?bAURNu7AKSM${iZ zr@slIqJlVZw&q(n9fEQ*O&ShWI(Ogbb6_`a0!Hz?W~QpyLiMiSzb+MW-6h2`LKbT(!cYI^8DO>lWhd6#>ZY_u^O?%>fv z>3WXtG-B*>rR*}#Xz+I>*Jk)UBsU8ql?zCm9_aG*ihI*ov4=!~-(;UA`zDwM*7pL{ zS6b2V2Cd0TJ~&hfIQuk!aMBmbfA*MPrf(W8vfQb@p)H775890_DYGZVL9-hq#Pa_q zVL;w7+F-^7zuVVuTV)pVC_eN09$&h+by5$J=OI&i2whkDmc6JC)y{h=d#}I7!}|nv zAcwQ?c+nU6queNS{q#F{*{lod-XMHlc``C059b@+#?VVa#YS+q57#cm#?Eps$uXZR zKcfe>vw1itL&_yet>U5;a^#0*@BF#7R=RHukUY*qq6ebtiy_ z8hn8ZLo#K8hAa~DA6I(JaS@cB@fbMn9u{;P+P|3H{4k3*$Q!O|`JY_!n0J8p`;l-6 z{Q0c^*I8tkg501{w9aK{{_06XiKEuH49(Pwv$cxv_DT|TtGlHUoMMubi(oEA=VrL+ zZ}Q`4;4t`m+CU%kb8Vz{``9CX(% zynOOGKQT||nZ@7mua{X@clBUBqk}b()IqaLP*zXb7Bu+%niR=C*08%w%#~3Z^`N~v zw_3wKA&P4}GOTCr;te6Ql`>77$@I;?99|mlU;?L3(?R#KkE!EY;Ji)Ol?SXeQs~#QAM5SLwBOSR*C6$0h=q_rP@=qvv zbn5WHLZg;&jiy+)hQl3aSG;3c39xUpeb{#eJy(HGHJd#;QwGajBM_Fq6`FbR-_@9k zBQ+#@;jF5pxaAA2c_wrYZ}+t2R^L_$Ns&U34i9iC{7J#TjZ7yo!N+hMIwQN{kD~Zl zla>zJ9S$Rg8e{dd|MlHS%Q>T~cYQYrk*yiX%r7}amkNzBe$Vc0(rb!Y*{Du%DQ}_` zLRbAq*h#rn{Tu?yTr^!dGWC#UAlBV5TS_8Wv0_Y-sSH)@3cJkSZR5Cw8GH>Yyu6rb zAEBkB`kqv@pN5vS_;=cLkS9dOsy7@fn$p-ntl0GZM8S_z?Ty~?GzCjHl(33iy_>$KeaSyGLQPv zQ@;4jyu#d;>1f;XjTp4u)dt~*yDoy$X#9-)s+KR5___Bsxp1C)9evP-*=7cyxO*PlL5nI&YDGguKd*kuOkA{yeKIJ~Z7+Y&B z3OG!%xPk-H;Kw*ws$yAbomZ%piVN$6OlFLGw#wW!dU(B(1-&vIg*KbN)|lS*i>95b z+UQyn?l1v;cq5sopcUS|uK%g)7xzJH@6R?4t6s>gFO4$L-as$brsB(z--eC|g>v0i|Xb1)klr|;f!`hQsfz-^0rTN?2|w(&s-&WIk) z01Pq7?zCktGWHAc`|THC{eMX1R6=QU>*F_<)THkufBrvW7p3aeLDnF6Xx514IKknY z$-a7Ugd|*S4BpP5*xIz>@AyU7%cHoIE(Iz{l++j06qX=ug#C2cgTY+w(Ou@L`0=%w z+C&x4J*AZ1iAE%F5tdig^Woc^Na6<`r>=DkV}=A;E8r{+Lx6jGZm=IXQY}raR&EI; z*q}0O`R-=+DHR+7+vk9PDP=FU_0xDG=V0f*DKDJIxsiu2-Zz`a>QaK-MRq+rBv0jb zg@BY|`Y(GI?tRF90;dh{s-cY{gUsiq3W6|la;NC*D2)uCO50+SE5q;pUrz6;_^9F( z6h}EiYl|TbCOu^MmMZh7E0LDqvs)G7LUMf6m4J^IP1RiQA&UwR@05y5_XiMeHk-b* z2$g8@C>w=t&dzZ7a_dXQl0YTqvaeCNqcEcgG65_=H7^d@UPx~(fPLdJWn zyR_S7O-Y32+PflPr*CB#ZXy5`k0@33f&2F<6jzHU1;6@iSG@(*5{7zwf|ik_Z z(>vZ^Do{t=Wp_>ZWqIa^(Hsjz$#V747SYP|tA6)q@9i%rPb4u|or!QWhdO`V5JPZ`TY9U@Sg{g zWfX<17qFp*JR>+sGChkx zfol2Prv*iHF<6uJ(cAMJ)~t<2F(b`-J{vBVVzbU zj3s!HuUrIh((sW^8aAx2L;v4LkafywOZM!k%;91&4XNL8FB9vH^*xOw~ejY9kP_pg=h&Ch3E z1iinHIgO92&5OELwb?HS?#29Qxaqd_)*~4bJ3V?g_2oh8l za`H=&24GHfYzy<%Js(HMG zNaH^(`V!6+r+Jp5G)>PU|5nbY2~%SyFw(+D61J~^tYEi(n~0F%txUB6?$6NIurvaiw> zeYCsFnFWttf7}()1(R8jc`}zI9_Yt1E*^JqN%cHy2EOOjp~z~F-I1$uA>+skLvD_( zNGvq9Kqs>XoZ99&{B9PDdw8{jqJ8IT1~PPesMeALxxA|1WF9;sD4+%LJ0L2pX?Ks`uv){N-2&cQZ4aXQpN0D>79bKn~Cg*YH4wt6#g=&(67W$)=_%7{S)x=zw zuI;=tyejUAl0$?Jop-N0Fn>L7jOn z`KWxryxEYxvOUcdyAWD=Fxb&U6hd-S*Kx@7Lm~#4D>x()tIlqU1kB16s>YqN!Z3z? z6T^`g{I8-vtD;NX2RB|p3Q(HLHp<)`4UfPSE*9}r( zE^@G{cx1$Z!<)}uLP1I@VuX+wDI&Rbpv9hVb7widCVBBDbcs@Xa;iY!1nm5=zH|+u zqf-vxczgFzK}>bSOGN|RwRxkz`1Opr=BPwX!wQa1_W!W=PC>RUOTg}G+qP}nT5a35 zZCk5t+gfegwr$(pfA4+H`QyIbxbHU~<{VKmW<|{!BdaQ_zRV;eV5{`2x^!iLaxBEZ zRsh*P-qHjyW1p$@k%36@)R2`nZAjIq71o75zRtbwh#}92`*Hd2>P7z;OTfmj(G=YU2sUu{k{-Bsb%8BQ!d_vQ#GCe-;d%h`{afKs)T{A2ED>dbp9yk+R=ar3K=i zLSF1En?#Yx2^5!ll3J4*4JZN)GuIKa_7tVY60E^l#=XuM<9>x#Kf&;d2ZXt@Q0^ZG zjobxyGv>0SD)KU4QtGM<@vnqmOVWxK`2F}~01`q#h?__HoBi3Y3;3;IpwM=gHW7R)ljy4R1(PPtQd@Br)|5+lw&s3iDvyfN!R?Xw-pbsO zTM=3P%Rm7zoY3$0gTK#;(#h1+PK{*>Uomg4wkLeQ1&T-%_fN*Y)$3$QpN^y=F5EwA zd7wpIB(yERVMuE*g9}s;b*P5wFLsZ|6@m>WF&KJatq&z(t$1^sp#cpl!Om0gj>4OG zl%*F+z%Wp)+h&#E5Nl|R=DuQ?ufDJb?@`35N(`>!*fYS1b+&^eyETX?bsfzfO{zgL z3@vGnHQ#z;MS2@P-Lcmhp*UmCq#)cWv)h~O*>o=D4cJRms}DDzkjj<5M3;R4wn!RE z0~GB!3VDw=F7hm43w%lVEu$N)t;MmaS>r7bEW4QTu_>zs){~gfwwqb?x6bBE%~6Ep)Rm*ALBI-5=q!WXTl3dnb^aos_OL)u`F{Jq9AXE3(o{(10P znVG^b6@ALF`|lS}xEJ+Ofc~WZgVHfxo;HW_L7| z>=r!g6Dr>Grqn63-{oy|T5~BHiGu{E!GY9s@(}nK`<}DLOh3nW25$Wxj#`^JyYgS$ zJJ)G~N{9O+XEk)&Y%PQRk?e^s-FSh>VL4?iaydSDad7XLoNXw=1Y!93w_II4U~xaf zBbcwQuT#hPcsSe7+eg{!z*eZtml@NSS6(7^+&`!LN=rH6*4?~K0{k_%T1}Hyem*;* zZ%$dk=P-N$eS+?X-u{n7oQ!Wy1e~v5(Zl@zS+J|ceGXM&{+>qqGkNXgX2ZCy4KQHIK4$=63XM$7InJr)m!fDbZ z*0?bFya8}~f4X5LDbzCLDhD%EkSYk##bx+9<)2sLWOjH3JAy4UHf{1xr787GOqICL zeQS#Xi%_z;R_%{9sJh{5P0t>G>!ln2XB7735Oi`fnu-$})1&=h3FmuqgNIKOBw*4^ zhy4f?F+9t6ti&@0%_Qcye`cw;9j=;(mediL7lpc=>cF8!F50jD#o9OrD9p>t(UafJ zYQNE+QY#GeKy6*NSr1oW;WpR2?INi33zJ={b>NWV$^5veOD>ykbG*upJ!NgGV$mgy zg`90E8Vd+_rtVD1#^_ebY}Ts^uHCY2rvAz5%CtIkA`JH(uR+Qcw^5^N-`E64*hC^n zNQc_C5X1nPRvR0`Sv`k0^omKKE;-Hj^6+e4FaEC-xo!nZV2Mm&dqOW+1<#cp-58wx zIOY69{YAaHc$U_gon!KR$-PlH9bLWgp$V+E&&Yi(yHap8g?1Tj)q9MI8&|v3a(-!; zr+ehQSd86XpZCW$C=wz@XsMyZ>e!?Cyf1XW4^6C0c9lOeVC;nc-nLlFGbLzI42iNv zjL~jimlDNCVla%aNuBLc9~8Qi>!7K$&=efC*ftS_dfzs4#l+5Au)WfsK*~GZ^>2-d zC#GlcC<#%;Zr~W0H3lOkh!|$P!Eh&ka~8Fr;lZD|815Xs)Tw*G687UV}=y;pG~W_uF%~ z?kHjb@(A@;N@febu)4quc~ZJ#=mgoB8YSNt(^Gnfu_*4rsx-=@1+&SwW%VSZ%c1cb z-UTcq06Ed!R$rP5*PNmLV;Y80Oyq{zyfwNk4Av&N$4STO;|woDOqO+PA=Vf6=A-2? zp0rWb-){EVlT^)i2N7h`{d@4vG_@7?RG-7K1(qnE)La^`=U_Y#sRzQLm-^}*CU^Bj z_U#-Qh_pCm+*>^7YV$UI64##(jH6ZaC3fynL|LvSx?BWIMbo{O4^TQ|Iao6G&+fn! ztx=Z~)8Jio8H-p?j#n{!y>(?~7;1*96(F6W(fO9j1>BipDpX>ir}x(*vd`N`&)VX^ z*&3q(i(vM?A2G2fdMbICQ#_)3*bITylG(-9VvP9vPQc!6ZEv-0 z6CUY{??}_sv;xwU(=B6z5Ue8yY> z@_+r+v_5#ff<3`Uw70>`61_O~UMy?5z>Gij`ibNBj|lsWY?>vKv#Uo9ISDBU?)d^6 z_c-{NJ0+SN(=si}x2b6V*CN>S#W|HQf`AD3%H0|5?FUvmlQ88P)l2;IA9?xqGh&wb z{reyWef03KVKpVroMjiZ9X3d=+4S93a*2rGzj9k6;DF+#D!jM#dQV9ik<0#zWR@=H zZlwkN2xUxyi}2QyfmoTL&HSRe@(nQ5bx&DCJuZfjvkB34Uu>HVx-GkFYzdR zp9*?I&83bqeLGsy`BNHUSw~>`o_(84F2R?6lt?P`C;C^u4RX(`T}7OGQZ#4(Jez@U z!qsTeMa!ke+Lw->6N2f9G#0wAs){YPeEo5`?XJ1q5v6k3b zH%RHe*ekBD(k1Bj1S-wzrL^_e7}I9HQkGm%HhHI`Q@!BHHRZE^XfZ669<+*wM<%HJLAH ztiYuq-*76$oeHRF#m4aSUsxs3&SJVYAzq$`kc;yxp6HFJo5P3hbNax9FwsLC}JKv~wWk)r3c|--nqD z7rH3yln+DqM~`lKX3J&*1W>+C6@GhBDR6zI#Gger=Ku*+-sEeVzD%cm1laAsg&6BL6DL%6ue^}(GB zu<$K#-=d05m~k9X7CsX+KTi;A1~lZFjpN%wY*1MS+JTGPAM5M^)Z7T z<$x9I+F9rW__$L9p`M^7*Vl}7*=KX4%Krt%gp9DU&XKUytyB=u2y&!yShkQ$RFK?? zfS%KDUXZA_u`HXbNJKWKuAyh51KO_9J!iUx8M6UFNH7hShzQ}NIds$XXish(oR)@S zjEyy8GK0;U&ca#VCtw(5ZIsNESh=HT4*P!kyO1CnY)DvsO6%enR<_lwtoK5R^x?PWoBB^0uq7#3oj5+Jl1FeF0Pt3iJ z(2N{VW2-L_YogRh5!~tyF{W%IRbp@1azn|Gl0tlc)aMY=R4xEQ1r?D}TVgY8-ohLH zK9zEP^m7l)~{~8Ap1(mwZ@TvmT@Gi#L32XfyYlV8D=S z-lKSYV#52dSDk!9}kCYV4&z!`V|}9rN(OM8w>a^lLv+0f2Ic#&Y~#+EU>Y zSAV##OQw5g#-7?5;yt7Ct8*q5FNFDFL`!4Z?d6$5T@Xp~q2-*-o4roCvvu&YmxXDv z;dOryXtwccDeQtHd1z59%b}0O=#26*grcS0VFuZYmmC4zepr@_45Adl%Mq;!oSC%s zyMtPKnxW2EHs;i4YUecsUVS)WT*~n>eYGP}d16Cxi#vu@1#6*l&S@pjsfZfvJ@;5j zPDj+fXYy!5iag4F7|(qB>`Was>R=W5yCM`QO}k(iV@cDfdA6$0ZbMBK07%CEfSPX1 zCr@URGY*BdzKs3&9sAN}($-Iu%xe{R@f-6`wlda?_p)4YHGz3qYs-**SP_YrgUM9OEe~S-4-MFmUd>Ut-<5`5r5q8; zp>+1&z0NX~cp{CZol$l+lNaZBj1)4#b|>`N6bWE6wJq52?!NYzo2FZ$H9BZ-&bEHy z12|7omr~!>054W&V%?7di56Q~yf~TU4@aEqLoUYgn#Bk3XQLcSHTF0Q*=capryuW_ zE>_wTrEQG3SLrhEsD>OE@v(|`qdpfW?@Zk?+`pYJDK6TaLffx?LJ_yYv!OobnP-5w z4H#)SDeq>YZ^lpgy5(*gGlW)e_up4zX$~(FKdt0ITX4l0GPuhVC3UQ<#-etr?rWOR zTgrOuoSycMvILgij0K-|a?u}Ks7$KeKK;c1W;47=A4a}z%q(ELvU`8v3{mzPjhUr+ zb@zjsW<-XUCL6+WK7RY!WiPc&hI;#Gdw|4M{VEJ^@@RE1>mHvsWBWiChwYxV)e|ev zFf)Q&MGSY!8Ml>gYuHIg?VfTxJnQsy%Tybb8wQu5!ICXeX=qJurF>0#UH%QL=lY#v z&R_y(dm&bPJ0Xp`)!LKIQAK`d$L09eod5mQoCBkJO9ZFllxP2rfgM{ho``eY;`j{t z{$&+DbO_>Pxsl9QEmDR7M8Um2n{u>?X2;&+hpMPjYdx+o#4NwJ){S=VAl*TTXm8Bg z&2l;(?>Y3K<&%i@%+20uPaGpq9ray>0i>;aG-|g{i#63{x!hWRgBEcB&y@0E#(|>= zYpSZoLTc@}AG7RTjq?#nOR7_ewVjns)zKyEGHvAR@?Mt-NWr;KDh)cUCm|u`9jNBvYt!ro1F`Ei%tQ7B>CjvnO)o zg43@-hr~Ix8M9vXzR`Km*8vNLcX$oFVV67n6I)_QuLM+Xl2vjz6V!*}43<|&atszgAj}-9Kh_lM1&aIc4r-`Akh=p95sV?xUgdqX@|?Ra|n=lR?YX_Cz@zIIFi{2?OC&RRTd zIY*#?;?K(sdxA&qI^s9sw-2k8(-WHwW_o`b3Cl;gDzRq5&bq(++bdy(Qrh-hF1a1g z1+9V*tv{#7GfW0qqjI=2O-K&$*?RXrSv?-M`!vTzoi0A04&BBlwf9fEA9(3vqVo3# z?hDtNb1g&LQpvh{y!Xk6u3^XO8A#}sbF!8lSd_&>wE@xWk+La(oi4D+D{!w1!1pHpCNEesrC4%yGcF$jy5epfTpY!* zi)I;4jx<59eUi>=-TP}ot<4oan{0hD$2*hR-rV$}zOyJe49&6m;AplJ{7zu|_c zDAgE!E&Byb*he&zq0e_<04=*Ib{sRtcx>!{H3Cte*^D-L`!aM$t0wa*cxikyEit;6 z=~#6p^EUBpaByy&3Qppv|BnSwR8#3%8tGV4q%V11m87<{4ua+=^0eJuYvh5hllHAJ zQ6|l@J6?ELLuN4Vj~GvRt#FU4VN3sK0p?09yIU3!1Sc#aVq8bBxUb-_@|j#wTtYdUZ5Xam8m8)&MDFqe4PXI(!4vpQ{R2DtT9%-wu zjyYUjJg{&!Rh*V_>S0dk;_%BFn^USs0Hde=zTFPaw|A?+dBx|79_A5*-^i&zf8o+K z3~T(2exewOi#EDMf#4TOV7XKNR^mDKwtYw|jfVkYArF(JL(D>nn>p=nyrr!~kz|=V zl_@slr;*lSn8}7ri@FDQ0LpLc}RlM0<-SstiKIg{N+b^0geP( zGsv_Wj^WwF$V>DZ)<{y6!k&+&9GllXAoa=c&G^kY>PCw*aiDljfAKfkJJN@wpSPBp zA^fr^>0{0cB|lXjFb*!olu7RkW-A4A1R-U0LGpTmq>`+zpb*mZn4}Vu8)f)B!z^Vh zJdw_Y-e*aq@31M#g{SZ0?36alWa_VZO91N>lq2(qQeJ2(y%A7sB1_tFTZ}%2MyWC# z>NS;wQzrp-4y!+oGb}^xg6dN^WSU%4KE$ZM#|ZzVXGYNbQ8c#{^>oW?_k5Ydo96@# zdRr55_%!DJowE8-un{gT?!dx)FS^r8U)NyO{II%sWoS)7hY2xE$(8=WZ?FqEnB2eE z{KQXVR&U?#(a%Mpb`!>^&Wzmb$s}o-t5GeW+IA>RlNyXTQsXS9M@vP}8T=bPxoR zvJt;J;bX%_#3W!L@tpW0?MzBOqOAU)R5ImG$G!8;j}(-7)#Z`Vnl`$1Hv!h zmn~kruyiKnYMimGbX2dmiYlm;hrlX=7&}8VYTKz}bkd<*@{hqdF%qf8cO|1#qmv5$ z=d3aPmWqdB!5nVAnDxEGM+4gMbih(8GcPo-&A8lSG}{;qg5kWUUdR2Game2Ji=CB6 zysvgpBIf!k#Q05V?xPu%9rioz3xQCbD*~E_3hQA4BnqmGF7Z_h2$FG_0%(=dfSGps zuUWklo#ne)$?`m81;Tl0DT2hOdR(D2g!y?lfw^T`uCZ`gMAJ&S~tD zj$E2?8Qa6EP_ppIHG}v#0&(&H^)!Q)O|K|%F4Z=rI)Zhb%6|qsI8wOmA>^w`%P47g ztTEHK1}vBO4WbWb@^xQ|2CVY}kHfJQ3Nr9$-=4X+im>y>sMANMMcA+LI*g{+`+GjD zs2p;GNJDiF3LjNFxUs=@GD^D(-hj6^3|SOklt7g(3$~-%> z)ia^`N?@Efwr?YPlibT0|EWconOPY;nQ}eY8jc>#BG4F~H$}}VMN8E)p`5j~FoY7d zPA+^NU^)NhaoDQ?f0rx(=(1!M6Y2G8y1*aoev9&Uvo*OPj*wIOZKg^}g+`3tT;Tag z6dcdC-Y`ctyI;vsIEsw>f{0QXy0`aMoh|y{@PyqHAwe_g7B60LOQ-)=$u+ANb)w<6ej+p{!$Q zid0=u@K$26LoTZ>J#2S;HuQr3*$I4h1W8B1u2Y^bSB~T5hLI;68J~Hct~&)a)NqHc zq@F?GN3j$*ZuPDm{i~yV!SN|L6CYEJN&Y z=YkxoY+7e`Ni4bej#_tBla<{lp?W(~-!e-U_wktum+f;awd8BBskL41(H{mpd2&@Y zPLvh?dxr>Gwnm*DDzA6o)vlE%D~)YN^gkP`A4CVeW(xy0J)kkzJQK50zF@^mB{wNP zq;w+JMUF3nzlje{jM|!T`#_a_RbLcFbtcVyqf=;SMU8)rmoXO zDf7lSfNX2S6E?jYsxJQMFuWfKnHNUHXT077oF?Kvc0LBrx3ypFn(k39Ux&&91EPTY zA(GLQpyoUDKA(mxuyhB-r9ZPXV+r>uT4X5=72asDR=Og211E*-*3JUgw}CrlF~4Vi6J^j**Px0$;3f%Rn8~@^R7!VjdgN^yw-%|3!wqc!U(a zcZ5F9|M3#16&qU~ch(yC$Yvl=L7BywJguQ)47`j+v%?<-8LdELuFPTC4oTY0(B&(_ zJO~~`hb|F|OBE-(HrS^dwaALD+~J%x8P9c_>XJIR0Q#oRs|w8BM<(9WGsRn>4^;TZ zJETgGt6l}AZOzoJOU%oi$u7^|Z11{e@|qWM^T$qUq>j=&sZ)3G{q`XVQJ{o?hx6c% zzE*W~6DU3@e2zW5_U^QyE{NHh0)->TfL%<@`mkiMpZWOIM`cdq5d^^di}$3p0*Ln6 z=Nh~a0Do>+H7uh*Z^L8Y$zv!LZp|LAd-5R()@-{_W2LvmBV@|Yq{@2U^P*#X|93Ru z?FH3!Uj(>HLdkK$M<7fzSYie3D+Ie%_dhe}O}k4VJc*f7WxVUqY-1+t#9-`3_IC2rc&B`l?c~a9 zgSnAmKupLl17fjZCzJ3LKoOg_PAN1V?Z!imKLjaI<~gTj-lPd7iy}p1+1!UnZ6}9L zw=EOkNJJRIg@~w_!H}DDu^1=}qv-2Q*Bx?~PkYw!C zG&FH1Z()0bo?n1|H1X#_)}fVqUkH8 zDguY+pU`G3A&UB-3%KlQEZv{N5I{6WetWx&oG}~{m4b2IM)dzxA_4wlP3jCnS~H70 z3cpf?{IP`D(w^fBcO44;0s|fkERs83<^WeZ@7p%#-~=#O$5(Y~jUr#;-6r#esp0`k zdGi@|4J*7p2wzvg_p8B9)zu3k#oNTqjOu%Nopc|d^m1#$aA7`o!9Nm#Ye`m%CS)W6 zve}3Q@ruPR*3|Xj>b(sm0OZ2b<;xZRI?1M_yWbBWka^%uPpdG`3#PKSvIw)4@+oT^ z7iQttLJ*Ru0w#WO@@vQCwPf57s)P;o!vyoT18~b6p8G`kxsp|&N$`e55Rl&e4P?)) zK2PNDvRhv;!$^g6cU`*W=n;-~jtd{UK5G9<=51Wvf8cImgv=9zd;V*)m(Q)+>!&Az(@ z6P)a|o^wA&%N1_8;uP&V^~hufN1)MX@`=Qp#G*&VlR^UzpZ;5h>a&mSFp@nI7{CAC*S7(Z{5KVgiyb<=vV8cX-sb z?V9FU=C*1sz>StRyZ=-VA#%%drM=cXxuKaN4s`oubzIDoysMLSJK%-~H0Q;CSm!kS zcQ$o#-Q(V0Q>gTl)TE(23og>w)8EfejkOcjx&re-dm)Tr3W#Ti;(ziX&SJcSw=t%; zRq@$uB^o5oNR26Zb$AQMsO@Xn2L#I(G>1KD;0lMj7nwChVC=56jrPAmN>`OBHyl7|Xh1Z&ks~)|K-Gi{B_d zI&Nf;1)>gDeqqHFiNm)x0jQu*Df-@ctvOvvF=>8M?@N-O4cv4#pPrl!`7C>1aJiuH zT{~Lc@=j-Gb*^|gP|!%t7v*_GkJkeMXSnFuUw61;bPt=obGoblWAc24RVCZHA1$9# zG?+;@llnSbPOxajbmYI^%n@tZAF5dy9yPOmf4xQhm@dM&uXWEnRJ!|&x3+*-5Bb3< zP&UJ+^sB9;>s)17`!^l^`^X5b*4}5n4Jz-QKhdORfSm)CQAC9QLIPV)L>wQWj70JO zKZ(+(NQO=evlGQUak^r*)4{)mt{c3yQQOBCL-XDMicO6@)=D~P-ZWC!Sr`{56FaN+ z9W8Ac!SiSi#5=(Ark_%d%QmUtj1yH8arXcWoblu+YGtal6zL}|%(gK_gQlwf_#=NH z@F`JNxtk5VxFNiN92_er4sR4hlny+V)V|cxj$gPV{~mis5po98aghSFhNC2>1HvWD zy-Tnv35y9A02-mHoQ@S^pqe;>2QxsBRyip57sdFEaKHEj@*5&19kY z3!*NXan)m5i+zoHcHdj2y>m%Uzt?;2>9Vt_OWy;o@1-5$h%3q5sfZwZa3)3G`{&(SLR%N9}y8HB48?|&e$w=gg?yhv_W~C2i zPh{!GJBtr+WCpsJY-mD5qHrnFP=?pIm5yzoBtA&yVPlQyEir^DLd_P3FNzn;G&*1+ z4JTXwx^*Ai7TlfFT>qEWY!S1%n4=Ir(k=d%CZcPNbO4yq6p9aYdel&Q<1M z+LT7E&4QsK*{LW9zV{R(VfC4{LV?U=fG^zO$xfajIObL#7t<`@H?N%Tp#kCe$ROGtoM+95@o8P&`V%RE@)r0TVayOIL^D7jx-KE$)$n z+>84id#EL_Vz%2Iv9hpH$_7$Rm~#KN3kz zXUAw6)qqa6Yzl0_N|w*4rhw5G$v>!Y^A9Tg3IXTs7#64U)?nyH)<)YRfz3ag&Rkg? zo$E18G|jf!k2Uxk*S%AO!puOmo3@yd-$W)ly=aDiv;s_Lb$&V0p4NrKe!c53e}13sDbiH>4FXxu--x_ zLuulj>I7J^<82}z3@ZRM3=s+AP4SJdNy0&*`N$wn(b4s*G^22E_7|;y?iis~u6X~x z?~I!-4O12lkP)(q$?>XW zM@*ZC=1X09+L`H}XbgE}r~$u%BatP}Ys!~fsCoEn%{_;XSI1LBiVdwTPQb$`wz%Cg zy;0@4J)>;*;5160n1{=%OvP7y^C5Z15@WK`TnH}`wg|uh1vLaWf3oKxVquBZm+x2_ z`OI3+Wi_cdAb)|`ak%_it{601@6>-1_Wy^g_!j8eG*j|E$l7KKSY)Oa*>M@7^AgG^ zYIt3hi;=(QpuSW_R9|p6k+$1)CfyV$iAQ3^1RU#$%!C_h!zb~?+c&DFknzPg04`z0 zBPDN$Arf^o@1&AdG)CuoE)fc^iIgQ@%0vLVm{I9E=sCII9khgw(7=?o0KH@1qg__R8;%h_m9h^KXjEcGQ*pe zMsWu!!&wrGXKvuk@O8+5}7fFNLnWUc({Y9fcmd{mN76(kaq3;CGrv68sN{ zerMe^HF3vVf0?QAPT}6^3wCTM>~s!m$RGWHX&m3$d@gfU*4jJ>&c<5F6PlyrK4uPp zdH7ORPs_-V#$}Vz&?N+YJdtPFY7{!fu1g;O=TG7iZW&za@=OROlTExr?!PL7MsT87 zVvq6{7zBXL2C16$Xz)2DRjz><=GZg-Fx#CW1}yTOVYY-tll3vLqlwf7XlQ;-4gYXd zB{^%cwzRD7BA>`r1#42_)e61N*iaACo z7|OKUMM6}mxe!TvWr6&B9>JruQP?e9%dOnznE2sq$WvnT`E+koL?m8ogD+6~hF86< z9r61eJ3oYo#azC;24mjKxuu$`Wcd7y{70rKogrp`Jk*7TObN_PA@H1)Ufc=LXKmR`R#tC0 zU`^bsXgla8XR?scD{6|kuj6@VcfA^ETg7Js>4Lh!}aioun%FTuh3~a6|4qq2MVE zks`|rBiR{aDU#Y8nma&JMD!(=&8IqOlp!+p5X*_R}{d;dBnmvq*jT(W0Bh2&>Mpv%4|eStXErn}WL zmQg;IK$i5&58*V+^>>fvOnuEceyJ|sINu8sF(Sr z9Y|OhWMa!lWy}n5XK;cxW#I%aVqK<7;g3ZoYj;t}r?F&AUJX`Pb5(15W%ku#!T$|I zbt2E&i3{@QHD$J^!$e!^bK3r6MVy-#U9l+$VU1#!o2NVGcE1T;%am8sWJz4M1z)bz z3CF^WZ|5O=Khxt+fQY(e1jLVX_jd1syyUH%lF7mn40I#i9mR)?iCVY?Xe_(^7p&^^ z2C-HFxZnmCuI|RrbpjkgGuz?j`7<)DYD!3vF|m2!D5W%SxLYRoR9r%=94ei_twB0* z=)1l1J9NlTy06h5n957d>>5&bsR;a=SF8ZMoZ-VcD5c~@I~Q^ZZV?9R_@2Pd3=aEU zP#y7NHMC_RO)313G_dLh)B0XX@kR0R*Uq?A)xE8IdXu?B@4XiaZi6Ut%|7_apyrKr zwv=7RO*h>pvU3-yyrq&t#55zH5B3t=VgvQ1cmqrbU_S2NJ%(<_-?vm1tTDL?@&Gf% zPU;wJu;A`J7(_`D|s!(X_=9SsPD#l->Q#y-^+L4Z8aP6vL_n?a!$oV!9T zW+MHZgW+wp=_2ofrCe988mi<$mB0QuYNM0mvhY1{?x6~(_bQGQ9Ea}|6b}Lcy(8V> z43%|5s<4$U&^Ypg4dK+4@FMB&sRk@ljoI}%CWYIZpwJb>n_PJAXmd?8Cu zX&Qb@s7f4zTF!IYHW}&*gfcV8TuK()WlWUq9Lct%gK(=ZbbxU*a^QiEFq0dQ2t^B( z-MPH?^Nb6oC`K4Re=kwvFek_khJo-!k{$)cDK#w$PxfJeEHdUM`q;os&h!+!O)kKA zcRYe&1Mvw>sa+%jU7u1sQKfRMuTr|Y%pCq2rdVM;7i1wqNzciKC}*>&)bdQTYnS;e z?V`Ug1fU(wzQxnlv$Q>YH(aI{l|I#LEJQa}bpCGeK(h38ICP%RcWbGM1zBQYSXz?B z3TBqn*SnCDV0yJ4{XT z9Y0sxHiCi&?&A?`%|u!^B$<*N*>vOSO>|Jce1Xm7zi9hZ{67}JQ2bJ@qYVtDelz2R zOUYHAH+_a6O+o%yLPeUK+D@-p%F*}Q6AHBFZLLeb=7u3#R zd&?s1_I{TkW!%Da z;Oc*1@#@wnF(}O2al~%fUB>hn#TEy5L{>VLxyr2^HxpR4IVXdq=!Pg7y3hr^>T2Dd zIUclIuTKDDeZw(!mc09$E3+!|;iw;k{#xsMZHuFXGo=>E}`6)8u9K%#;*(b7Q1IZr53D;@;ttTkA zuCK6-T;xTK2mQGRfQ8Z8bYz_m_35-j0QF||`7y>&3k;8BM#$+;OZCooW?Wv|aPg(w z)L@uJpVNujI`2~3Z1ZIf4#4a2VGf6d=<_W)2uKJLQV}R`DoqR4^S&Dfo-*U~l>O51 zj&|1=Lor#qr((F8Ef6Gxio!qg;@D?@3y(|VoT@8xCO4^v-t4SCEt>G!W1cI><5?c- z>MNwjb%-z)AITj4HXsvdX>&xrw%6PcGh^ULilskgkKqLxq-r$r4bN{vVWJE9htDsdBsHqK1}Q`fF$Dp7Qx%YgZW6h;tD~8j0Vbthdb1gSnS<_ z;P;nq7*b+JSoz_^`lR#u;&1ejPYvF6hMfz#(f!m>(rZEVq-xh?*+n#snos&lFtTq?>)BWGvpxD_ zB($=1vWm1xy;?7ph`txM`1p*$f+kJOI4@w4Lkp7*jRIfm1v}O`(gV6?!~fScCk?dG ztZNBuIfhrNVl75mU6A@95#1%z^WM^%MYkUP9y~<^YSrljcDfHKFAPBCFw1N~pWG0P zx#w>F4^ns=cl1&L(5bf_oY2A)Mg)URROx1@w>~92OrU9ux_y#$)(RkCASfQM6MyZ4*kiFB$w&>lgK>@j+pG2+g(Os${RPs z+lhNI{#Q_4tENu+M4RLfqMN$Ty~Hj)Zhh1|Hd%5WKWnh1?^BI@ZYy{|F{DB@`23## zH6PI~3$DGKhE0Q}Xa2zz`nJZ{^{i)N{djDlrjXh26V&2-`X%3)fpMVx?@hNyTz7Ac zRtzxx-iir8s8~|uA`pJmJ=PF|*#b8!UR%$l9hL%zF`;Um#ow#7;E+~@K}fLJmcOPj zk*Ku#m$bf9+K_}Vd2xwT>LZ%vpjDjCxi(X!-I34DkA+4Bt41g7Ni5plIvyJhuS-5A za5#O5DD52XJjh&Pco7RJ8tBuHwO}v!D;yZ#>Zk zRgOt7-$eZ@Pm7VhQ>9~F1AjvXPj*$K;(YGSkt~Zz?puSMtUg$CyrCsa-lnA z7fg<-bIP(ctQEfTuIkSc1f8HhA-cEE3OMY9547hmCJ6}%>4=#vK1B^Fy&A|2yk5B; z^xlDouEX%R$+XMzdtQ9|5j(Pjv8>Bx>mvXQ!aC59F-3%hb%Y1ZV}Q8_4EBX!bJ*G) z7AwMc#(3b;A2ECX#OicumUp-#h?(ABu2|0^Ri$w>n}KT1vE(YJv2`TZhW#e&oc><# zG>&cYxI@hJ+C38~YA`&4m@tAgxm0-ZA~GV?Cl! z0M%*Haqcj3FRZgMy0KeQcP}nLv(M^-?VQ-xIVAs5R(D58cs=y~(Y?8jg3xoYghHWt ztGTq|eAeEPT*SL3l$Bu#0L{f3(wSW0v@hRSeyA;K(~(gSS+; zRN@$J#ps{ISIfJa6gIM69BwE4uMALb4j>}@D;58C#82q}Ww7Xfis~ft08Plw!g8ty)Aptck`;%j$^y+!5Jvp#62$o|_+Uy@eY9;A23h80PB@7}v~-Ky`9 zQ5?)UOEDp;OnUFU@1VLvkByELCSn;HTb%{AAmMjZR` zt@n21SSJ_>u{=jpnnFebF)YATvLs`CImo86^&Ld~syRpJOYCp>W#TVb@J|h49YV69 zqCy@L-W#zBYAp=s>T9_9aaD}$l_|4@&X43NpKVBbp)tr&l zFscuYX_hU^Y9$THUkx(%)v@IUSM7pCIe=k@QSKDcC z9|rQLGs2kzsMd#Oi)(m2q&%{$FBSbz3#wCrvtWOglZ z(EtA69W?gm`o^BJb7XeZDX90Y?%r&QT^53;nQ8X+4uedV0+h_30dZ8acGGuCy}FsN zsA8&7MZ;i?$J2H2-cLb>UAx1! zx@-knSJW-+obkL_Kr+T{clNj?z*FuQ_ZC%MT4fxkUJtDNFFJ21GG@B8N|;E$2m1L{ zzE=D(Me6rYFQOt%T_XMucW>F%R@AkPwx!V0A_a>~H)myQ5q1P; z{$op~%N@$H(_zHggel#t*^KNixquf?m4 z6Eho0qn6AdsmX4DQpTrLK-B_# zYNiN^3$Hge(8j(`@fW$NIBNSkeXseeRm7$%abN`J)-`tYAa%Yf4#%Tzov=E@pWLg$ zYdD&jN^n>0ifQ{L&|UdeChxF=e&-3_YNP;%%M2zp zGg{c*+34xSzOi?CqJOKM;lX{UwH9BvMTVU5GBFryjXPsYwSvT{R7WlYKSthhx&#pH}^KM+||L@>tRGr_PcKiPcYj{i>uy4@}B zLSX-1LAy5g+(@g)NS)&2!h~SSacKJ zNtsid%8}?Ps_+49y)mc?LxUF}Y%b+-H86(pZ*A3LkB_RFfINB_w?m}wcjunUoi^bF z=K*})#U;JYw#=FQJA{nO@f>X3JKo-1n>68TX~}_NqkGA&M-!i4g0<1eaD13$9C}KR zKj(_!U3q44!^L&wa>TsK2%hH#duM+aCgGaTh*|T18uOe_08?T_xr4D6=R8UJWOsr8 z()DVO5YRPA#=AT+b7+CxatFC;KgWV|Mc7Q0TaV94I8#u)LSwp~5g=?X6)i_zWns~c zQd_0zz=f@spRhg5s$oJds}+kTh(GDfwFN_MP||CU5mkc6Zzy0=6r%BOx1lG*r#dQ* znwZi&#&(N=&sVs*t~9>%)3Y`6puKZFC*02odk}s382hTKYOw53#3KT+gH@4lghk;q z#2h`N4$$XIIqq)i+?|S$c+PODcZ!o<(R#DZG)P_!krM;k-*#vWQ|b-ObSndI9+T`& z40qe;v?DWCbu*9k3U!edUR-?Hmk=Y|;P5v085X<&uU7l?@YsV<#(QX2vC`mavtg#g z?;&efz?u!4*?=rF#odiTe3$NQ%ql4C8f7aWQMy+5C5{&r7)MB5~pcv!rfsK zPv}F%?F*7v{?)a;2&?4!FT;klnXV@V7}lC$*30~iPkTF)kzNb3TyV=>aGxF?oWN8@i{a;s0#3KnupOE`)rkM5ZhSGBzfS@J#xkYbIz;N9mC87;Kti2k zix_NS>aPGRJNI)3z!US_K|01gf`eG%api2+OFo14GkwB=8B`&#o`X1<(c0nzFeH9f z{+JjZ79S~JnqEH#ig(Nk3H5AMn>wIh;vi#c@dJau(x_CgY= z&5C8X8XDGcckUNA2j`-8z;Lcvm3(WZm>%F4M>XE@E?Y8e!Ja+Y3d^JLsfWf=wSSr+ zx?a~_E(?=?LDAGL)tRJIePS$8bsz&VZS23t(eO6KGJM_s{Mi@TS%+LN4>F?w0lC`( zs?urJpdqU3C%7Phz)pXs9WS-jJ=7yJ8p49!^<4IKohb9_<>5M!HMxTfDHA?XOf<9f zqKzDJYTr9Ssd;+30+z1xlj_se$IhJq+}J9nVTZGP90p!9IW*TZQ`wh2Shsk-Ou^*y z=1^!xv)MWp8W+8ybO_&rdu%jy!E*|6%3j>zX!1trg9gEPt4ySnpAc%uPLJ?$Z1#w5 z@>yB=LKk3dGluFo{G}gDE&P}nSWh{Hdp#IwDHmF$vKVVuUeV2SnZk@+f5krS+Ryvr z>ZIwvZ`-;%Cf*v61JiQUwu`PSgV$w(^jq(~-4R|T&~7_~fW(g+wedU$8De)`?-I4v zS`F7(vEi6LXV*W73f-5NiKZ)I*{({tcJ5Y6*B;RtgbW2kguBc`W*jZr-nTL$3T)&c z>-ZBf-|WLjhAA3dsoEi2#FuTI3?mSz2Mt6jYIl^#O(^I9o?O!5az)oFwqn*aAiA0K zd00a9R*nA-R?TNt?(^tk7gh3ru==F5^GfhAy^-l{1^5EC|0tCI-vyo36*I4cCDhdV%LUevROcQIAXk6O*?4QkE*9IxKH zElgG@oNM4{=>GHq_$!8%q0jGbtR$SE10@gM{m0V!wt}m`@Ks*#=SOunT2tuTFuuv_ zAjx1Ym5m1+0up?8BkVel>krG!xsu8PeDBHv4*^MJsrKy8E8L}%fd}x1->k-N@&lGl zpZus4D7AxT&dh>e`xIQztkgUOHW2>Dz>(`Bs!0fJZSSLNO9amb9$nv_XxLWl-K7sU z9Lo1Vi>@=RlOcXu9sEK^Ola1jycW`%KT2PAAETIe^iA>Gj@PI!-_;yam+8_E_q554 z<}g)Eqrb$c-5gAL@K-`8}Y zEyBW8T|E_H0`&@ws#Au{95k1C{O1*$*{lhKNtuDGTrMQBU`g$h9Yf(FqejE{o+9Mk zGdYfkwIJa*SyGUzY!|Vq6J_u8LIt%y2OXnIm&Uh9K`OAJj+0hBo>TnYiJN5@u*NSf z(P%1gi@?JLwadZ)K+B|%R;a+{B5Lh8@#jk|-v%8`*>%N^=L-Z#v$Vq9-mJlUEaOL_ zwVssX><+*!dJf=Hm6DXgYuk-3j~z))eL9ur=ykVz^?w8@zuf=wF(HNYrlm*wS0&g$ zF0z9bMJ`DbaNqbQJJiCKc75=~bIJ!$M-lirrT9H#oPa774Yb-sD3C(p2{ERWJF<9V z+_d4rWR0EGO46f8c#Ly-`sr!#I+^O=q`SJF_^@xeg+YEv_uOeVs>;Y`-n~b&pZ5M) zE7l#2?tm%L4#Abl?)Kg6&T*UB)Ob_QC?r@W-pg=E)RNx3j8f6@hx&&q@1?e*r-9tM ztES`sSV>(xl`>tS)<{Gc9pp$QfWu_YwAN;2NW^U2g_t{VX{Wy;&3dkq&bLRk_Gos< z7i6$$JsT`an9J@tFO#51F_21w4e#BM?dsFwiy!oL==n~6($ZeC!BBr|Jo+~&ibinG z=jM&nm3DW9>+?5vkl6}zQo_G=9IsA{j!b=qZ|zLB6;=3mHajj<)PgiRmgHvr^c4<; z6#IXpq zzW^m-yo@lJJUN)F;Eh^U&uk-m{Au;v0~(jh?xthi?il%iV5nNt9+Y&UOIF#r{oX>( zp1MZEzz)*+EccCbHZ})tZi-#_OU22qN9xW@Bx`Vo&-G&*vqZDB%`>r>u(*P_qyxb^ z$7@X@0_H{j+GJGH7xkVu@1-7>+ZH*zb{`N}$EFs8kfeu#UC8wpaKdVu9I=4^mKM0O zN93caXF8Y1Sl+#vImN+?gtOh4kf0PJJS#e znE?c^&>R8FH|PSjflL;mF$=aM0Fi+`kg4ZeT7#?KIC6T8enQXHHWs5^`@9?M^U5n9 z(Rnsv9H3Tsr&jb|9az_6kJt{cKXQuBBho5)zjET?zbB1hVa~JjE)9F~&wUh47x9w0 zUgDk^L#&aqv&`jF&n@l8%NmHgr2uA(Mm@+?SS(P^U~Bl-ZZAJlDn>Iji>>s4W&gT{S8TrI2 zb`-o*!aQgz)m;&&G5Sde4T0}%^DTUbAKYow3)O7_`Z4Is6pH5oKmS$`)G{y!35A+*THVk;3cv5|CIzGO&c{-h zyiEeV&vpvWt+r8$2xH^3vE1B)e`i~cY*tl_^EJlw-k6-!RM$d=(dMsI0>Vr$Z@p3* z9-qbJ_AseQ?|Ut#v2J0VN!KbA2R|8LA|L*NYod_+uU>HSy=T7+rD~%g#(eYZm1sAM zGmr9k_%9b^2pzT(I-Cmw2#3l~k7(4@5ES+QFq#Yw`psL((uIwzVwBxhZ@;74e{`NK z`WK@2E}S}<$Eg|7aiI-b$n1mFng1zBoan^Nbi4ls_lEKRCpi$LenCC(q8}h(@3j13 zo2+3d+I8cE8ifGS$s71Jp@2uPhE0-0K7;W;e|uu!%7xdU8<}|6&9l1wta($z!~tn$ z5{Bsb zqcmc_HJ!w-;>#~XQD2}aZtQ@AG;8`l@ge2dwDX>1tGU7rvBD=PxV8~{qeCbmzWghe zK@so0Q~VqJkmiHG|26}_TrR7L7kTH9y1Exxy*~bRU{hxaq&>e8`7`?Q1m9U2|K?=$ zLZQ*3jm0=|6tTvtl`g-44K(e7A)#A5~Vjz|DO@uJ%E!Y??foNpx^a;P= z)MCIk>Mfr;#2kxK|IbGAsmc?}8uLe%1D4wyh_-yxe>)pC631eOVgrT=&q0WHuYa zdvFHgD0QO=szpp-dy*_ZqNoY*^q3_T3~Bn?`&kw9E}0FjWVP~`k#0Wpei<3rZLYBS z)|&;2ZKrMy$79aCM{E1cnOM9zoW|5HRmvPO+uG^Ch}I*Ck;a|+MPy_%h12Dv^urli z613r%q2Y?WzfgRUCyFw_OwTgCg$?;|hCg9k%BAolzu7 zM+ZKr8zQMUvN8KGdm>w}jjh0(qZq4v?OwmWtra7=!rb=cJ$X3;md^%-i(c15*OIa@ zhVDu>o$}*jaUIB8iM?+AI8s$2hp!)trE`W~TW^vmbX%CZ&7B2SKvUST6sE3kzSI7G z7^=Gg0OulA<_yR@q{OsV%pxC?+f!qsU41x1@l^uHcMj}!0ru~g`g69Awm-cE4^z^y z@3OAh{heaD|K!^VNK*D&~e&-#7!TZsVzv+JEY_lrleB0q~L=#0f{!L;QFUGfj$p z78$`jtu||s%iX=Rp14|IYZFnGL{}Cbv~dE9KDFkCiOO%5VL!Lda0R%p14L}zP9R~i z$>DgO;lRlH^3>8FMW^ukPQE&d?(w6>o4ZJKr+$}!JsqoW1xwZn!su4gy;G;M?ibcl z8fJLBBX9D#_JI5Vpx@a7C!>}^`i~Z!W{r*bn(@vo zXTe*{29}M(^h~ZNC!8zLROZDiZa8;_@k4#2g)p+!6Rhld^jU6QiFnEJTc}18A%OSD zbfne|qcHaOk=Vkwier5jAhFMNrvb&B?f-BAF3G@y^p)Fv(lKBivi~R;!npiVBKU{jtE;Pgky=+BU-K(E zc9j#bggnlE_#Mu^$kfWMD(bi986uW`YFPnT9$V6LJGWoki&Sk>e6UPL6&yF~SBU1J z{6-h7Ui!X;Gr2QhD!ns$;AG9^Y&0L;f?+5mMr4oKk9t(#P>uqk1Jytjo zH>JHQQ-9nX7B(K(mJkqZi^9lbp6g2&+K*;YaX+La+*|X8O^*1fO@BIHas;%W^oIgK zrV@Jd--iOr@&M_=ZuztOR;Gu|(Y@$)gNwp^fsd4`f6L1RDRh$NAAFO%gDqg75@oHP4;>#QW0qH zC_{N+&(!hr0Y|^34K}7XUTbUd#^kE2a|nH;7+P?>WSUM!cTSe#{TLRI1B&YIjF;mN z{Z=>e?U9eTm26FWo-0Q2fPl)3o^TNe>{H6e2uHJ_9`=-oCWI)D@aHn8m#91K%yAQX zyOH9x6f5ol(_LL%qq1Bv1;Vv^ZeDIbd$Vv$2TjeoI@%QP`*LRlv(-GdcT)11|H1UL zEb(o+21q5-gw2$^9{)hlaP8Pv&?zH?WcG!)CoQx0?b+}eQ|WOzU6s7cXV%DKi-x}NcGQ$ zE9rS(H4@k@S`jfMV*k-9vW#P0m6rtPV;QSSnwz~d+(oaZzIMEz{ijm0hGo_&t=m}Fx;ALG1_IfnovDLYR$r13fH7&QhFur0!pG_Sf>b0;d?*eMru-5?kfG8?Meny@ zS}M0??FSchOwIDeS&bUK=6IWnOL^+BoUNG7(V&{^F094#1*S$GU!PxqVbWxD@nZn{7#P0lYh?G>g35JbX3~l`JQj^jX43pi4Hx$7#oFW*_Zg$kbT~8V%(J>429bNd)|!%@ zx)eX@J(UPcmZ}&SZpT(ExLn#IV-=@kgyoObfVXvBQGfYdR>6_wF9sF(Y)pwam}EQX zQId2*xp(Sy^z-86b3v=lCM1yxom*SEJ#7FuxKD7Af{rlTe|2$ftM%Ff^dnbSOHoek zs?vMv+q~Vp+!ZwRrcmGU8O8Cw;s#G_eN-mVg@|PcxbU@YnxKq+%qDH54hM|uy~UJ& zKgF2hyfM`kAo+9W$lzbE<}!7{bs4yTO~IDs_F;ysI{!I}OGfHoGThlA#QCm|9>mhX zHKO>vAS|0{lf)U^@0dc4vOnS8p>*i@J?oJnT-xE_omHYjmWSViwq9)v+u5vCT9HoG zwR4|HcAuJGa!J!yJIelWS&QCX>lX-(N6qROWVP8xy)2F-<+*n_jufr(Dc2>9l#j@k zKD)8SY#jP`IFD9lRgNBTTUxVQ(iE3j3-ElDUrQpf;Gaw*hn=+4)P2%szAV|JA%4nIGL}59%xK(oVwCe zi;1^a;mxlVz_O9JofLeFDs24pH+XO%F3uXiXsjs$uaDZ+u`dqQ46jY-K7cp7yVvWt z0Aa3s>?gi}45OKOHwGg@)51AFEuXKAo)|GoH8}$pJDuXd=>hv9xa3N!Mj(& z^Zbe3YOSw+~wjNymSt)5}AwaG}4fkWBE z6@ipP%b|jUH`a9TVGF`J*-zWkXxujQ1-4J)& zuA{(Mba`6`n^5OyAYjeSA6dF9vn!Y}Fo~tm}p;) z+7=blgxN4!<4Qdo!XMP_)oS!GRP3Z(9^&1d)nnjdClyVAzuRoc2WXhgHXDZgA{Am9 zeXQb9l>d!)Ib!bq;P^W`Uh1r;dfK=;{FYhgz+1j1cLH*buoO?6{J&H>TN6F?|m;oVd|07H>)y;i-4v`&W8vQ z@m5=(+jVy|cj8^=_gxhqPo&M|5R6UJOtVeK#bO6MlBvLYet`73mU<31lxiaewFG{~ zjKverdGYI5f%W0oLJ%bb;-ls;b=y+?QS1X~dL$VSI+2V-;m!f-yg=v1xK z-kbfIGO;>a9f$R`|XkJKV*+BxK|HN*^E&%snUdz^gyXa$?Vo^ zCTww}i5+?1RZ?;soRtEz)@7EY%`l>ij4g7O&{}50nnzq$9kyr_X=VT&$b}ZUs#oxH z1CZPRDm3LhX_KwaWT@lXo9LfZX()Sm^B*k)#`D;J@1} z^f~Y>oOR!!6e#Bfsj;G<#o}PpX3NC`bqA7gVi^kuw;ArL?N7!{LR?!PEBKYgon8YXHC-%v-e8Lx?~ z{X~Cd#$e6NJ6B=O&v4xQb(9z6HWcYORs+zX6lu6HjPQB6T~wrTy+bbNcAzqHAgso! zw|%xXpxt6Bl{pSA59aHpXeABa?I#LY`P-e!Bls;-$>Ok7>SX5(|JW_zZ+@0 z5D6L5;)I9n_XMn)#^N%CP7j|NB)CHQYIvH38N-G;g_yMozS7#Cl>M;A-O zwe;zWg~YK5-}0!HE)GICLb8g5dqY3%X{tNU%Y>}k(0Q{Zc^IS z6Rf_|q3_vVuOFKR8+yyxa6<72X^wb|CynB9#RSbPd;`gttX~z&acv;Z;6+^|C~UVJ zM$48Z+GrST^@@ICI+85+F~3y(nxZ#Z`|yC%vWZVRfNWYVEJe8@6n?ME=kFEL+9ad3 z1&Di5LNQU#wrRadQ^W0q9cMcWkkB;Vb7JN^K8H^)vOuQhbLO@#{OtlxDuMwhG>p!~tvnmS{?bxwL)4UeAxtV}ExI$s&l;QQ- zq~+;%$4I|4k+8>-E2h38AHwlLA?RE=^9q_ zocPS21vaRLQ~4xlHPW?u@)UF##_0v!9J`+=NF4g&Q!rplsR9%=Wq+#7+>9$S?G;vL zCh?xh#C`08aBS>Om%M#u1PjX&4~{9bIQf^HD{VRx2rtWsmcvX|+V2svUgk=~|Kglq z?M~s7TQ>4{ysQ9~VHvKysKbu)Yik?x*U&132m`R8Z^(myJ+~7{!cKV_|NMrRSDAF} zR_yChY}z5ZQ^f->K|U)|PjHh9NfcF*gE6M)Xi@1PD?-eQ^)ouKEPmJO|27lc`K zBVvI`J}MJ-{8f31MwjdDo}6HeIW0xw<0z7P^`Tat&E1x8*`*9`x_dhmNeo)XM}9m3 zLIwS}l;}8(CS15%mfbH1=a~8E=Y1%{yM{2GWwMKxt}c4nmysHp7qynC|gd` z!^f`DFo^IR0_pZmlUSg_B(i01&{;}i-ba!J2U$weNMaC$1&A+&xn^E&?Xp3)xY=6A zi!~4oMkGaQWpH;eD^gY`T}4P3j`SuM_BsYr{Yyqn*^YNjdjSEE0!03F(lI)e%JhluO8EUjfpXKv8$LH z#~o~cFbn2_#?XQ8kDDTs>=AJKq_x-2Uq!r|uhdS>Ve3G-1aZB$t}>>J#eBCXVXBC? z-PTFgVw#)3P_;ks(`t&6cwsECcIXz62a;9J)$G5@nP_$o&5|eZ1k9D+cTr*KaI0`# zE@2GVM3C{x|L!9`VXhDh7Ao~m8O^fCYq-?y`B{4e5opB5Bl%(aSqY`KmPa3|s7_62 z$>nAW>oi}JDSv+D_@nQxIHNwCh36+7GtiQ}m(M6jWn(LzV5624`1QwcnRq?1hbH+o zhEoxIUk*2VP7`)qA2};+dTma313NxBdk9JnliKRm@dgA+@vaRsG&nU0Ane2JONF_- zj0JfF4z<&O%dfM;fApBLQVMr*S7GvdR_S;AP5~3dkVLGuo_xU8Qr&c3j!{uZk~wd{ zZWqoZLtyB8`>kBaTMEJTeb%SDucF9zD` z%aLO~!dP_|5bT?3aylizn?g zgJ{+enGELM&0h25I{5yMO>Op&NLK6n-RBuzG(-KIhFCk5L(|q_ z^R!!>Ma9smRIY@&F9;*GPZ97UU6+!pc5|37j|10j|C!WDkIz`duNtd$%cdUKm`KIc zJfw4G_;(-d=hiYgu1LlN%JEXDj$q{LYn%52rJ}d}HH_&&FCl-O$UkNK{xK1|aa&0f zuXz@*(kOM98NYo%O3dNRi&G2DS7HHCYl4nGE@q<(^ML2r-H8_Ly2-fL#~r=zP1tax zLr1gIdFek$%;ioxa@affeGWK!?QM!dfQ;auYF|34^YMbdkRWTBL^7cSGAg*y=U;5wovAzy5r37;n5?O&5qO${TigIK=E=Zp%7Iee?R6 z6kDZnkOy5tlM{f%b;x8rDdo4SrOZQ^BBjv%Hot;S^T1q+lG+9KFNJl=ccPlucBw;& z{0?x{#hH6QjvS}X9--xIK6*O=IigUXjp4z)iI`G@hdpf;!2-&3(}Bs8y}Co5hIPtl!YpY7XJbFnGf!tS<+1**BzVQNf1BzXE~ zf6bNDGiur`4 zqg;+`UB=oUC0~cDulR3vNFD{qL$n^?o_cri7;>al;QMu~MFKGH>xmO#kCn**t*6qa zYVDw~e}D4Fk>>>dXn2p>V%Q%PJGo!|yCoxn?rNN^4-qCUmoXxqTidx?RY0-A@(2le ze4DR2h+;IV%Tp}Uc46$lE8N87W}UUa-Mb6(teHvs3+0RvF7UrgyhKt-o^4MespxH3 z?CZ)E^r){+46n-Rxv-06hT|gZoi^VV%k+y}6DeNuANpzGg4 z(AL1Ic!$Zh^AS7u9L1X7Ws_~FEWbM#3?Cw!AfHDybT6?l0{aXaw+Bgd11EFbIjfHp z<`q*Ui^c^%>J-qnL`Vl=K*ifK8^1&N5*594K|Q*$Y*0@d4HtbhA%TU7jTDOS2=`%* z4s7;pQ}oAT^@vmjv|o|7rbiJ~K*!Rd)v_X();PUEfRpnsuPf$VBddXNv!OM!ny;wF zxDlyK=-Zx4qXj3%*kr*j3-l&vHVPdI)3=JR^vXcKp5u!HekU4qHxWv?yW-#?!UfL^ zK+{1+H4%3b!Pb4gGW3H2&dwav1@Ad{T*-Tsecn~#=|c8Luw7uSiC&(G*FW;_6RM&fT{0V>%n0@NFe2&WdK&~5M}Y`yCK?|-gfEn_ZdW<# zA&k?5!@WMXjztu1L~`VfaY#;;jckUFCDKSSj254>xw>dZto$)_U@$6Y6R(1`$Ps({ z_p?}ToKN~ECxwCpl}pQ3Vo{480;Y2&PtU7UeIS|O+i#^yGNMMUJns*S!Wr}xRMr&} z4L6hmIS!f`Mc`)MDVN0DEpO>3c`%RpLnbT-6+NempJ6GME_A?2RTBeRb;4T&eSR^P z3~;i@5>6i;2JTd{eZ1PL-8BlV$Tf4Do>kKy%)H^6PyY;+#9t58DKf8VWY`iY^EsQp zUB*|p(+ijG$y3o+ebs;Y#Nb}z`+>lPwMX<$Q%;CG4Xy9lU2%1Kt* zv<;k(nx9G(jrS-wcPEu;oNaNu(GnziCKv*y909A{ahe#Sya_L-OH-5RKTkUI|KN+Adqt*YP>H+bf`7Ut1hx&6MtfD zGAa{CBn&9GTTXYV365IuB0)hLSGx_4A3$)ppL40&qzxq`lpFH`Fn_KmvG|o#^|$kp6#capMnNxG1(4u zR>6_Pa1-ogDR2e1iEYpCKHi(lJpTI{`!|Ae1r7tMsV~-|)elN+cNWr<4!n|tP00|v zkKOAJ;GlA83AD1q_pC87>~CqgpJo5?Y+bqO8xKS;n&Cv0`)5Za^=d7&2?4Ts1im?p zQr;`M0*!pMhA*c8bC!Y^Ln*wv2(H)EY-X^qt!i_n6CFaa$0||vQ31gW8^*3xp@DQw6u5lw>`De_ z4a}izi~3SXBM;tcG@NQuZJ~079FCkQeeFma|3CE`LA_6O|64PIqPp2^Sn;kVJ)>7E zF`2$qFSk!ixKRGl`><*9goX0r;k02U2d^3-`l3Z?@J4Fa~^&xxFy`VZ{Gp%SteuX0h#gP}5ogI)5vdPcoQP`yR z%g+vUs{f3TRoiPu0y%qcXJ>GeTUE5MS29@VU-ga~R=CA|qS7vI^p2ALzob54W&+G7 zdUbW7`2S@hXyEk+^{Ox@G%FHA7Ug6A-ZdH z<;}kznEhdD_zpjxcc)4x4pZ%~jVI7yFFR)wC8Nuq^L`f^u}F1n7(+E^wMJkiXW|xcC$ipg zn_116NXkYCu6$o8KT~j5Z}OZO%*R*6a1m!;$RjJ- z-A<~}=*aX|WF-Du)jdeP9`yLp_X`;PsZO=xpJ46}nwOVd0-PqvoBfYuJyba3pNA3W z^BWV3S!H+Vf0bHNI!IbxPBhlg1UL_5Sl?zcyF5d3FlqplUUgwne=|5-;PjWrccJ)r zB3a)~wFT6Q#9CWL4N-e&H!ZK}n%!%&imTAe?X8ULG|wMWzUL&L8H953>8=bFm!+JJ zRpXJR+*461G<}5?vY1b>i%1VYbytt1j2R6LLA+oYqcG11esYpga0aRTZJ5z*S?6_e zcC?SFx0v64M%7vW+iF37H1=j2I!kB0-l6qo2-Jetqjt#XTN4?F7e&kF$A$2*l>{p8 z84X?s*5}b^ZQ|pCq{OYgqA5xu-$d+OJatrXxh=;($5bD0BAN9TdNX;DGKNyyq+Xp` z{s$jQu_~@dxnn`pCkDLg{|gXb%#kLpx8)GQeqj+v`afKN!_F%j(<*mul+@P-cfCAL znrbn7DckIYK6+>oS{)(JbEIvt3~$b-7R$R1CpbVnm1c;b2fcVA+7Y}`sKYfp)V{LIO0+AVfRs3(usJWd79=X zcXFfr8iKx}fKV672Qsdoe9~}nG~>V_DEGI4vt3hGiAOa`n91b1HL0QOefplIu8b1> zWd?4$kPehKjM!4D`Q&EJ^81Ezt-dBbS5nFnY%L0#^}@y6D;S5;@mmiqssqBicQRIl z&7jQ*@K)4!mS?$2DV5m~i1z=Yz1B4Rt*5-x-Ig|Cd@adtf~=q`*mESv`!oo54JK@d zyG_i&d*ji__gCXeNsf|@yBsYkCh8WwhCOV0b!#ycVD?zYH-Qj2yy1$pMs$uq(4?JD zaYEDUd+^B?D^?sc-c-#*)F4_TZPG`jI+irygZ{u8Pq%72o|PK&?%zLOw`fn92v+%f=YyCL$%ItKWmN|T2R7bL)DP*a>h^x_j%=7H@-RzI==(ZO+b8{4AHl+l z-eLmV{T9S3q_uuwFNjAEv$65qOj^Dc#$wwYsXYo1mOAJ8aRYqllp5K5<) z3CIgy2VrYXQrT4kib zs@|DE<|j|);(KgTkw-u>x0R!qeOOS?AB`${&&Qkk##sQ;gMdNcG6$%A4sPdI~mED@FaC*~EOhIgr zz&dV)LMUqS0BQsv6}a*HMc<~j6uU|P%Vo&V=6m>v<%itY*l`W;Fs!G~_n7t6Z1471 zDP8fiv>8uQ*qE}Zx2gnZooyLJY(sNBp0B*OebM#UkPwc;Dwn|d{bTgt8wRKt`i1l9 z#7&9yJhALVG91N4NR}&WA(n{cyJv%tNedb5 zZ!m~hJrAXw@t(N-z*j0i{YcjIsXBVa@Ia~Wtv!WlXYK}Hh4x}YbXrAt{yr*SWTnLh zPO1i}N|9*5Z?wV*Gs6pUmIl`r_g9t|8hv3W;0dE|{G8w2V{Y5^;8XJw#i5=dk{TOV zVGqtiT7StlZ7)7{3mMHp4T%HOo>xEE^UzR2Z$K|Tu%?#3B~a}gz%~kDRw8C97~$x^kcsW1F{j})`%YFnGuKWu&+2u6 zDTTSh$*4G<7_nYI_kna-A+L7`#{xmcdK^{tOrob?{vt~gfDzYjIQ53hW*)NK?7?X< z&im|q{{ko#NnwEe84Lv@Rm+)OVt`B*l~%9cWbuzs&EQ%oE#L@gSzV^w8w*%;D+?t? ziQ+SZ!$o4L0V+17K87T6oA)V!+_^42Yo0#E?~az!dzM-;7UQ9q!TH}(=UFhCYBSW*h(8zd>EChI?C6mYss%vEUXBr&q zfH)CSYXVM3N*SZ?W%aRs6^Y15Q=$yFs-F#UDlo)WroKWpSIH9$zAWu1Qt6qflVJH2 z&nO*?OZQQ!>GhW+l~6gfzy%$-+p-eyTQ(w+C;BkW3zUQDrKXaV@`!L!HH7WMrd9b~ zhjX&ON+M2l0oqYA!RCnoga!gTI*1v9#u5WuvNeIr)gNHrk5oeVZptGixG+V}qo!Be(81+pi{^RFfqmxP+tkhvE zUv8AGh3d>Wsh35j%ppE@lWsxWB4lm&*L;|tOrDXwHy25rp%@wJ(-?t&_5W0Th@b-b z2ziJ-=_uidYl^{;Yk=li=#nREqIl^e7-6!*R(^}|D!h)Lo zgMERoU%zQHNJAcfl(&ZiXTBq&(Jc-*Sw?p%R*jHKr)V>iy|Sl@KV*$bwVWyhm<}?? zrCgFvAkm~jh+@8KiTnPmf6V;s_2JSV$H0!bmJ^3Rrmsjg15^;YIZubNyk1nT)n0EK z4VfwYt-jGbHCHZgNKnTX=|emCNRMA^NPJ^${cih*N;Vy64EouOF()e9^=i$y&TwNKU$ybP)Taw+jbHbS%gz*p+74u?-2U=?@@&bw?v+!PUuybGG-<9LG#%&PB zgDY+`G56hBQD7;AN*$!Vpc-IxWK5{1U3QnzO!a5&AtM>XI zvgK21<&w`aW9hxbQh01mT)@akc2n5lE)(7_gC;cn(||N~IzN>xc`-5bj)eUz>*{9L zk7twDOyk_rCzrgDgJ<4Kud<{W+F``@&ij$o(>LP5PshX1_O=4i#^c?*+F|@rb}FPm z4XwFo8u&dL?DCSdcYB?nv5?LDy8l(PY*MXTT1STR}6NcxH1uUT612tEDFZ z+>8|B&M06~p-8rHoZc$XZ0UMzg5baM)`!o_{+=$9ipG%0S1Thb%^<8=Z_^|w3-8)l z+Xhm+(=&A<*Xh5v88gnmL0j?Sfjn8=&|VyfNLOu7^~IhuI=w`EuS?jBSm@6V7O6B_ z1G?0ojpe)j;9M@x;)OER{awkEovXBXqa!0YCuqWMR7VdCjm8nz@KZF+Xf@j#Qf+*7 zB&K71XZb?QFm$xk!^@HOyJ)zgDJLKPxX#Ge>c2L#SyA@mQ(*2x-C(8Q)jdl)=vsh8=7vD(# z9=e!lID>9Fn)Q1erC?mHUQDBs|O!4C(K!&S|?-Mb3tPDryj~ z4P*@=j|iPFH&A2)R@AfVt;>+$CMjOnI+d<=uN9!|Jse?Ke^p6V8(ekqIcch~xO1ff zYMb%>Kkc2@UsGMP$El(w0TiSp6hY}Ay$c8t5CaiK0U?x#l%Vu32-1R5qz6JTBB0WH zkrq+uy-5qrhysC#2qc7qzR&ZXyYm;EeYrpTV$Yhj*8a_!neTooy!5p1TMVKaZHSe( z3K1E9tH9ebAs8dOe|NL1X05ydC1+Kk@cLGeA1hZDAWCD%t>tAgn9k^Hfr9I=(T2~2yV18OUtp~f_#EmO zU!8ZXz7gQW8h%#g1#PRH6}#(vYIDq~nuotETlYN#7Rqzu^ST(fB^DBC%U+M7zBB9j zev5r%Z1x@PAVB)v9Yh&4T{EqM3&RM+;u&Jhub`tDe)Z7+;}$6l>O`t#F0om@6Pcv)iOdpS1V7EFE!c z?6vF5c3j3KKP&J(zCjFs)JW|N9IVN%!|Vo~Yl`E6U*Qd4U&6Mz>{riU_SFqASu5L1 zIUu9rRvJd60uBhRcg3t&+YK?_*k;WsN7jfLXOaF%=cXXpj7Erf91U}rWl&ersEB~s z4&+VNM-h2V^W_4;=k@rfvo$QLr_1LPqH!S)`^aTZE$w_oK^5-H4eg>wlT*9T{bN27 zdGg1@g?cjQA&#p^rGeaTF*>LFZ&Msh{?IiN1G@$mVOAp8$s^fQZcWxZWFJGAbF4xB zh2(4{nh#aKW0=Q}Y^8VVI%yTuz=IhRN20!~meh(J}+@>L+!d~B5 zNE54%RJ)b_VrBkZP>Uyba&UCldSasF%+YDld#Oylgfjjqq{gO(F3NpOkPUQ=HvQ52Iqh&nDW2ZlWBq{w2UIw>U%5V8;Ms6Bt@1ow za!-`usmFI2ZgY4pP*dvs*|++qca~ZYx9(03QNrT*WLeuOsG{*DG9X(}}DU6l@rZh{_#{g}kt`(u;p^Oa90iD$J99y=E12 zx=G(C=W4v~W=`|${0$KdAk(_g;77&w_qr6Jqu$p;7O8@yhEfy4Xq8=Z%RJ~$Wcdlj zkTnM_IPmB?J*n^biTaBT;84EmKf;;501f?%#9DQ|?UWLzKX)$JN-oC3auE3xuzhVM zKWN+8?9IcbS>BW5^^+2d#iHT;28pZ%zi0BCEMA?AtUXop?K_rAAv)1t1;^&MtiksI zC#@ZFS&jxz`WKAiTjp63k7-S%g-^a=H^B4MB*^cW#`m#A<4lV>8~YhufZ5cJ>3eBUQR5{X!ND^`-?TqlIbZRxf9@GTOUFyzKvmz3-TAHP=W~Um zH9!HPY58pI$rvXI|J%{Ij9Eba0|aaMFE>o;-yDbs?B52_x#matvJR;NKqRl$}xzjy2bgq&u)PbGDUIp?H{J@O;*Y-;Wwc?46nC&7*45+ z-tN{eo&srQH&xA7fs(YgMiTLc`LI&Wke-AUP-HSbbFEQ!v%wouGXI{(iIbPYHjTGB_T1KnV#yMys8#MhzMw%z*a9B6@ zY=VZ?YTuKU12{2UJ`K3&tNiZWgM;dtZV{U3uVK^f`#%{zP#!x?46%Nt%RP%>1W2yQ z&(HmqCok>Vn=5_p{B&Q+%cjcT9$gSA0KLh%8Fne~BI(Ui92(8Pj9(u@c#CCFwu&88 z{T-_8JB49F^ijvpp0@*!aupxPp*P~qh2NvZ5T{9pANkn=*k5MJ#vWK-o%RBM8z<+ME@aZB5u<`MmmQG_R#c&v z!Z}zrV`AONbK3hq3Xoec^zHU*O`MX2mgd!~VF@(9pWfU&fH|+(GUcw;P^d4u)ert; z@2+3pg1NQ{E(Qn#Qba+r1U9v$Gm$s7vF#>lMF_?c6E+J|WlCk|_M~^;uH*UM!c!#7 zvsPJrn)`*|$UMXK)geyyv)XW&v2eIwUXeHU2PZL=?dDoUy395W4|8Mf{O~VD^Sw49 z$E4Z|<_vV9^KE!6{Y{L3i*^?+<4syK0n08$2J|(oTn{nF#jYTaaE1{^TO?UXhVX^3 z2~I*Bva4go0*}()9SH1M;zl21ux=K;-I1MmGA8{-lqwU%`G0)+|4PV^A(yC+TJ17d z$+FkyJGINX&yVUM6cBA=;i$MGf91Xs2RsrvLc_EY+>Rp{KKS{T*;84Ll6o$TKB;s$ zKzr&o=1m*^s`IyFv_OAYoLuYtY(i673@87Mwaba*k~h2EwYX&0*7LK@~-IjRJMgqJb@<5eR+JdAx&H)Xg@vN8Mh))raf~E zApG6$nm%2IfN?CH*eN4D-;YAWNgBk=ioyGbk47w~~t!k?SLhEJs2Z9RIG{E+YmHgatUa@;*U1}Vn)9b zrfUKsjBTreZD19A3FoF2J1bWy17yU}#P*2Vx5>UFMP5zise=f|ep=NF_`i#SD&ZRZ zbb!(8P~}_N>*z5bNR+zM4{zBz>4&g*TSA0VEts+`7=dgWj{?2aq6 z2pPW&fy&63?`PPK6av1;d1nheIH_m^@p={oQxljmU+q99aBjU@wF>@XBlPyj1ySh3 z`A$QLQ;6Fu(`*i*~z!`F5GINrT;twmAk{vUHz`4WTAeP+~Z zBjgR7ZgdA+(4SI;zP-v!N4Knee2uC55!b>Z&_1U&sOmE*w`+ZJR-wmuoHXME(_~Rm z>KpdD15Qi7@m7UvYFyjtTb$*r0SXZ3uR~ywQmhG;IR8LGXGLM|5+N8@>oVLt@QXF4 zhEL%vLtu~0ufQ8FzgTIiEuQ$qS2%C&cU4lle%W+WoVjXFHMhBw?|p<7+b+mJi6}e? z4JVq57ys;wJef#vp`;*=Zl2h=)HcGOwRY~H!C0x#>1d<~sD%80SU}{QRv{IUt{aCM+y}jff z$@r!67c`<7m8-hDU>yFSlxZ+~3`7>cZxJbch;-;18(3LfnNu356q!k5cQak(hW)(g zo-G@jktKslh&(6+apu%|1C7ceGrJ{~*ny2yridURUJ8K?Itj)k#voeFL^gkml<~|+ zx%C^8?)TT%-iq>*{hJY_4vaqSiQ7n(l2&etRQOJN5CeS?k)JBmcT&e0uAig0`xvBZ zYWe-^4XSZ+!o@7qjW=+@ucNUK*HS~TEPPqQrz*<4$;=g4FEVlDlAU?YjyO`}bKS?pY59WEJ@YKUcT?HuK3{GA^~z@*Dy;S}0Zu zKV)m`8uqJNEBh^Z%Dcc5q@&|meS@05z@)N7 zE=9vo8*Wbeu(6JPulNk0mmZ`Gd|&Otk%(FL4GvLLx|=D_&UXvcZu2t7ZgG`N_l}m| zJTz1Kk8h-0%N4+)i=!mZwOU1YheBkp!)NPxIhW|7J5R2JZ9S{kkg`+a-ZNB?+<1Wc zp8JrWB}%`!?5vd>4+Rhwb{t@#6pA@#(?Pt&?JFtgeLOz;9WH&GNEbLM z)0msT!OA%h)@jQv$1~}pM5*hLv8}g%(06$Xg`E9CHc3t7Cq^ zp)iPfVq@qFt0+gS;%sN5nD@GMhVG$CQWhBDA}Uwe>Hfa_sQApVdH(w%9WZ2CcCK=K zj5N;}ex?@PKE5npqL!x}PmDv_e<0`J4|Lrk-k4XvC4s-J$@x>p6q z2;*d9+di`-`Tpp*rO=jhQm!6#ViGGPOzsSiz!*c+xSt zYZ_%lCy*`4U&k2FrQ%JRoHYPIK;%80>q++f)C_yB#vZwi?8~rcTuzkwqT3f62f@}5 zTa`qo^zZpZkfo=k#a+)3IGYpdmnawDQM){k(MqhIa8wb|7)IX1ZiMsIs-y|;f#o& zMS7dj2-2&>)XEmUOOaw~K`tv@k?82vcYv=<+err>2Vhm$IX${~ugguIr zjxiiRT{qMRhHutvG|^~B3OMSh>snZ7x?)$sT}vG(6~A6v+Cc6-Vq^?9&p3bIk(g&Ob<*u{{*u8&i>O4 z*z%m$lNcoBviVW+Qis9wm!UwcfZy}A&M(`K&HBPam4C0TGC(7#==2X-yUz$5OyX=r6nO$z=wziso|AU);AFD!}MM^Q>Af=caK24@Pu{ z*eB6fcT2K4YiA#Uk_lRX1aZ^i!iK4MStP9$IvZ{e;Ct=fr~~s6R)r1lKg_DXIPGzgl_&- zupw2MI)!b(zco+KKP!q${KFZt{NJebU$RZ(e>p?0|HTpg|6_j-O8)Nw`E}d{$2=Fj ShpnMGxeRpS*UNQm!~O^H7tKBZ literal 113042 zcmdSARbU)T)21m|XrXN}Tb9Ml%oZ~1{pY#2Du`~0}?%Zu( zbXQeZW>rOIWkx>nMu@be5IhVf3NeGGd6WqUa*LwhG3TLTayODhWlN;^GU0|QGtV=Ma$unw-zlPLe5#BXb$ zV{c+*`BUD+!T?0j*5oHG^G`to-Jf(cbo4)IY1n94*yxylN=y7Cr(vLMjFJZd`3WNO zhgaS?{dCRA9$5jab8BNXUpf{Uz3l7DVmHh3mGCl|I3e<$e$9?rX(8!l60X7vBY z2aW&v#bI}R!v*qp>vPvxK^TPSKmVls`9kxb!-Kzncz^wO`wvl-m{nIK4mrRT$0N{8J}1ey^BR^G}%nD&n$>RVjbA;^f{R^mz>w2ypPp+yON2S^D}` z@eZlurq;uQ7=>1GgPz2sx7UoMq$?*6jEN%`Hx#d#QLY0x2yKuWqmOquM1JTiGFR); zqFH*AHt~+AyQbE`|E8ePkuS;r=2>Du#Q$@{bRpo{{~823M&vgL(!blm;=e$X|6?fq zA74BFQ{At)|Gk<152|i;mbJ7o9&&cA^$aRD2#uQa0d49iN(l=q`4Jl2;izJ3E&JE?Yg906l6_;g`7D9vLAcNYK>gNM@xh1xZFMd~v# zg&?Cg>X-!1o1DM>h(n^vY=F+bPau|2+IHU1c+h&;nM|7{sw6k|+!bMof)bZd%@Ox% zE}VYVaN;xs98VZhesu-nQl+Q+Frzy^;9ClBSCcmD>m9`46T`9pz~H%D>hKa`3^~&0 z6H)#9L_Dz}k4}gU@ckb(T@i0&=~$&3rvGxo+(#lVN^zYXmi_)p7T zeVGc53L8N7%GRF{xrgHtQRFnE)mEg08LgZL5Jh}Bq0r`1Ba-GS+g*d%gP50pLt||>4&~g`ymNfq!!9?T0w!?fp7-Z$ zFX_FkNTwcrJ>!Yw7*9A#>!HdjnV&C4dB1ANb{ zHg90}F1^iYsr`M^So6kOO0K>YQ*uXq)-vC7-Ww*s!`jJipl07WGC9;}x^8V0b3TR0 zNe@NI$vmu-DB#df4E@Cg)>QE}H>-hp9pbG}xdwt)56zBd zS@F#-YKDAZs!2z|9rkfEr322&gCVdE4VM{&F+^;|kgigLzc`-4w?T;u=1E}(fY6hS zg-N+1UXyPBqp7r`{~d$VSiKJsPYMqvzL@t!hnyvjQN)zE76>>N$xZj-RWro5yO-|_zGf+03!0X%-CbacV;Rbo`i8~&w~>8tkag3 z`aIfp&q3zDw@tBGMVYeZT2PwUJD|W8R%xNwiq#yJA5H|2v~~tL-<}NIH6L);ps4j< z_W0~G>U<*Xd`TP~uzSZ8%+(%u`s)*Rp%FDgQ`w3dzNjLBfszXbD!y*oZ@NXI7>wcUTh7S^4dAU=5CE3#xaR zARSY?WjxqgrgfLt+ac;y;dGym{iNOC$Qw$vU)k9Z%F_8J`r!}X7Ytk)?!d!EIJy%U4RkW`B10VyD6=|rj{sG!<0ul73vO0VZVxk}**}r-7e5Nm z#PRN5t8}5@FgIrFB8f3P`|R63 z<}sW>2~sMdS2MWtBj%zPWp2CHSqLSHuc z!futHMS9=5uEzi{jqh)el?z0$j4Xgzew(22ra@tcys41Yr;LVoIBQIPWiuR|2 zs_v4Odq8Zn)DCNZ{Hx*OVCG|)72_!ikJ$cf_tU>qvk56n$CP)2dbm%5#@05nq(^az zZOjhw1y=_@5=LBO7@?OYgVS6!wN@OnESUKLbD z{6*J~DY4zgPW(>>^PU-f6!P02-zW05_U-6~l*y0_s^v*Cp1%zubl3t1^FfS%15$+s z`<**GfeKW zJ#GZ5ojh3_LAbys0+(c(cr`eXK~SP}1+1AA*aDN|V*U9)$9Q3}zPX;YSkd*Vsc8q9 znMS7vE=(#WtV_h1U{%KO^9~$>Gj{j@bq7dV&O+bS;7rh-gk0|hU>tufH>Sfn-H4Z~9wi2#DF z&c(OHtltdp`Wd3I6q67%aG7n3zGZ$v-)3>%1b^Te6nHeYIe@nOa!JAdMeBVL>c#>bCzzKJT)wzA6H zcRjYRR|P_D>upbtqOpWTv<=H-B}G)^t8c9maxOx5$|rH`x)yrLz*JQwo&rej7gtp9 zVmR*=)98BpznOth-ZQj(ERFhc{y1|VK_cgzqzl4NWVcD|kQXqrIu%VEUSBV!wfK22 zNdXDhJFr$aiz3QYt>P3@-!QOGfgZ@BTY8^hYltZkCSG$T5V0F}&}0fiOiG{CJTv0oIwpax0wIE)0laNY@_=XkgFN+W@zZ`y>f zC^TYIBS?&jSpG)@Z*rn|_4;#gtZ+5k?>RzdDmvlcX3`piXF1&tdfItMaU%8Y_Cq3y zB69NTwk=sX+q>yV5Ig997&xDiOA=&d&AHuW0M?GOo6T2V4o|8yTL)2BHB-?_)lbqq z!-KG5RDe&{2Qf+{;@x>jeS-0#LbkTuu!E$X^G1ZHig|?}FtTcSPL(W4~hAfJ(#9;f*Y_;CC z#$o4}5({1%qM&+@)O2o9K|M^a&efqf?L#3q-0YW(3@Hl>_Yl3g+puDhF(x@UdQM2Q z0qd8udrC{J(YLwFa`li`vPA{#(Q+)rL_pf=B4_XXNW(|im{(`tLj9FX7Z1(kOHJ*4Rp@v;wr{dM?R*K^3Eu}`8T z0gkqzNw4I+j$ATeI`Jw*RoC%asfx;Lu1FL3?S4w8w~%!xTVE2x#Y8{bE$h?q4o2H} zgH9Aj7y8G`B(6Rkgr#wRqb-`kql_6eu_*k$n0A3?iBDJbg;(xff8-o6daMk+(uT`m zS%yAQs6gC=o%3v-KkkvbJDmk+PRdW=F9r*Tg9GfF37ii)?F4X8$M6)gXRk3T`3^YsqAj9?FWw zYzAl$GgOu7-S72@hf*lmC7J*D$a84NLw-n~?ccXB8z3zfygOMm+hN8zfGCjKe^1Kt zSO=8TAm$;|+Cgp2U^5)CPVs}PNGosXKYMeV31_Ue&bD01cP>DUV|QEp9&_)RSZPP6 z!F4{?illFiT}3CchI6E9InYmbD+M*25H03QqY-QZ4!_fOW*R*Tte-Md!kHnokv=VXrvjlp#LW5~ zbGRriF)bg}E97!=<`1!e9UDWs*j3_u_4__4AHUSM1ozAmAwE`Ts{ZN2`EzTgQxKu@ zRsI%_z{*KIb$X+^8R1sP_(?rx;qaEht;w0ys?(Upn;@2NHX-2f(yLb$>Wj0PS_E5@ zhD^B2134)pETMQPGbi~(8CB-3>&(drgxE45l#XCvn9K(?8JRQHQ`X(-wo8^EN1-z& z)57alRYJT3o^R02;VR?hgK^lfYn|a4XXsT8Ab3&l;n$9NT0{?cKTl5q47?e!B?tuk zke7y>^9%A4^57c^(hX$)O-myJNh{RIaVj-g==~=s^qJ$r@&IWF;P9G(w zT)-mrs!9dE_);E%b3T^r?`RQTGa#uMhe+A}8Nt6Wtl=JGqiNwuH?zFoNjeaoBI}@{ ze$=~u=`jTGMfvjk1ct*u#exX!5Y4{g(HRQEugdd?=^pf+hbOnhCfs!F-CQ_klP10i z30NB3wBM`>bOFy7UMGRr<78RfeWT|d&`b8wNW=tBPDAL+P-8^x`#%F)Pl!Mlkz5oX zc%0=iLL1XN+suT%vf~;Y6&J6?(S9y&uX04#DghovM-gXYa&sG`{3lHen8S#?SK`mi zKC*Zbd2&Qd*BOwMu7qHi4|--fdo{a*NA||H8742O*G_R0Dtemv-y1whA{s2Ux8G&{ zKtNnuG%9$F=BeoO9DXKQsHAvy46=bzIrx?(I_FFo78%0L#m^_LIfIg)KlovE#Z`H2kQx}`~(hkJpq`XOCpo*t-`8u?)un-34b1&{} z%lKDUwDDgaPdsJu;p%B8X{MOdfE^(2TW=pgvZzJ|t1G-z+Mk?^X5Pb!F`XK|3f-X_ zTK{f{qP}ATpQbvL!+c^B>0y&QVr2kQju~p!>-Wv-DzmdhkDc^?uRldghBLZN$2d%F|Oyn>cznNe)JDLc(oZJSpNMF~mmfk&uRLP;%FuF6#z2Id_ zC-AgGpF>#$R?>d|8REfhpEXwBWxg?qr3JvM6DrfcN$a@WvGS^7G>709taL6esP`0^{4ra{uTuBHrlNtM$W@s`z>}-qBeGWH6 zF`Ry5j4yl)7cz~mcL2TTRkuwoXlBc4oFq#?h0ASBQS*hHAZ%K}7 zZF4y&sM+6;^wRy|z!AQ3`EHF*`*9ZD_kmAnO5Jg5B@t2GcX>Z5B=f=J`q~^7!C#z5 z31%5^R6RVcp%fOPuVT%d+NKb*{p4{uuH}2ps5-58?K-|*W3J_8%~0XOp{_ap=gjcf z2){ zaxMfoh4`xQTcFZTE8K=7a=RDnVvb%SkqnpcXxY*b{zN>EnM|6Z{ug*)L4YIou6B^)XqA6nOYb8bm!W(+D5?MvLUbB`!Mr#`X zl9DW*#J?d3%B2l<{e!4_nAi9 z0xY<}rz)$dpITw1b42A_-!TQl?~`{nZeIh*|KhqqU4|ScgnXGZM|XNRqyf7+?cwDy z3M|=x$2BqZg(6TN{swC?u*t25BWgsrW5>-q(2-A4KzXw8Dq0YmFSMdc;Wp5ar5MI5 zuI2H~G)iYL5hdJ9XdpX5?r^CQbnT@t=LgC7>ZuD}n_}UTb`KL3sx%i5{#jEn%;95bj%`OOwF7xHF$fjE5(#a3U`P^ zmI`yUBLMr7Hp8t?@Lg$VP^KERY`tu7?THh;v7e4e#Gyp;#k0+L+pN|0`DWy?^_<-v zL38kaB;b(43=Hc4T;}wcY2R}u(Up?;yX!(@d29=E9T=8enYSOIn%cCC=W`)W96`0* z@CF)l32Qmr0y9me3?&yjcK0zqnS&s;&PXCKygb*|*a6y)yHKE~VxBuLTwnDRGtiSQ z7Gi~f#p9e};J(aIwBcNwy9kPqy-!U-e_QAYNP8=c>Eswu;1c0AXp4JX+sso~xBvG`41B z5{(;1@goURFOO!lt*Ed9kqCEsmN=-BB`+BE(g2A+#qY|+wKvm{YecP)JIsDtxW0?n zUDUbUC@wnRz0Y-IO1@#VVbQ%kDQ~2(j z{*mz!Oia}D3<2xCl{ZP@quO%ni=xG&kKuVSD@aKq@g0cl|AOeeQmb6Wrz4Xnv07{+ z5HbspL45nRDMh<*TWk+;;JbH8t>&Fx|BIm@wDx=LjXQrE)&OIjOyEMMmN!D1?`?=;rxk))=$*!A+hF(oyFY zPi={=jy0fK*pH%Q`rKUGIO*$YYl?6F;*D$6lzp)b=7y*Q23sR*2AT1LR88Z=!K-;H z{GzoDuAiXAPCjU7XG=jaJ5RU#V@F_J1v|)0d=7pXivk>Z*2;Zq+ptlsFU82I?YHoC?+L`#okWDPV(~ zS^l088s8~B0tI^Te52i5v{H;JkEl9m^C|3rq&pS-c2ZAa z(4}RDzOl#gYJBDzB8(2Fx=kiOq+OcO9)>+HsAh;fRt0RtIPH z62l1mLQff6j<&V7JO;~GobGD!eAwJ)>2h^VyPc_Qd6!r5p`W!a*{^hF+#=|WwWg#k zvPcmBQnLQk8J}4A6S>j-xRe5EsW5SUp*=_ki8Ut$j!={?R>l+0Q4vXHV9y+iiO^v4 zQ0;9s0=s-G3>w2&L_v(bG4Tu1^h%QGIa}G+TUpS6RnPW3OHl$SM%4}>Pn;~4os*=E z+f6Bcul?UfHHTxO|1@R}F&%~P?rf*%kWcP8?$@uM$Z3^7iL)*&U9fu{fIV#dVDTo> z-Murmh83UAI=LoBWBE{yFfiMsTC0!n(UPRB<^#}`dLrAS#2AZDf1LM>I)1_}6;x2? zT&1+~#KxgqgJ6tsbGj&?mn1inS>v=}&P)Z1+(%kybXvH_7TtcLQ)eBfy*Vw1iNwWK zvc%+<0h7sXo4~nDPgW< zgJIKGitk}Yt;;!B(^YOh^f%*3tyt)e*3KQvW;LmUq=NYTFdzHMBz(I6=KJ2S~ z-EwWKOh-u;z_?<`0*|{mc50J0QB{=^E6i>6)m%JzdP`oAC?Ye?KYWj*nf{v>F{+=- z3L-OIpLv>&l{Ue(HM3?Qva z4BYx&!H6FYuviEl8`fVYs2tRFOyw7jyw$L z3RQIIUJ~&+$#2^=>+;X!?w{x%;~(1R2TeQU7I=mWrjQsr@{LoNPR`5AV*u^Yv^qIU z;FB~W)&mm+v(8f8V1+BuGy6iHz;Pr&QAWmu%T~y;=g7-wrAENYiUBXaAwe{B9F05| zusVJ%lvsCYJ+!A^6j!Godp8dxBOPOu*Rb8mDQ00k_|tV;uQih^Ri#Qy*ys4rRUj)B zMloRR(-((oOCMq1-9lA2i11r;(2<|j3XYdWk_w(H%o z;s@E5KxgOne`x^>8bxL`*lpRA=iT*543*MhfRsC0wY{gi6|$UXjwQ(5Tx_A}jKr*( z;ZVjZfv@U_H7SBFe-`O+*bAQHbL4Twn8tfg78)(?3{U#!)R-{aVI&Pk)MCd#Ld|T7 z^Pkd61Thx=edvZs;W23I#&JrtqeR>LDV;eP`RLU5H@i;q9T+Sx zHqs17vjb*lFmlL6TTIAjB!yxVNSlV@MqTE$bg7;Cx$k5_2Q+RL}P zuG}uM`oxbN-1x`W@xM4>amg#rcp%Q^V8U%aP{In}mmVgv+g~LesV-Ja(c%@Mm#vfD zZXx{O&L{OJCfz*_DLXs8*~A3J+dyD%j+Ta~8;5a%HZOfw5j9t<{|GEmBfUnip8&K|dl%yir?x zKqJy_R3;`&mW)|+B%92&U^Q&mBru2Ax$a4fdn@pGlW0elP+Vg5vayn=-fiCgM>H+JDf$TnWe5PNg}A|8iMXslOJV7f>MYZdE!K$Y%}uv=5Byw%U3Bq^WQ4GaJXU&DvK)tMi*F1?<$$a#9CC6fvy#q)cJ2R@lE5|7t3l(b2y2n(H zfR?M92FjrlkkEhGSbBwtRs)BNRjIb{3FK_)Ospoiko0e3Dy)4^zOQZ|oI&}uK$(GW zBmUW{aAr_YvK=~zsOpuw!;;Iif&CG#RgbpEMx^TMlYaSaNw!;)49ko-V~Td2iQn+&dD>64o{S_5izn$A;W^`+1Y8&=9xrn!L{_pO&@=e}=8g zS58buo!dyaqYSCsck26AT;Ew3CBQnX^o0yRZkXfT7S>3 zRm=N3sn`J5(^;Sw5EuJhyLqPT&EcADDSdiuGli`g@P4Y&E%z^QZ%|}R=iQ5hX)27x zkyjV;`pvh;m4OjLHJo30@RjDcDAu0QHXOX7Oj!|W-g8}N&8LG5oZO2RbVzELD-MG8 z14@6u{>wSv%DBf$Q1PW!E%Wa$Mwnr(rdb;C=Emmue!O@d@}z-|G{$!$&40R1c}`O9 zQBt0)-A68K#>-w1Mf8K8Si6)e!i3d^T4Yf!`=R1>wTz1JW}gSGCQ3^%Qf~{mfX-A% zwLg_V^j+KxPq-zMpfPFPqwZrPU6tNHpVy8xu6fYfkNbrw_h5U*9P^zj^VN3M{exju zv#0a3NmSiVK9?tH6WM8jzqh{e>GP5`jW8K?&hEnvZelKp*6XfLD~7wxCVehq%@+Mc z;N3V3&F)(<+=B}@2QC(>ME-@Oo+PH?%_CpxHGv;HPCD7-5+6ckavw061r4P`xf4cD zbCE|>FPpl^^mq>HrkbYr0FklwsOQ*0=qRPkcbX8nv*l-ovc72=Bq(n>3kq zORIu0d+R4m<#t62RT>aVL`$ni$x&RWnmvBjF9|WauyIf(`@iYx&|#vTbg76JUn+;X zo-J8r^hn~zjPL;Ql5JzJcs8LSAqH^{#!SHT@x<%%A4mH&c zZ!^@@q1)!sEgC1%HRLBQ{*!1xPuunX396OZK&oO7C`slhmAHaGqI9jy1iki=T?)pH z!==@wmDKO2h=uHLcGJ4wYf22GQ3p3T;fuzX2u29vP1)H)lXsVM-$EYh44vYhN@at`undhg!pDi5V^pCzQ z#-V6E;VYbboGvS+h~luexk_Z{K>5{$)6@yQ?=+%daK`pWNrRRCJBZiz!|PC#$2!pP#^$tD zuTF8>#?V7O2{O}bVB11SgkmNoGqJ+pY}&+KK}%-@5$uS=7()qng{VH)ykN>6b}&M2 zDJrE|m-0kODlcGRrisw3$_)MaNEp>TYV)?K279F;m2|C{{w)tT{uJ4YF(w3W&&vc0 zMAq<6APH4`=~8lF0taQ$B>X|jN)zV>&ivNS8TinZI;>WY6JEo?N&xrdy`T2IS%xz^ zuk0!cLd9!F)QZPIHpA2y=P$$hgEL6paIH#!nE*RdwI%rpADhhWvLkBbM>?ccgPvgH zow8O$+6Np#r6Lw&Q0ZRh-fAnoIaA3(h4%SlBr^94RBp3Ze_mS@URmC*NoUsg3t5sh zw7bB!uI4*4nBV#=35)3xEg7vFy8+o=@??!ANmjKprcFM;f9)W zn<70o$+~&+uITVg5^V<-O__jaD%C+z2BfhQPa6!n%8@+p-u&ZYy1|LP z*yMwTwvf<4(+hwp;rHknCEC|X75=VAu9nYKFe%0X!aE#3_>GZULTFT9v;ZdYisgBx zx8n(RMUhf_Xj$t>z85{!B;>pJaaFP{eM6<=)UWyR58qfv5X=xE)Jp9RLYn3d=Hzky z1v^#|uohW&x@xq$kr&x^Ppd$O&$xa>-U!xXvmK3_ga}dXVFDaXs-SW>Xl1VQ0p8JZvE;cLT!k-Wa#fWh5oX39Dj9y zdugXE^M@VOmJ^QDzYqEDnLSno(2|$_Bfr)BN!D~yOEf74fo%Ko6uUe=Kgb&~e-Wbv zMKb>QyvNMBG(VZiDq`Ai7yCf}vLJn)in-tjB$Fm$%&a*USgOX&zmsij=J4;RFpI8@ zVy)>GVJOqnYDZ;UElXn(P-s~w6AR6 zXqoZpYw9#xCyNZgBP14C3h?}UkBwNWz%W0;XomWRHANrO;z&LbrcbVi{Zl59KsQ#D zA7gKdi;uMf3bye64oHy6U&t!PvYIE0axgC=UyZ&mGm~DvlUZ2rJOgZ8^QLJHvTDF@VZEn&zFAEgKU06+Y8T)})!~F}RXOADdRYzr@iyaTK z-mj)(E^{gO%M6~H!w0xs3q!#|=0TI!6Ul%T_Xeq>7S89009j%g3VOvuh!O{y5i zVJ+3>*?g+s;7Z^?-Ni7F@%|gCTX*axugGP!GBU;9WtB!M#2|QQ(+BBr3JC*~H`ayA zjQaY8BN|^wDIT#SQ$!kgtEqw2*mQ@bTK|;c;dE}je@JMzgffv58`tV0VKpx^n7GDr zkn?X(Aqh2|Q&m7NDQAQcO%yT+y%dvl07*4Sr)y{5ZzQd0T zVlJDV{wi5KMe_{d+*Y!zm`W>-wf>8P^A8u?UpIfJzMSUh6Z7k>p~quxa_>4vXa?4wYJ#TT98az4$7=nd(c*tq&!RFnPdgWS z7%MU8I1;T*ZF-xEw-z@u#(h;^6h@YE_e*#Lq(<08l&EYtC06=7fpr`7k0(w3YYlZu zI2m(ha#iwXM3Tn5T!1gCzrJ%j812?8yT}6i{#s5~$=6%7X*9yD=PYftx_SS3r6HL1 zL25L>%bVJ9QKsIO6Bzt&$E0U#RTeT&VFY$7_Gv$?sDDCqzIL75=JG1=BJjm5I8(!1d; zbxZBH_yAZHeDp!MEeJ8M;*3n`9e*?3l?4TB_;?CD=f+E5?X3R!k2GChW%-QWKLB?p z^$FfbaJw$|QyQ|ZIV;lrtHPGM4yXA4xrDO%ddtje^D{n<`OZ7?2cUqaD1v$kMYyRt z`8z>k&4)4ghd9>gtjAE+;o!@>l7DzHKNUo02A!7p-b$x$KNZ(i8phL-apD>6IaXCa6kH5mDIlyqjAV6T!G3|#${f0NF?(coC(2|_ z@uf;a1Zu(RkA|+-7DeC046OaO1^Fng=?Ydr5XMh4i6onDP4c zX?WpbjD7IGTAI1Xwoffh!((t-SpL>z1H{a@TJskoykzmThumcPjkxa;9S4m~W?FPx zGs`o^4&TThBJ)x`m_)s=c!?IERBR~0rda(H0 zpL`1ch~h22QgLJ@BaGj_gP?q4FeL(nzKU%MY)?W|gddx1@;j>G&(cP?fesb9k9Zl91&y z?ZB9OdA*A-AhcjGgV_)9J4*Wcbw`i~{1_}y#x>$9if*1B} z8-?g@G`EeSV`9V>S7m7AJ+1xp;GwlOyyIlVS#n~fPj8Mva59q#;2kLd88nAL85PN?sh_MuYlg91FudtTa-4z(#vm)`<$JYPlvCvyW8)> zhW|4Q3ST5UDHDkB^${~R^O}n3LEeVhVq*tB!1_&Y-N*SzP-HOR>K z>=>yBbH}TBbTHybQ}^8~^LlDcPYg-^zw&Ah3lTTueSiKcTu4FBHU2Qj<4Qe=Z z7g+U?9(q%)ulSnUtT*0%H#Ke}+L=h|XI(OydchxY|M)W*SUr@D2Hv_{Qj^NnU>(B~ z*M*;T1{(?KI(-^2g<5fozzQW(3i*c*&YOfD*{Xu8m531zn7D;8#>&>3%vQUJ%px=j z;>^K05T(AqGu8)2L9EajP1@y#KY$UfwB7)dShhCJ=0okJun}n45Wp9ID>PbNZlUzp znk{OBhjP(P=D$@p=L{@akP3e|WqulvU_!$|3j(JjN$QQzd&Me)6mdCT) z>=gkcmO@8=6J$FnygcFq8)z_*cgu3q%{Ii8D==la2ZgJ=7E5p;y?nBc;F8$9b`6l! zK$Zk1E7C+DEpd-GelQEB-g`~+>|S7=*F$E898kH&b+_P=ygI1mItBaOk;C1V!4RyF zoi@TcwqttXF;{Mh$)Vwal^z49^&9!NG9d2(wASxgKHsg#MxVujDm1^7>jC+2CY8k% z!xIf#GZl=G_1>q72HT??0ne1kj&5e7OM08zDquIwUF}mackE=?QlqaMg8Jd8xis4v z2@{6=0Bx`sG>dfPYBWu^#nBz2JjKJ^i2QXwwQX2P2!G<6GQ6mX6mvYFa za1htLaY<-MkuC{3h2$kdc0~bu(5M*+z%)qXjYHAun|#YDO`iF7ZEhphDoBA&HQ4x{*#OItxd-=(Wq831GG zuEa}bQ zY3)0W3O>UZ22Sz90=g%k{>nsiY+}drJU$rJR1gV=d6F%Q7nW{BUrnDJLR`x~M=<=~ z*`c|iwrHi-vuG^n)T>h~B`HDLnnjrx4tTwOAPo4FvmjSpIjPrzA2Q4^T0VKjvuNPFXN&^Qcp-?e@c7Y6IG)8}6MIa5=NWBO3UQxqr!x~L5Kok}C+yp~OxBF6+#m3*|E4B3# z+1iGQDgS)Eu8ITV#}80}o<0nFOU$%#F|C?XJ{wRY2+P%g7AC5ZHE_Ml-SiQ3>o+Zf z@vq46xA)Rno4ErCZ1r=E%ZkGTBfIya0i;k}Wp(|xo|uw~Bdd1G?`mJn|4#M#F6#yi ztMb9D5X^8UNfx~pL1izf19u%a-3a2u++oC9rLe^4Kf*KBOepEOmjMX5wGCRCwsx zCe#V2J3K!O+SAJca>BDey}m|3X~h;OqXd6odmj-DTqO!=a-4{7`;XbDLsGqB2Pc)V zmzV!d*fo4VOQKk2R@ZgSin@ALU$b$z>#Vqe!F5Xw6nkCIp|RY*b9ZLmh3W6Gi6~6q zERv=0w)D~(xJ;Jdl+^8&B?6by-|F%o@KOmz8$D8h>DobY6y&@hsIm}YA9?+gaTjkd zhsGVFzevlUy~a)k3@dbQR=eLiE}q_xs*M;fOn^}cEwX<}E0E445rIa&Rs>&G z%o@ScP`Nl7R`v{NUZMquY^4(4s-49m766;Oq5+pss#7suykC5G2;|H!nCzQkr2{j>8W|TxLs5zlr04eXl zr~NxGJR%m-H@8Ita1gS%w*e4}lpe7}8}*79?DlX2A#>oX%+SY`du00J&>^$d^mhL9!*&Y47B>e2XZdp2#1W)CY@0(EIf_bQ;KD4N^FJ(*Sa8R-2QMjB!r! z9nD8sB1oxSuTy}NGfLlr_eKhXu<)0!lsv!i;iJg}fTBXjh|s?NWTEykInbfdUu41m zq;?m`0{t~1WMuM4goT>Dg=2m-9a$W_=uzjbY4d#*Nq=y0_6DpiEv?xZ?T@BcpGxoY z&jY9QxyLQOi>Llt^tcge=w&L~M^9%hH$Hm3I532U*ocY-k3#-4ui*X^(KQukh)}|* zXMuS7k&dF?4n{0#WLdX?IwiEV6XI(Sgj-&2469sPGWnHOyNW0M%XZffNSXN|340dh zUlM(^RMWR7A|S#v6Je211mmq-{UFGHR7>-<=U@EQ0C_vPoj+oBZ_kxcMOS*3w7?hi zwstWW-M_cC;ca&@L_rZd-w*_3`bIUw?3)MZ4QP*G^LF5bnnKKI$`;n?nnM4vM7>2P zXR!g>&fT&u%vv$#?b`}P=o_`O7>Xw3IHL-@l@U+LB5_xoG^*U}R0t09^%Dd4F!VLj z>#NORB?k8h!G$E2#0oFDb3RU54>cf$bBq{g0}>Encb9quekZO}{yG1gTk#Z`;{~yJ zouR$W)QAM@H2yXJ_J?_>k0w1b{Awx6n$W&01-O+`C(RoYLFrorMbV?PZ_XiOm-hlV z`*=!zXwt*i^+Wu|d12aX0l@Wk6%sLv1F9t;fE&-c<%+jI!FMdH4RKYS;E zMwq-JRlOPew5In9R}nO9P3rKOL^O#!T%+4WF#xx_Ul(M02p)0b3(E@hLJE5{OOxy7 z(Uzd5n}|+D_u!)6XxbaW(K&Nbn)#zWMxrl771(L|+STQ4=iJdbaTP)3$HHsn8M|Vu z4AFr7E@lJ~W#m)m3>Y@vTrd`?a_yJG;$*h}i?_FmimPk7MuFh&?(XhR2=4CCxQ7OU z1#i4@cM0z9-e{0OfCP69!QJ8Tyw4}+ALESw@?7=ku`kxzRkdrcS#wrx;|nKBTz0$t z2IftR6$8=wJ_yDNs&03p3Vk>}q)IA@`-3vVwOA2t2@D-dt>m?=R6cM@v=O`0C|l{_$33v_1Dw`ZdE%BNzppU# zlfjxWp&u3*-k{~}#D4(hzJ!gcN>wQ)VZSEn?MuBJ!Ye(|GQqW4eQ)dDG$KhB=))Yo zRhNl90)3uV>VBckJ&{uY#VZ44R)w7zj;uuotDy z^{9>SjWIVFhc)pZ-ZzW<>+(>jVTRuy7%ZHykqcU83Mj+a?g!!_$&wuCB9M3ea)fCC>c#>2Bt@T(F$63 zE4Ab6$py@L@f|(y&Mz|$h5XRRlqs;2MR4;)ti06EP8C|kRjMuJp>iy0Umo!^*u)R% z7mgzLaSwBNAmJ&{ zGJpMWEWx?kfu(eQ-YxkAsI4qfk`a)v70S{~R$(W?ZMiXBIti_!%2-rYuKuv0rj&mD6#5j;qS_0_LcyicB)Hb;ws|>_{U62cRRW}Xrm5{RtbtrP0w^M(DLUhAy3tPW__=-F1?5%Uud7zl+su^NU+zn`uV5? zcMg7|JG*r28NbKlkiF2vD_<}8@PVFvt1NnkKVLcR?@-Wu7-nKuhS-?^Nn9Gf=cJ*$ zRYY%dqd9l5YvK|Ieampwli_5U{N`rH0i%f`bsYM-^>Z*)a>#ioDY%y@-neOg z&1#t2sbBKvueKi9AysI!bUm~I)AI1o6#C?&-IGB}9E!+k1jpcz#T$^tyyq`Mm%%NO zB|fi}qu(aLHoce?D#Z395ncVu84bbvu!1F?Bn#6dWHi{h0L6VCdz?-hPN#Bifh{?=3|&RkfIVN(vNfHl46W2Oa=0HH!+sQQuQ&_qSZzc9I2UL{ zhnB9Jc0D*L+ypi{Keq60k*iZRC=YrwWvz zvpzx`ao*~6k3t7B_$f-JetBN^T%oUwbW2M4 zQhIXaqmzzu+{p6SY7ykIe4ftb5y^a;qBOPl46Rrpz}}|8f)hF4Yp^w#ufiG(WF9zT z;peV44B)A1VU@kBi`TrG_}u*1N<`B42b5n1>F^P=yL$C7^lOalshQABFd{V-35J#q zuV>&+5VNdIv{^9SEz{^b745O%9!;OLkbdJpWKU`S=KOrY$J2%|>nn#xDzN;OZ~fXh zAm%n5f2L(iKk0e(#Jlnb!X&!rR3`>QBi$A}Nd(%i)9d~<*;)>X1c${fSk3#U6+uMc zW_SY~SUud{)5inUadGIq;n5ilm`*1{p@!P}qX-S%fKc|c_l5M>chdaFGdyfN18^_B zj_CK9*ds-2(d9h!y){ZU-H*Vqj6o1O1Qb2ZWaF$SYDQZ7Mo&1WhS`l~PZPyiv|}#%!odzE(m=)b-0VC;IGn1{ZxiWF&!+e1k2+& z7#0Tl7AVyv1?CSNcoqV=u0f7$Wkw5wiY!)5hx>IvSuRMGaeViUH1n^p$W{YGm$xSo zXmEuM3Z#=q%tRMBzy4I|&&zJ%)9dr-Tt2e7bFb{;yx$Pyx3GE@CnVzyNjzRxImZ^$ z7-^dW2|orG)t*YQ@h3o28q-H>>{UZ59!~v&ZaCtE>Pr@YV(hOIO@@!m#jR5ao=1=b zTs{WQwIj1&GiObOo@`_X)nX?iy;zBN4>>N>)Ele!o3oUa%8)P=GXStQX`jM{=fdDNUfGL}GXPLhE*}`NIUj_ogjSw3v_r2e89A zw)70{Ey5EBz@Idw^1k6eUM-${UkeOVZAU&FgO?JqR==iGV8rhEJb1#Z=f`HYk;j>AgEJf<}Za5K4Tjq||m%h5e1 zraNrdhU7oEj?aFmTm)wuNk6nW$QcqO2Ni!hQvKznv$~8we!D_sw34Ly8Mks3G!o$X z>1<>0O!aiPC7}6xe%qy1ir6hu*<$Mp$fIQO&^`=RNGR+ z7Al{JSAnvWUQW!FlYVb{d4KD*vtHasRqQS8NJX-dD|3XpCr@~EwYvf{8n62U5*rS| zOebsMEV2AIiuCNek{-0VAzx?LtNx}SCFVWVO^se82qc#2h+Vy{cL(@WJ57aH{w{$W zHT!|iMdCPSdg)ns8AJO9gAfqxm_!x*vFaAw86ZjR)CX(Eu6cb@>Fr#+-6T$V zhNyccpC#CV3xz>&wQO^v^@v$qzu0@k;xuXf zN}<`b$q@wDclGutExh7MkOMg?$n+V2=N~q!ykPr=V9=SY-`Z+08K(fQ`&f43rd-A1?aLumbr$EwGSS`V50a3!v@aAiCeO=E>-H!T0hARQ%d0;= z-=_6*={H!%7FJHs_@)x~x6=|{#%-QS4(Bj|6~iFwNX(wvlVpejeORcEeZ^#B*Sjv) zddTrbi!nF}<_~kC8k#ZjZLkp`sA(#iUobRKv+d7sn=swg>kmJUAFXz8re1&(#y4px z)u`?_2t!`2&4;ac92gTy1BI?>t_`aRZ^4C6fML+qCLt1zuhc^(*wr7;#8l6ZPkIZj z+ANjzTgwOBbEr0_W9%CMa)xVa>^FvrCpRt88k$reWVqY(-En!AmoevsykoeeLY*+I6>>iC9m%?{YVpcAgoRLdO zU&G2MUh{w+Z_w-;O?sHSF1Q~ZIqn@#wsAj5K5x|-c$Q#M{Sd9eiTZ?%CNKCVMuHwe z=UXcJi?Ah%FNC>x?WNNz`(yLz29jBqV4NRU#98$nS8a{?zJr?Sp;1Hx8AFPR^|BZ1 zpx8swaJgZLAom6K0f&v~lt-bt%fJOZ4ol33r@)_ONsj8kvbdVj;FHN|uiO}h0YSNW!LQT&$fXX5Hs zJHVt_FNljuF#JYbqCF`iHT>of;wn?`ZM3g~wU(!gnpM8oxU#wH6XK|cruyP=KI{uF zqxd;vnk;Vn5w44dvOcWPsS-2X+K~Aj;s?usERn1_p6&BU$I+L)XqTRGDs`bV5f3=% zMKmO{GvRmsmQ?nm!zg|nI0JI#hGl$=Eiip8ek1Ug)fhmxcrI{OpS=)Go#YZYhFP7I zvON931Q;ptsD5lh%Kb|>eRiz)l5V7BEPJst9&0>yu2f& zJ8c84!Xk3)e75U@j_{XnNmtITJufh+f4yvnCi#v#Fypp%6_7aYu2Yp`_ql*437dx0 z`twNRDJdz+uMG0_^DwfZo2xCT+V~vzCxqp&8MBN!CUkUY^qC?s1XGc`$l+gfV7*_S z*!-Tg!5fi4cmV|U2F&E-=c|(f?Xi@IVv=^n$XK8IpEp^olv2Q5FZEkYeP-tduZm`z z&Cn(w?doLUt)^t)UFl1q5%BcdXUJH1wE*ub@ z2Qb zVPQA3S|@@TmepyGQLInGPOn)~xn8Ck6fOS}+nn-WCU-=TqzQal`;iek_UTI?zE&FhT{k`mMYI2Ly^Q_6D58pTa zHH!TT1H1E)w@RQ40b~Ggqw!=>p0w|Q{0W|i(b5GWmKaBHi_^F5bk`Fn zq$Yx8c2_IjibEtV-$re(Y{kcp(~|tmi!ntTKafbzcO`##s!oiGuaxu4f@T`Uk-}Yw z(&FJluvfn7i(<}s#X-Fe#fi%=O)lP8C^q!Kp&!sttOg5sx(?2BZR*|0XVFzOMhi{_>rwzp?*cV_V} z74AjwjTM8YX$bQ|N!pR`MUV@flxqvAe<<`+b)DpRWI2JL1gczYQ)-|VqUMX6KW^wm-&}*%n{iK(Fvq#0pt5r(SRcy2} zt#jw?ROw~&Lx=`453+wj*6u@2jOH8crb|jlh;v};v0LlFIvuf3<9N;rQ$p9^D|S}2R(u&e6S)Jj z&sGmMY|ioec(9rUwq@ukDX{wXnJ@Igkv5FI94m)4TB{S{aC(Qn-eo&t006ypaU zb~prm7*6I6QKnWh+VdqoM8S;f1yJ&ks^DvW!(L<&^b)S= zu-m3MmlIul`sm};82fDBh_S$qXn~i4s9wB|tMVMbLSd^39c^v)M^<~VG)1Xw;Y<0i z6xrcpdBLXe)IMv`5bfS&m5Nl3#0`Rg@3SHv_RldMXEVK|u_X9%hMt^TMfr@si>Zc_ z+6>#b_EItIS2uqht}xMSAO#*DY}QcGU)=h_+QUmPSQ`ni20r(#1c)7HUOZSn?k zh%Y5`Z=?e+80tgG24?UUMBhqPkVH*M`};?x)%mv?J5WC^v^Rl z&#;mEto+sUL@9BH^rb0fobY&^=ofPl**ck#VMNl(erVk+IOu!pYjpZe@tS*U3hoUr z=L1gEVEu`aZ6pA-smIE8>BZe_GQ>zz*0#RNNIyV$54e6f%!~uB4m69XwP5xW z$r0qVIz^pYz|$L&=kUi8)O+dmL7ABnvG0tKtQsZ)fnO?+tb9p)tuOW|PXS)(`{TGB z^J%YF#YWe_djuAT-4GrUI5{mDYSG^H7=T_&6Zb*rlFX|cVuy;ZlSX~UfNB3;GU)p* z9M}0#!`tnE?Fe4|y&da9Ta%L|HJ{@HHkq@f-lt(4yd$-m<-G4hO4Uz~2%q(-Bjcim zu<=#Dz(`Whq;axpTrin-1M8IL4sy9(dsQuR>9zZ8y>=z{=+PLd2RZ^)B4p8ewD^QM zIIjOF+K<}xzSRrt2$1f-55&t^Y0CIkH@%wyO*?``WJATxu49FnE*#p-5)~6$2B^X$ z?pPs2jv)!{y~9VjH5tHm!K4VtG)s@!Yx3Wun2mj8_cDuzQ__cRh)Te;rkcc-I$m25 z(k*zKb#}_0iz++i7pDpbDiLmR*?1)r;wb26z+JTv56KuJqQrCQ!=ugD7%d@5- zTA*I}%NeqM8X=Yxow@s~H6#~i9u?WMkSUbLre^;HJN0^rvS3Lg*s=evXq=2_YdhR> zy?tA^`Bgb+9IMQZF=aWhoh+#HS61G`8K+?EBPpOCRmRyX;~@+1`WZ1kr2Yz& z*+YwxYVn-Sq=FN|%$S3{)o&UZ7k*=gqACQ@@>Ku7(mP*c1nc$dUwbKMEgmI{P0OQ^ z5TZS-C8+2RNonT0#nCCT1_mja*SpO!;I{DqlI_C|omWspGFbu6HXBfBoRb04QYmn( zGcaL3YSD1pzx-fhn%FZ8s}0N5Q)9HQfjDjo{uwq*vCX1K8{4jv7p73dLIzr zyUiZ~DJ-iS26>t%^H%GQeG%|09$>;36t%Lc%DO7VkTI)N&jkPVhdS^5UFbKVIBYRg z)f|38y(5J-+8sjId2z_{jEqszBlKZW2Dg;PeRaV!01{kfvjGG~6-+CiJ5^`Q^Dwo` zc3v*%oM(4+>||nEpJ3E1SjoP+;RwA4eQdl};L{8~VjKKMWIT*gXoWI?6a0z)=0361 z1`!A+eQTTvvKo*Cmp%!Xk%3sRe)>(`FI`45 z;)OBwD}`wS-V4TOM7m4)1*a_X<~a(gWS&ZFoe*s#e-eW|)+~1BI5uSQ#|Op} zqwsYSnvQ1~1eh12^TP_*n4@SUB-Fy2)hpVO&);0sDbeW3=}l!CPj9&If4?Sl&4+kG z*PYLlr{S)NgetB}H5>ksydx^I+dq{*F*iGRt%FjXI+iH{_j>!Jmt7R_Mb1++1?&Ns zZFWSFvsR*J;{LO!wdFErxAUsgFe@6Vq`idQcC~e@s0>= zbBb}^&?I!{X0w-4LyX|Q$H6}7p~)^lQ}t7&!bLL{5VlMK0w{)~ z;^}@XDJbfu`uV}E8@X^6cHVpN$~BbXhG3BLH6Zl5q5iXv3TYCD-F zup;pkr}oJv-AY3)B|@gVvL13CuWmS{$jCL%KIuZz3{*chxbIurB z8Q*md)wKcwyC0kxYIRZVk>yH}Ov{-oHpo=9HM-xZF%c{sl|WySsLyy>YyUD`xKIn` zLH%>TFq597FM>-Mj$}q%Y!QpOAX~)}(v?%wd=tzzmyPC*5ABW%pB;WzLQ5{xt{JqS zS5-Ud;eTsyEvMnbpSN0>4_3(R;v-f`JKy+YOP;fO9dIhH6z3PG4{>}2-IU;UwK0=R z;U`AyOIhuF_f{CR|LK?viCFT}%r3GvgMa{I*I!d z$@R@4&{pL?NF2On0rvy~dbN^-t;H~-4h%Z(p;AAVnp;|`6wO$1k&|Pjk%*VMJ$de< zQa3(5js3dPhozDNvCXdyFDIk!!y|_GG2EY`?xJXSUj|#8qhR{$pP$M@!b1SKAbb~M zcv)y&m*9+{KAY2`hiiBCj5 z_zs&^-hRyF!uP>~fR8|bx?Hv32&V*zqEu=~BaKVd+ zNPp8````zQlc_XF1iQL&|2IAm^dPKb z;C63UktZEqw64^&9^9}jNsJ?G+|-gKcG`~B)`s`5#-y=cy0&q}+T>)^{}=58<3z~b zVJy$}=YwFI#`%&SC>>9kjWWYeX2!XA;4&JpuPHSxfA1Qrh-D(SA6XzR0!h?7+!g%s zW0Byt?AM0b%+`|7u74$e-SpRZ_$Bk7zwCIk-muZ%OWE5*NYV#L=r4#Uf$F?tF8Bgp z@U%(LaeN^Kd|)Z-$(@t@@PlQ<`8sSreZ4i55jV#Wz&SSKstH#WK|7S7bo3osEm>N( zm;(0=T!@Cwv3v%Oxe@!Tvc(7vc(p^OvIQMfP{|F|a# zI|W|f**uB`^{T)wxJdbtBbFC>J9cchbYdg~(r06;t8Ec5>R*cIEU^LC0GyST2J;QV zInI=e+#e}N2>oV;SIyOHHqR;mpiNwqhf6kOVK-Km_JAWex56Q%{}a@(f>% zpMWI5&o?IiTfU=?7Aa2e3MR8Av$k=9b7h9%>txWp@9D;Eh89Tb1$KCZc+w%i*P_mc zS5(np%xR<0n(l5>!xYOHe#(z|(a-SQS16?ArDlVckUAgFuR)o!FxTSBDXa`im}&Jb z1$BjH(NAHft+=HTHiJvOo`sm+uhz{;;<Kx(x@2pd)AM~R1i5_l~9?A39 z$<0}vkg7n!XTr)qMgn)r`^V3CC(Lv&8{&w}9a0wEg+5iZSL|D*<@m5sfdgSy^d|pX zgk{zmr1!k$tencrBToKiNWnqg@q;38eox zKqN>E{Z9!|)?uW~ka_*H{fgYqyA`@#LD^F07E1_$rauPF4?e6j!NMEoNZ|*Udlq;xUM?M9-=ALR*fz*jY+=4mi zq-@?`P?f`k267O#()#YDKB#R0d_l~l@1I2Kt>C^wVWO-vayH z(05bImqW!Zz|zPfIgRGdi|Uf=>T=Jt*%^!t3ob4u;_g$7{({r(P<%zAVVxHrHK6*5 zoFQ8@W9KFevw8`wh)I;&sxKo|46}t?3lp0C&;|}KpHy}u#S7`vWxY3^p_Dkjm#p8N zE&7V6l1A14<97~?jLZ_FS~GnH9FV`>r_Dqb!a`Aj z{S+5~GnBnG1u8RJ=kI!}29RzaP;v#s>MdCIU66?MsG_Is0ZMg2;a~Gs#whW*{;!?I z7pCHxdSZH_eo ziWw@wq!5(PnPuMYoB~%T*6M>QrxTYQ8LRCUMRj>1#*`B-X{?HYr(e&eHnsLiHKVPX z;)5Yaq_WOJJP&M9n%hPsQk*s3T)0$Tl}&9I$yY}j+k~ZFnF%mG8EGZ6X}~h-NW&{g zxBox(3XOaRtiNGdsYb3R6ri^M8&x4TNmfJ4vg)&9BD{lExWek0aZy9YQcqB}8Oq}n zzx&(JYUoW7EzWI!(;zCmoyomi`ee(AdhBD(NSaU>RxJD;nH0G$;m2u90rr zZbc6@IJOO)U!GxSBZ$4vWUPtH49Bk66lmtUL{yMx_J%0HP%zzO3KljMH)`Sbr29K? zUhW*ma}EX`#g+Zv)RPLq`lsUy8_{t72gvMU(#C?%f<~NQ(7uqBAU1y3{?WSFS>_Tc zl@A7bqylz{+bx3y#X165|2H24hB6y*ETNF8*>taVKh2dLo!;Z%K;s{^MYl?}dqnVv zk6$Ax!`4Rx=QBEV^vl&D)dc+$Z2L%<{|NImZGwn;eWn?s%zPki4fT~}Lw!-3-Y~0% z^oYm_eqWK}0$49Fu&Wy+pQWVyB^28B=E+!*ew2|oIeM( zX%(djy;b`T5jLCH&(}nf+{CfpI+N%cz&<2+&OMV?x7{2UDA?8UiayirA3%>Bh@RoW z7x9}lSxG@QpyaPC#|;g&=|gql02k7s&-f{~$uVM31P2N*AK>1_kpn_fRZt4wH6z#P z%J(^Zju0qyIjb9sSF`7VTR~=#7QW?$BOX$12XyNJNmK3x%ksmwaAQfF(n)?Qy0o>p zzgXBVm}rP@(XI_0IBW9`H?X>XJ1s=!Yp(I=a<*4mjZ>*dVLnzCYbOB4ZmI*K-_Xb_ z{yU?!KZnu&+#n5%IRYg}DjaoS`s%Aso6XvW5QPUgIV&tdgBBU3&L|Z^qV@~dD)X@W zmO(GNGHh!9L6!oF(Ql^IHnH!y#p(ko-kcg!=?b%v!_S%d3vT$p_;$5i?7YK5{Z%?k zrQrd*;_vgC$$Qt1AT68edmWF!@vpO=MWjE1_r z@!(M=r4IK@$@e_@&ja}W(@6DihWO7P-YnLSEP#J6{Bu27#_Bsl^*drZUT%4EZIdaQ zd5)NQnS2>zJ7Z`QmGh)->ziAB^-}|{-oH=0^m6oLS`^ofO@%Pv>J^}H$N=R1R0hZ)53N>6-k?V60d)_Rk{|K8xHu`jN+k8da z%Ei_cibiyoJC{5Szy;CCBd)3 zu1q0?r>P{x{3M?e}s`cbQkC;yoXfpQ_x$P+>kS` zl6ff@1qnUhe2pJ8ILm8x50gs$L`}4Q23BsyXFQpejfq=*HEwV_A%N@(z@b$sJuAtB zQ&WDu>%BU7#waxYeWJ#`uHxpC2?#z$4Ip`cZiXE4z}x<#xX+y8!~V)HAb3->y`;S# zrPiV`nO9?Hipu$qcq{4C9}z>YcDm;lm2(FU$kL}HxOelsBu_pqkUI9f5ryoSF(EIz ziO-3;em=o$4p68+r5Mh>LTh#AB-A7u@x(s{!#qh2KWf3RL>Q>}p)T^u&$=}i?2^Fu ze4M{#6u+B zIQ3^S0>~KbR!xA+{6`zH^p@rCI=K0y1%i(uQShU0yn+|8g|6)dW?Exi8)e!9v)@+@ zLjt5YyD@Tsb0YrjM!-e5gW3F?ySBPaN!X1$-sf^|PEs{pfWu4n`Ftv1 z?57&-)iN`42*3MpxsSEpocc;Y+jT{`gB+Ai&^>F0rMdLA0Q1=;2J#@56qOA3 zLd^1V@{hriyVN~@_7-_0z$U1-Ab5ppwM;joL@B49$GcDm1KssqIyea zA+QpUtWOxcjqT}-xjJt%B?Lx|XMtIs%E!1SRo7KVEwC*C4!;k_6X+qmGX#58<#hC^bnX5xECm&$h z8I<%Hdd$^bocAAT;4M3(S{G6ZTl;DDL-yO7xkRY`Aol2|LvxnxwpF`&xbRvA@ z6_5!l2Lpw^TCoFa)4=FrKl-Z|Ygb~XtBg$lqX9@}15x!AF446Bm-bT#HmDw0g2(yK zyLXqHl+pv%*FM*zDyCMLq~5mz@cA-Tg+ZnRVh4AOgk{c!<8t7k%da9srgbJuh>4Fb z*l%=%y6nAJt0!ERN?^nd8}u$d=n#3YHjyp{H{oE?)rYdgcnO!(rl8-41ORIP&7&wf-LdJ|Um?+RjNn!#ao+6=QxUCWA8|JUZJeWUC z6qi`w9pG4>5@%fLi0NC>l*Qpy!kP93w7mCt_8dlmV?WO(uUcUK@f5L&11VrtD#TT- zlPt^ko#|&N(a_l6736EUs6dwodO)*Mnm|Smuy{WPWmgGhg29a%d5DP(LF(-tpxiQx zQ4eRwG!x9vo6MVMjFF8O28Glrdt<-XwA;z$_b-Fh6E>mN#qaJ|JpNXif%^m7}^}3!1b0@nLoSOT3BE;3+*((_;&|~wj?vH2P?|Y7C3z- zGf0%D*bR*+re1r6c8>cm*3VBe#Ia~o&e+O1tc(6T|MaeXGfBF{!Lz5GMKj4^+BRP} z0I{pkTKm( zvd<>&m423e1Kc(Q_Gl*$3yN3SX<=_;AkOC~8QhK9nLBiV{9REREJ3qatY7 zo%Rb~88+^PoLBG#woBU|PJmhbr-SJPAn%jp-_KwEFh<-t zThC;~r98T`B}eppY*RxA?A$%()0!O#kxICS5^)H>JdF|m@E2^8;j{+>?tU<=VXri2 zSpxUl3rnv0^0TRM{UknOi)vyT=w0jyz{{y+302?5w20Nex$6QS&~pTHJAMZkeWD19 zXFyIP``X@F$OdSr{m3vBGz{a49EqSr_{l(I;t#O?Qx@3LxcG1(87cvgM?i)lo8#jj z1I-xOtgiy8zC&uO^&gfCrlTG^Tx(!WX^m*=L#!Pg7~`vdp!W8a7z(i`$51`rmqV6- zdoNH=E+LP`LDGak0V24+kxP4u)g6a_VMea9{^8OEZo?1B4Q{DRwatLQgLq`%%!B15 zDkbk_6V(5cRK+BKLr6z_oP?bo0o#kYt0F%B4;y>&i=zi`LY45CIM+i_PFXP2;0cvR z^}P?W`bN&|icIDWxqeR!GUN_!Xk4O=p(0{^nE3Zn#yZ+h;8#IV3+ zOZif?cgX(q3f~;EZg*4UY|FQT&|P(neiE&Q!SBldd83iSu1DAvI#-P>W~J4Up!(U{ z8^3=^wtdQ2dO$;*q9urjoh`HZi>S#_>R_846*%SmAd_A!v)k>x70NDp8dq?CaBwcf zufu?ym$;vc!uxB`P7$%|KLtxD9XzcFmOQl30k|Kcx^Tu$BGCx90{7W5(pU5ez_I#1aPDep=!0d8d zv|M5hV4qK0(w~OS;f*ezbR6~y;tn*vosw>CQXnmgnFL>++LuWT z^zfe;rETkVIdR>*zsiINX;9yZDn=L?9^r%)Y4z06cr?5yyo{@#ho2~-MN3tVYMnB0w;n$fxtvXh%LXL zslX%inqM+%bXtCw&l<9k*;FiMS2F9cIaDoX8>aT0J-oQ~W!;om&>#BrnflOm+^zaf z_uRQp3r!0h_@GN`p8YBDp1VA-T-@ApdJABASZ@9X3M5&+U$Qhd7;Q9}AAm8SNp;C^ z{A_%sYdI;U^cMV>y&0Fc>+8dM$DasHx%hqgmMrd)%0(&<^~)K(E@!GBF1EsOgaG3X z&C!^5Or9c+GVFq7^G1H^oU0rwn`V~ zPwOFqi2s~;{1Q>}`}M~f=+uKw<}%w*zLoV@maw2#pN7*}KG?v-_sb{mj%r5mdk1e4VAb*SedR424((ye!HAuhI9zJxN%oRl+qzn+_aV{}-nF>t zdeJv8A&?4lw*CGl%>DGpqP*-Es-&mZyCSv6=(1*QvDWM$1XqoU^Q?qgHVPt(4+dg%*6(SEJHpqWa$W;zLBK z#5>g6Jid0|Pk^=uq?9Zdsh@wD&V)%O--jXz|r3gxI-)EtIQ!dYVNN*G}Lcy|KNOIZ{ z#S_0j%EWqyrPXpistW1kA>*NtQ9@OV#h6V99S+2`qP4aOXf?8rJ<%z#J`P=m(GiU7Iv#iT%$_FlA$m#V22_iD@I6OjEfr z!7h3AzEnVbmj%QHK7ERa^)H(5DDqz~{7~Bb!c4=!Y*hT%@OGgjj5d_2v*&L&cL}0r zcUd|&iG=~YfHldn!cTwrKF-uJ881B*>Vf~Dgk0L3 zc)gNwyjIF=W`T~fo(EeZ%p!}SjoZ$8-(Ivkkq>uv^I=pLj5UatO2<;Uyq`ieHqvzGx-c%AM>EjQxveu^U+cZGyx=*{BjBtBGnK8~^ z-zChRGriX@-xWM3Pk&>fp3x@YvW1&eY&T~=89mTWhi-~gA34CDqa)dFx*NW%Hl}!IdtK5QMa{=2$e`9p ztto!;9(+_y$mbkes%z@%f5P#|+8b{AwiIW7f#ZyU^JFw+Ctybx28$!e;l$v6N;t)o z^4T(~aX0JT%`l6ZTe?sR`yaVqc(4zLmM&8y^1_{XcjI>~eP)p2mbITOTXD4wLmi{c z-TW==><;;jH6LICZu2&Dg@*|h0r!GgpT6#go6 znBOPS-E6p3z5Qzo)-BGDTsX?$+XX`c+3W;H&45rO8FZQMv&u(@o48P)* z3BdJ&AjoXuoq+zWe#Ur($O+6z1Llu@(9sPyQ~^yAGu6dglZ7$texPn;zv0=`#ieg^}Jf8!5S{TnimJ+Ps1d%aT8my2^I$!tpi>WobmJY06 zM2jk-n;GF=le4sM7H9D4tMjoh3Q1(P#w?u;)J}rLOld#Muc-!8_iDG3fj{PiM9t^# zb|e)Ab+ZcWI5b!l6}f-0*zgF$WRjkM20vagCb+vs)otTS{^^&LXcal{Q%7(~4?m;N zRF@9r`7;jAFMN_3>aUBLdcnOy2o0oB-p2@<16cYq3SFxOJY^PfG}!olg|9uKNM~-h zGE1+JZTi_xHC^5PT18BCESKig{czp`Xr;ANn}&7uM$Eol$)3gk z=8_$>ImEVF;h5h)!)n;!$Y~ZgZn)%D$%I}_Eq7@>_Lw z_kKFJjJZXU z+j@oU%-(f2vxYYeiAt_}gQ_ffT%T0Xnbf+aP!WQ<@_#2RRbuy@3HJ))Mdb!_XO&!T z;rbrV6$fKMr=1*p=(^Vvnc_7mjZ}&$vAU|4w6-0pWj$IXg{>g2$?r=v*_#MP*2q88PY+ zUuo`aiDQ8i{XIRX1IRH?4={eo1QQq4{Xo%A=}H+lR(qo|cIz zCp6Y}PK^8m!e9tG7(y!1VFBzk%ybd4R2(<|NM$=3LxoR^@^@pZ@~zabUwlj&PJzqg z9em+<@X4?2v(l~>tpk)A4IBh$azk&2r92Zd&O>i7{q0P8?X)k&W^C+?kIHI}D^9?z z8t{z+0;NBC@2lFyEVav=*THMkE3lJNGY)R%&0EhCPrO+AF;Q>#Iuc}7M&ox@HpC;RC~dGPl92N2;%F^p>P zNar-IGhgE_J^ig#S!+*B0}Eq&>tmYf$Nmk2u_(2i%GEkS_^`g+J?o?P z!8=%Yv9~PVt_1f39k@nhgqZgh)MzPlt0}JpOV!vvI~h>RoGdn%iFq)-$5LdO;?>dg zJ}AF-ux48{?`wrE!M1W17K&GY$Ab z$B&8zvUrY@t%08yJt!Mu?w`iJfX?8PBOX6oh!fA*VZvEf+KCS!{{R!6BkmdhzFW;U z{=&9-V7QCGr1Bf^x8H{TB7#cUN=~hfKPaYlFZQfU)B4VcsO_12GK;rNr2}Ti_d;Rl za^C8F9XT!@D~h6{;!|OU0d7u5UH_G-3PfyfGeE?qk*dK=l^_-HHH88@waAqs7cjK) zCfY}4!XzUXHww+>RbW9$$32qe=2*ssRy7oGBa080BHXjB{(FoGF^gQ4tn6OGKo%q_h2*s1 zYBDMH8uWo%DDQ_uHFmqSrLc(VD0G({aBsC3dFb6jibEX9zOZ*dngh;2YkBNexs!vT zlyFxa`~-`7mvH(PgsVKxux`ag7a9fJ;(jTZ;P-s0{+Myhroz)tY{>%D0i>vWT^hZaaT&m zDSu>Z+^p0ZPqo* zB|}(3%%=tb#1`4TU^QY|3mclb>eMq1&bJB7;i>#PUDfi4 zU$zuq1l=q#2W7&s%|k{{<>Pr2P8!-Yo>0<>;+EPIzjBN1RhMS#Up%N2h^@#rShd*p!ufPkps zi+vuo&Y_&WuQ$^JJt_LTY$ZC<2n1MwJ2B%*t}?)pn1=A&vg&%Qp-=U}0y4p|)88iN zU1|_4%cg2teazlxTH%A!)a6ec_wK_E9vS{28vuG=2Z@U)Ll?*ii0;tA_4Y)*=;pz2 zo84wG0D0qeJ7x#}8`1#?Tg9GD_vTW*+*fynI^B7nLf>qhZNf{J1)FREJlEhHtf%?ssD! z9F2Lx=hL0;?R|A)-6rlSZCu z5Xux9&O$ zs*g>N@9yl80u3+fBO+}GYNEzMm?abu$x|ld%|eTYvZbd`{#yt5Ga**VkX+Fgm;|K8 zBS8%vc}EbB1G!{u$l~gJ5BLc|o+MiQdk&d##^dim3-TCzpnD5!VlK&2@*gfkzOTp; z*nreo^Y!+r)T2uJCdJEi*4VDk;MFGE*(p!$w)?;X61i=ie!$KdzVF~@2N0}NRSsfPQVKIsm$f!UPjU|Yo}pRea;L`1uZpIwiLQXSLk>l$wZ04ph32o9LI<-}mEQ0EDOV~#&^tDN0 zLv2Nw%2Do`kl7Lxz{hOO+elAFD;EDSy!q%WSp$+9!mUJ75C-{?|r0` z<@1Oz<8lETeA1pl`^M>MIFB=q+oej3tkytBAW3^*pG|6i3;2j}=yjJ+iNy_MJ z14|c>ne0^|E;b;T=9ho$+ITlRAFx=>zS|KxGoOx>I4Qf!(Xf;A*RnW*u1>(%v$P7JvQYPmtPa|$B%4fpuGiBe;k+;L)R4YI#z|bHuPKr+E6<6L zwysY9vvkZ>P^LS|x2pk4;lDh$Z1bZL_H_+&#=|FvS}QA%Fiq|6r24!KW!bz0#zOUi z0R`}`8FUh|}bLljA_*T83v;Yx`>Rcf-X@_)AMF?Ga9;&T8_$9rHFOQ(lFh zOBG@}`?G_9FwR0-d6rZbL#3P|mpLCN=M+#9`vvJ?&KEz*e zd%5inv$B!u4L5L(j2<~4(qv2@tzESSMthf|m-^j`#`#}S>yUQICLhc5+LRmJaiH@Z6iJ|MSqoI~^ z_nyD3I&aq^KSv!{Rrz-7-H+@lu8R!i>Y zS4{`$0(BNphBS&iw~jlpioWTJ<)_2Z(`D7G5qFgB_OZytK0=!6cpY|TreRlD@)K;g zon@Um4=oZEKT>BL9!Vea#SD-^?}vSO!32d&Hq5SXoB$GP7y+yr7NHG<=boZOBS zO$SLSYYA4KO1IFjXwpxmg9AJd>jW4PcaeM}#9%THS;U(b&O z#-5Zm3~&e6LeaP3U-%`?E>KLBLbGL`3g=sloEo-HW*aV~!Qrexe!SB>Y~@onJ#yGp zam}Bu3jRhmBp#zCLjRN||Pi`$gZ9zC#}rW{8+1-ZdB4ii2MrY?gp# zi3NKe!0P(@W#b@{{6M7Ad`ILc+<#gO3+dd?G;-VDF-JumJQ)vyXh(sIeH=Xmx_rE{ky|r zT+g~v=g%>SI4n1gmz}IsFR^~&AIO%WV)cHJuH)oBoGx4Mwy?&#OyAhgx2t=H9c&pU z#mBmseHl<=~Rc{iIIb1}?XwjXaJETRcHy+57CWcc##2lmRT&35yXJHTvn-q8L-C z7!`9<`G={IRVV*ZW-cgVi3!7EDG3vq#V^{$kEg^fBCDCOB^mT0H^~c1L}c zF)p_zY@I4~dWGsg3%(!1F1AaOlQ_n_W<7~;X#<3>b**#t=yzI+o#6^kjMP3~uRBDFx=EE{FO-vidAsw3{;o1#WTMZb z{G$9wU%UmqPFSo+Utbl)7x9PZ6zfM-eH5!H2xmq|}*;IeHfbl8wzy5~(z=)a-o z*6vFrdycBhHhRQvg?&HQ=8sl2SI8^_PH0e3COV)K%s`2orF zOx!rt;luevHThM*RZ2S@9gR`LSx=0gc^@0vZU4gGdRnoyq-p8?dnK$L>Wk}l&tEJG z)xi|O3enyZymCRLY!_ck9^9)2f9p1Ip=~7~9r`K>u|{aG(&qJoc-66jCDeW^%?8|3 z!?kgkITs98SDC3o%HXkZ?^3#3rXcipUQWZlLZ9$Opuc-}miSJb4xBV{8w=sS_Md5b zbK$*l%)v)V7PWBrIGdLXF!>fq`nD5}i@2HrB1Vb92?dVk3QZ3`9=K(Sa}v(KatplG zWTxszemvfogh$}^XK-f6hMP}sCPis=A&9GhmI^VhB4nXTx48cp)*%WQ5l_@&Vq)B4 zf7lTSXdgC{r&W?-US>bEHy)=d_nl%F8c>y{DK$w+`N*)CrOD}@44FEs?{bYQA(Y{8 zrEfgK9p?7n5Ur{{_9a)M#>`AmNzlx`*cYC$6@j_xm3II7Ye_?T$qP$`fL5bt-T=R^ zi{8hVU&+m6Q08yk_g{-Udgq3{C%)R3(mvlyAF;Wlzu(@TKsxo-0hidQtVsy%>O-8j-FXG-~TR&@r+vMysXXagX_@g2b6j= zHC>SyK8%FqpD(zb_51|MVB(fcgC~?-c*Vz49cA%4pH;!*%C4bT1P81 zd#BzYoSw-%11K5~LwgR!jZJc}CZz_)K5s?Sdv*4Qfx+nWIWM&bfTxl*3#(`f1pF@P zaUJttnMT>fe8J|hE-<@r{^S`Z+k-ZI6M}!*Ujt5BGTcmK)xywHCMrB{#nHG~W&`io zgIJ$7bXeMb84p{+pj{YH$}qxm6-_yp3M9;BIt+evelAL@PmPFVrO5+yKYkTt0w!pX z6FlF8uUtM^)3AzsiefX(i`1FbZ?%%CwZh94`E)(sfhY^+UxtE};pIpa2ma}TbGPWrofw=I~{TpNbABD@mP%J)f^?#*kE0?v#J6* zf%FT!-OJ|~WzyoPiZFZB9(v+NOPhy_>T2+<+UdbGzv3OLFFx&)2TrAJ`4v9=Pc1+U zI`$7&qHa-BY(2QI!t3-GO*GhSFO&qgV%;3d>b(?$CQ&!}ie)6BHr%+pZdOvP3Ke&~ z11B^AkA)jj0&zk3TBJkgkqu6D8&Bp*6*)1A%y50_I%p)wBVq9FeYhTzm5Y1~f1X6T zY}U>GU&A= zBgV%sw#6_JQ3T@s|PPcO?Q2IpDc%##?d` z7E?Bw90gpHrhp;rcB zo3FdQt*ILxq~Kvn7|!n-M;NXz9c(aTdqXbknalF9c;0Tnz6r?K*9WW&9Lr|1 zM^D7JS@hqMe=7Qos@9Qr5fyIC~SAw$`kn@HYa!$ zY4oxqgd6U?#^$88uQCp_<3*0RtcJAy^h*GM2@C*{y{&-&!hXN&LS@4VxKke7-v@$* zM*8bOMfRH$zp?)nth2l~pH9)_dXE9b{W1xANn2m}FYU`SxPnRv_?zNpFg$0=x?QO= z`JyzC`wdbuj-vujL~39}%Cpbm-xw;3!OSwan`v(_`f=z4W;OL`*(qMH-@RzK2pM36 zgN+xI*bT#XFIhP~MpBgY`1)f~4nqnQQZzKHa`KfCCa?7i5R$8gxd6e+NiOLvq&q1L zjd}xoYp!=?$?-kxY40f|XKMILyqM=i0?Cw^4_FMFb-uFA62`QbuIy&OhNJuVLAJeP zrJv2CpXq*5u;EA5t%kc&!uOADCPPD#mk!_7#GKkMd7SXA>mcw~piEzNkZ0EoiF;qR zUGb6iYxZyQv_UM%1kMdZqJcJ41h(&bN8g{z8=BT60A6NyE@xVqM-cei1%M^_n?7Zb z)Dw8Cs(->^Cs^11qDFLFj~a=Fua_WP>suvKr!%YGYFBGzeq0kLk8(94c7qXHm((}# zi9;zfS(@?(!aw-SB@APf14a8OPNmE6AN)m|f(eg(FqDzj@*@(wjR{(3+zqU(xPozn zjCb(3P*@G$&7|xfT5^QIU;U+gJAJdi`96ip`k$x;uj8IDvV<&Iwj2d8M#gjmy_D9) z%E@2_+ohtGq7L#Yw!7~n=4@`S-P|RAtKKIq&C40i5Fzk4??czq6yg1Es5UOOMFhv5 z|Ky+Cb%-GF7pd0>!&|c@$Wf#)$h9GG22J~Az!*FVy=(C+YeMGWt6BBNgaY@Vha1i` zxWlL62CgrsXoa2H-b_(pMfA$i$C-cfn* zVQr;frsd|5BuM{>@(H$#-nYAsKppe+m4Togs~J75;~YZ^f{Znf;N&bcPla1$v67Hp zPXMKkkUhl<8r9l+eBcJ34~cMCfC3eU%3&#g^Sak|W&7DtyMOt6{>ZqK|Hb(xTw$&? zg7yD-S0eNl1C$e7@c$eB^89P3goGZZ2OFmciJAqVU?BqcJ5KFHOSHxJBjAy+WPRrD zvN&g(*(7l6-n8&iA}k1yRA>C3fYkYu*{n`GF`~Mzxn%Iz3er&2SqSVG0!tHalhV#I zP}w(J=&AE<1~7lHlwQd#vVYc~oOFc@HBH7DEg$yZFrAlIit2r&lvYkAod|9btF+OK zIhHfwMG9HW*fzjd71a+?AlHZBs{VgPtrThgkDZNbKO9;&ECdE4zD;w(!|F(lY@(PF zQ>;zIwmA495MHyuE~KGG)`fSOW0eyxs7BCNre3G98Zhfa#=!hk`CHJ9)}*Ye!V}ne z`b+$80PE}h@3lAM61W0k-a$KVuG+^O#-CqgOA-I0nZ6i<$OsQgirtoxF0Y>LgX5~_ z(kv`zbQjJP0%=ff=}3_27Gjv8)cNw=f$+@VC|*MfTGLDBG{%wA!iP1{=RfFF`~fWw z(dPZ3wZvrfo8;CLqgaxv3>mE?=w053#W>$KQ((l5_Wm$dq&Jk~8IyKu(`hQ6Eq23Vd&P9>lBAC<}V$$8cQP*xB`eggi-cYnb@E@&N&GS9Oq%29iw{ zNd-e#T}o;*hL^9Z|3V0b%HA}H{MG$p;m}ZYXbMtcS3>buSe^#ONCOP_Xbr;&ldgFc z65Ey4s@n&P!>u-K_Inr299if3sJ)Ui>nVjbjk$GxOq+5&P*l7}3X<0NsoSt$Z~KD# zMl7OUThin>V=yLU^lGrR?KCewYzm?vSGZcj@|RZ|H=K2^g~(rzkdhr?i2MZ`_9h9v zn^5Wcvr1zE4GP4QW;G-nnq`f-i-~<(lbZO8NyeZSnad&>$_#$DEf&vRVDoFg-`hM!`6F=*H;wu;@bg(Mjb3ZfTdJ43{{hGvAllcE^`N%(L zpX2&!FZcbHMWFoYvGTw;@8W-_5ja@e}&aE5KSM1Xs^dQ8IbbB4EgLjZYrHJHL?;#UqEU_S^vDsRY_n1-l z^a0W2>&ZKLlImqCT(b)T}xIpG&}y;zRDNkOsHW z^>X<1vw@3bGf&EK53E2qu}lg*xATkX(iuB0sN0xEf3(+U74;vx2S!w8Ip8sIfTVB! z)B~@6eiVju{oh?bnM`-e4+c?h+|+^h7c_MgRc_}KE_{D)ltTeo(N!x0|89vhzN3Hb z;ovjZq9CZ6RAAp6ZIZg^zgKGhIAP!jR6Wdr9m^8PC89hN;)5Z(Dvxa0YvJET=Z+%NM(Qx*z{E5V}e?m7oKzKzM)qUH|!g z%q?GiUvd86$(pYrvh(4?C&IKNVfY@CR3H2=?f8j542t5KEQwU-b!|NODPD)6iEA4Al`q9@iIIX#5BB8+~ z@x!}pLvf`kfGA5&GU8i|D@d1FQRH9!F?uIb8flXlKrmvro96R6fCMSiR(=7IVn>_09( zO@=>&KY|votSJDcElZFiVhubj0WW^M6O@%|D@C9bXJ#tT%Daa|MiZGa!|+hB^XMro zis2^IxGz})sjMLWPE-|o1B{0I=;LfVlfGrU@f%e_k|&+S-&t3gyB+TS*#!>{pkKkv zk5jyhU*`*gX$e+M8kkWW192Us&{{E?l`lBW0?8HTut8L3gvX)|z|8`1#UaR7l!lc~ zqU6sCBTtE0VDQ*+U*T`y(1y+z(M-B2Hk_X>w2Rwydgs~TQg?({zi(@epvPQz%Esx} zB|9<<029G4qghL_pP6RB<0SCKWX$6xXbqkATWdMbz^t8fs-%l4!OwS7GzNXcnKGcq zdgLixjT%8K;6n~LDF_&lRq%QQ!g4CHMVU3OhhkV1k>s$(^mrKfx$u9~aoQa!sY*gR zIuT8}gU0}lITL*+ZXwmb`|ePL+CvQ48kAaAAq%Z~Fe-s;i$D$F=z^J3Fc8YF9N0@i z*s0p^+Px*penl{1v~g(n>U4zU>^vV9WXFZncz%EgnuC#LQM+cdalXCMyhoAzj2R00 z!i~Sv-0b`>ph62GCycW!@)DF(g79^+|pugxWnr#C|p|Oy3F_DgG z2=L)w5K*1)8Sp;nq_lb@eSH8GV3>!e9tXOqT~ z9y0i`eG$bTn2jwA<8>Xl)F#JK*f(Np;H~ahxB_VHCN=2p-%ZMZf!JHm1AM&!hVz1B&8eiw;mu)qP4!#G{9*V8|n^ zu|*@dA0Y-18ZN#m0U4Y1uc;8;|5aIoc@&(8bX1NM^dP*%M~p;L#E}1@@JB0|td8{E z3f~4i`)G32lU`?N6!)=8FQ>`*h`JgwM@OEOLDld->N}N>1EIbIc987N#HycIJV`hl zv`lQN)BC0WUD0DN&EY^~q|$1Z%YqiTHalmOkBD5p0TfvD2`f)MYq#TUP*3wFxkt)^ z#USVLY;kB9y!xgkjQ)v7A}1m?`pfngv**hcQYdHWnBMxsnZ`I-ze4~3+Q9}1&k--D z9p-;g-yguz|2~s*9{;1h_QuswC!Ty}cNXB|9noxz7>$=72#fAiR1-!%!u}Z6o>dir zhcig9Qs1D3eS%vgQFV{@QUzxZhq5A})UfcJRZ}ZGE9E}}Tv+8ynYMgC}1FK^{f3->`L5pV{wEX9u`QhWS*)eoj z@Q%Ke^%>Bab2sub_&Q)WQ8$3^}C@j4N5O5d@ z5%WjEfxl1XmSdQ$73{CC@jV_Zw!aC59)FTI_y9-B!0q7n(oLZwS!faSGi)b%4DMnP zL2sZj8g6G&x>rb3(4Lp196Yr2Ve~AESa)Hiy|c~wVqO2&vTit;G5EgC07q>(O6uV% zxvzkqUAsg~Lz z7Efb(_79P=X5WCqu(~S^h65%>+no$(QYd7PMARxLFzVmeiW zube>x8FJ~nHz))qO`50wuB*Dj@8R0{DazOsMTqB1%5}=lc&-P!uC7AYnFb$|OWixI z>!fQFOO;Ar5{m>BI#nzd(fbVg?@$6(h>R3$%K;|C0Lkf2P^R45joKvlaPQY58SGE% z?0UX*e|p`k;rwgkWd9R;8fJMpwJ|fBy;91!_FY4u@c)V^HCl=iYO%v}>nMs2NgLj!oJPgCMST9s>ezH^MBI9ieU zOJ0EcS~`Dut=S%!n&i>x9ja_g>3*rUGSOnH%G_-^C)R7V0B`c)z1Z^;-8^6Kqsz(nlzdXUy8Y zziY;f0G&wFgi6CF@&eW!`2^esjJ_Q%%*-?2_Nk(>tw(Ir&n^6R`MghkJ_ZL)3QO>= zgDk2xT|?lpgdV{lBL&%j6y*Jq$Ui_JmBMIbZ^eo!3ooCqmN!Py83J3P5J?!+>j zT*APxK4|SXF2KE9lt$HkD23wF3dKH`0q~g)B99BrB+IcuTw%CQC>i#(_6#f{Ck&C- zYRY8wqy7dzn)1!wcp>vjVPoM$%fk!5Tg`XNW1g@Y4j!!KC*S`>$*VxdB#c`DvVZ1FjPYJ<0r=T0oA1~Z8r1;~}WCa~; zSA`ASW*M*1*lCxtc+N{=Ou6iK!xDFbxD`A6I9hW^7KRY~` z1yjuKSNj(Xw)W0HR8gtGT>Z#!>Hxt2vT~AaF4qeIp?RhV+gFht=A91@2&);*j&vue z2ZZ^I4c-I4CIRJgKO=gQnSB*|h8?uOO0Jmmy^+LddNCWvw=TKHKSxZ;z1Xdmq4^r+ zHqeK*`v6_|Gua=1mS$9o&dwtze01S*A13x0CbQYyU~gP5FPJHL=T8rGhkv5i-j+qd z3&6Z*E<@AMx()5_nDnf16EyI~yZaj>up+GYrArb;nuGWQXld6tNq+>BvN0Y~XL>D+NdqQHw@n3GYD4qBDC=?ux&bQki0GoS^GPr6x7nWVw4sK|@!I9Zv|F=nP* zn=-8aaq^cFOJ+M_B%7AjG&C|LXm~AY`CU?+XFbKxJRl}AvOv{1TFzV{*Bid*v&D9L z%s{8${k5x>@+;Wvh)?F-o}BOyB8U^fb0f!WNgR@GdjHyz8?8)TNX2c8UmRDLE8MYz0_Qi!}f zEX{S1goF^43xG!t(OFl7BkRJ3zhm_pqo+Siwo}knH zq?vM`@<%eXvGooX=JvKZ%{5Lh!f_dy$1{XOPLFpJ`MIprSpJxi|KPh5yNfI6871Si z@-`-y$UpzG{e`gWL^R-Xby^NFEuu_?^>IK)?Cgq&J@tBUb@g4}B{UBT(O^pIll*~A zTB2p~l#9id;fKmCT{M1v%Z{ye0E;xIF&qOdG2?n5UU1VUS`Jd8xi zemP5>|LKZ1m}{hPj?MfKCq5Pfz^|C!{WUmTbzSgs4M3~4FKv_9p|Dkf9(-567c0hH zG=)mnOIx``@9LiHlbYI0NU`WieUWi54N6CmUuNZ#QykV-z2>fX(NAj8MiV%%g^UVK z+KQlsOgygQ!HY9i;Ho7fp=C4^6gOoA$E)cHYMmF=)AUsjmWJ%inZiptM=#im;lHl1 z`V`ldWMmIkgLZQ3!5=x#D+oBQ019Hk;8VR%`qaR-o#JHyW{h=(sg8WpHa5^xe&8`* z=yc$EBTSNN!T{I>?lZIe$|{ZZA&S^~>Yy!)&W{CEjqU`&k1fT0gEv8)wHi+lEM4;Y zQU4@;Nqw{7nOahUG1^cv+Eg1H;<7nNk~pzIZ@*e3W&Xe*85Wa7<(yR1o8(6dj~b+U z`6{jH@K!GhBD}1a<##@gut@IJYp~~#bP@-} zhN5@^*r*)#nVDTJ+sq^!qWj7RCyh0PB!0M*ZDaw~v#cJOX&ALNIlQPvM$zewAC>5* zAA4+c152vNr77;EB?08ohUyBR7vPE6%f-%iT|m(%TS=W&#u$DVJ$VWK|rCHer;eA1G;xiJTlahWO)TcfTI0+Y_}3fCJR zpAgf|u8RW;@cH<}nw?GI5j|r+kGKAhmG-!T`o4%vLL4ysD$d8zzYej|z1bfiGogk1 zAXd5#YB8wqb8dpY`jbpk6-s0|Z=s#AvR(y2m2w$Mti>KvuqS$a7Vx^ZLR=T(K z`D~GFc){!aBHmtY>WJXAKB>F5!+}crS^QV`!B`PpOWdx6sqGsO!rrb&=}hrsPi$D_x26>-j{@dx3+)PCzNB@1}nMVN+^jVML(iB=CDV z!EIZ;VEnpD*$Fp(pcR4>v4_=iCRaean>c=b-fr7QLM3reUZYE^?L_=yl<@62+A`nq z@W3aU*InNKsRbBTUh~VT)>ZxL;LLC2^_i|g(gjpcS9uvHuD{;K`9bcuc+o$0(fgGt z9i!Gp>$Bm+(NYH9_8qOe7*AbYf$kie@-p;I&u z7Pph>ne7h@x^?;1Z{O8_e%2d0C$n74De+{!oGMU`XYC#bkSu#Xum0{M@P6!fxSA>bW%!kVor>4C25qMJtuIoTaHwN`1fHtakU0Yvc zKG37@HuEfKAGCq5!-U+2H=e}OD!mYD&Y10mq|}Z@!vgov*+{tvw52)f%S(oQUS|%k zSaG>+nM^zpacjsaGGF*T$m{MK06VxLVMTWyL-;NrQY`oPKiqMBTD9ZI>KO8&ViA=h zU(Vsk;=)gr&{a;fv|13Oba6*m?z$RHiH>4Q1n3!C*%`#LOZN@ujz4z^m~xyW+Rf^6 zUOLH4X@VM!;l`Z}R2p>SRvj9GK?BegV#^!Ne;!BrCKm_3dY=*L-=A6#GwVq<#GQPoj$hOo~wvT@8C_RbKuo)856frk9q zj5EWn><45x>;k5;cr_#pa5a@#w3E~??P#<<0Zj4Smh zVka~YAImp-UN;u?I4#%Af5*@pcX?qt1n zysm61zqq|~D19`AKI&j(@e(<=&Io{f0Td`KiN_!=^X_jMqGTZb1v9-jz zdUnVA3sTf`ii2=Gr_*W@|E^Q_!R;7@iCd_!zwJy{kf2Eg-so@3-LGD604j|@B^X3{ ze4`vv%_qx6!6bgx{El`@Wsw_+2k(Hv|Z=7X4?=5I^YWU#jA#m=WuB7Cm`b8E!o z>|UYD88fj&WbuoOI|Ds#^ko5SnFIW~+>R@FO7*>4Q_JSprUCG8&`pGMTkuAtG`GHi zc04|G?3V)6^67dLz<>cp;pX5y;3dTnoh0Wr>4A8cYRC@%yIc_*KkEh4= zT*u-=oC7PgCy))zV>KJoeO(mAO%!j8aw_J^IN_~ebamKmRkgmREVc#knxh+No^@O| zW1u_Nm`<+g(Zf7?C|Q#@ zM`7!HCs9y@=e)oD0_2c42mrsjCsCkEHqFNvKk zFVSX?u75GMH2f$fxH6+?8cpVE<@_WHv~B^_wX^&d_zsR$JuXmgrm);XQ9QyOLld!U z1i6enRCk0C;U_e`A@EY`I=|K~>0Pg%?z!}%pF{HIFU1RUrA0vvjoNU*tkwI#(7*zV zZ6+Dok&#;l-Vj%Pjtyx@!N*XILW~=H|2*{fR?UeZd}kND>lY!{_gt(mpYL@x-Ega2 zVPOfa5Cu>Lj?y2(6*$?hngC3pIY3^w${QFt8ZR@Ez3KK}=&0fYhI@|CXp(}EAmzzmbCX+llm7yd&b^e@w@#l!~INz zr{pa0T?+0eQ>fE~`n=Ouf+=(HuL0kjwCbP?_&t^Agb?5Gc$gEH*{43K_N&d1==E{x zUlSd?3Ynf|DK_B-c|rK&Y|SUguq0x=R#AnOg^E=c!}NaUT8E@OKmFC!;qv^m!QOce zI*;=osDDIZw{B7K$Pvr4AQ}o%d-2=wFNR{!6E_9^Mj+x<#tx8@l3;E49O{{^p=z(e z_oI&c`CU6ll*O!A7<6e8`Q9=X5lwV&T9e5AZ>hndpAfn2^|4vghsIZ)mYF#xWPDFk zocsgbKe-Kr{tN?9c*=QCCS&&91&Ttd0Vt@ZccHkn(-q#d^~dcCP`%+){&2j52ZR^# z?#;BOd~3%sLOT3Ex&MVjdj1I+u^|U&NTV{Am81*x1`&3K$9P@G6-(e{H+Yg5q5PIG z;3{z|BFdwAp=2`C44el%cPe5?wSeof(v(3q6ljnDvgDOR;C9nrxb5{9ZWn6Ed_e}j zY9ztJH)l9=w0gzBIrf(m48B1l&h391GbR5ho__x(1;CYYq*#W)ZODVY`V<6ivkjcE zK;X6(1a4n`)G@LjjcQ58C=^gH4|GRC4E{Ft=cs+Hm-ryN$2vCnn;&l81MhGCGx{N$t?=(&%4@2}#z=f%fyfdGWF=ttK&^&flYaMz(L_jJQoS|99hZuNOz4h5hOGHC<0 z?Q?+-S{wuHX4`2S5uGgqiWLG(%lNCac#HLmKiuznmPMy_)-zpGt`B$1wI+J=H+l;i z^0-({{hm7RZHlQy9f#*KJik@wC-;4Z6_7k@8xU= z=jMXm*6o!ZQ)Y-6g?uVdo$z#fHUh2)=xoG7{bD3jYa^8>!>9nBSKMQQg9DCE?Zha@+7PZwnY({@W<|b223`-OGHSNjwR2}dv?2m zsPDpdOOBAx9Ka(&sa>WSfcqKh;2U&m@)^^9Syd!nf~aMw{SJDbj*LyrV@MnTQkEgY zegmQ2SFYEXgQyVdU4`ug3@u|J?naW8EU22F|DM0ULXivkq9nUaToKE`&oV%$H{ZY1 z`|_RCAmA_c#x5my`R#yvqcsMh-l4@I#H4EM6@RI>)*^&@7k$d?ThV4(4nD*c4^m7z z({Ph|3%oZC1HV`hJm9Ks+=m7ZAuKSkr^BzdxYDzRphWRB3VR#(T(HQ*Ba{$ctcvhB z^-3-+;fXp6sFb9=m;b>*>g~sRVoK8QtRE**T#BPtLGODEH%MX@FrUY)%P74Aif=es zRkztE^kOywMcj6uqpkM?Zoa`G=&CgRsxS0O2Rr(|5S30Djoz&uaCl9$#(L1pMfCN= z5`hs?jpypV92=b@+eN5~F+Ie#4TQQN%s4IksZ2k{(ztvt(yfnrYp5O`67uD5o@3`>ANANs0Vo^PsJ>ZcPPo}sej z918p%ruEJM?m*&DZjyZ|w*SpfQ>U5!p$Bu$^glFwuGJ6O&%*%hRb@{$xk+S>BBfH50{+aEo*7ezDL(!~Klzi| zzJMLdsJ#=g5q;MkiW0ui9K~JK7(&A-{-xoEbR_UNS&FozVUc0D9z;xQ?%9mXJbIkx zBe)}UAd$Gsp`Ri*AMdJ`EhgHa@m~>{dJ=ZxXgYswrOrWUxTOq{z&ByJ^YQtv_jOVa zi`j1F62(7QCrxi*4dc;=g08$Ak5r1kRHHArgq+but#sNWdK0~K6fjDQG^Iu_#T=-~ zOkVNiMf5D2+S+LWkZby^JQl8b;v}{Szm5;oKwqu4>qa^M zOEuZ|-aprDn8MYm?B2bA@^H5~K!=v=Ieqk;UFjIK7eJ<)paVU0ets@@!6cKL7Dvyx z!`I_p!cWI%yt`cz`QD9(wa#8FPUc>#gK zQ@6u8VYEy#va^FEf_=u&`+IIBj6<2LH#crPDvcjsyeCaRMk|Q3$n&t5yzD2C^t!V4 zD-DQjpmGOTa&J7hedYx!O58cy+&za-xs7DZH!^7kDO24R`n=I45X9skOXZSh_1Gnk zQX@=E93#1n%QouFbmy%6qSo%-wnDfj7|eQOr0bczk@n4eHZPm-tPsZ@1Wxw^e-i6uxL`AQMpvBm%|+vvHBumEqQ6I1bE|xc&7C)*RYoQAM&71t#RQU z$)BionvlwR@wrc#=UU}js*3{bF_B%LQc|C{014Uhk~8anCOjJ$Zz=p{x8<3{*J|63-q6l<0DOMt7m#fkR%}>`IM%1ao~R@9TY%d=R(G zduKf!S`F|h(`55VbcJRe46UZS7fiOlE*leC>!OcVR~wW~bXVi1Sm%+rr4B>TL+eGT zmHh4?b;zxt-02=ye&#Isl&Q`9D*PO`v<4klo+ub9x}RWv(QUw8Zf1|PnpP^_-9I|x z6mWUS3goSd@}Dz`5o&ASlX(~H_WOF>Dz5w<^^xC)t{Q^ROSX=NMM?P(eC~n;!RI(C{7E_g;`0`-vAX<~9?^GOMyc;!K4GYK;P3d_ z%J+lkb5tpZ+cXVVyf~T#P8gfZo>6ZHN%STjn8vEVhF?v9+g_=?);P+DZFcn@8EbL0 z#`Eqine@H5hx}uHjC8T_x>m})oo7?PFOn~l+1(*sO>^KeoKg68@p`gO{zY`^7x47pi+VoECxBbehK)%rzcsj;`5raUH-x6ik}9HeaYGO zLzXuV&VM$+rXV}!?WZ6tY&;2-3LERRaR}Wj0=iC;Pgc3Si8n|V5tiqNdw`VXxPxRk z%z{}Kwz!jz8m^Vm3j4+BRES9MvuQ6O=gI)TICy{T0(m-V5wq2~g(EFvL*y$ACWU+3 zDF(D@l&BoYAZ?k<$VxZmnaVt~eaV{Uq)g<~j5cRQ&;!6D(^sT4d^i-ihQfo0dP+0f ziGl}bh|Cj~Tx7}gnFCP5q;afUcjEv$C8SS(6FeI1s`b$kol~RkgXZNobWg*&4+L`F z(jyNmXPuowhO~wbP8S=~0%6{S>tG8Gyjns-J01cY!P{|Lu-8&|#}C9bIcgAko(hU&*2j3XI(zJG zx<|(Gt3ZnilK%`axyx@oLG2Rsq<`;zYQ2_CcJ+L*Dm5Z~wKS_8uyDooO(!t_j)*@y z)j%e``RX9oUJ}_A68hwQWcQx7?zgZ+=I;$V6!zmXZMHS){hD@Y26&p1<>DWWiAI22MO)wp)O=;5sr>2hUmP5c<_${>aegeg zhu=FGJv>VP;AV0(-epYLpoNoF?A`X%WQ-5yY2f z0XV_pM!3Xp@IR7L&z zsKxYP?00};30(tA2K_xFb8Eaf}Ad(E->H0sJqz&QAtv8j~hAAv5qGZ+=O^w zlM5|;1R`+t$=iL=XBd`|unRv-upLB_kf0d8bo-GGz;1E9`D0M3^(?e@qTr~uP-J`64xa?%yd}(rzs3C zCB;6glWD#{-KBiyaOP1;;KVJI-n=!OwZ_O#e$}eY!*Lx1O1ixo9}NOf z!{BPB{7FR5hGQR^SbByk*{yV$2OVwId|jS8n5kCW&HE#Mpfl}|Uuit15+tK*3urlu zIT3uSR)u|stNM($UoMofrzk>McaQh7)QF|cv{-afZj4LHo^=~ReQ{tjH(3Vf)YG1| zy|t=YsO`~3++{~{ja{+5yOLV6G+A+7>z56G_P$Kxf)e*4F!R*o44a)Y<9#uVYln;C zimvVMKKkV27ow80D%&|hrwYRgG&Zd&$!rL2AEt^P`-9ux3~4GsaQh+zx1(HcuQhpT z)vAT@SiaHp9i-3NCBVFbeIEDOS_-70xI1fgBujJ7oE8+3y>HT{5sL9qZyrFaS;*-7 z0l$8(qA_5zyKH3rSod*)Ql#83yS8(wztxUooQLF_D!gC4;{e<{YV<3%b)TE7o2vXd z{B#ns`KlZ`=`Pq`JO@0UrB&8$wMk>d+}4RYlLl9!2n*a0+zyL=)LbxK<Mu@w8oH5N=JwOew=alt= zg^^)Z>s%9hr~#c(f7v?(;Dnps66KMvkaw4&bg#%^58$M#SMa&<2)oh5Wfg>*8kYz9 zD0WPR3TUF?-zj{g?RkhBTr#{IVqky4g##-HJ;RGq8`^2Hw$B4TfkMi4JQGhMt%wJCE8P0){;$I10(xyl+kHlkR)aPrc|Ba{4U> zUx(bci=DZ(U&hrMIUn2#e5XoU=S1j!CXKv_>5Go4h@%NIhV#ZT107-K>i`syU2lj& zYZI&%`MHRAM1ZPMOeiOKDNKy^JY*e8n%rJN(doHkVB4vxDo!m+L>E@}j1^5c+fU?m zpH-JMq?9pXjx{FDuzc|bbcrTUO871^zbLrL*DEAVtMth_pharc6Wd8Y4hdH~ z=<{XU2dy9ny`yA!?)vhP3Z!E@G^vbW`N6h#mJRCAtY*sAlVnVz ze2-->q$KX&h{4e4{x=j7)MS*d>JvL)FVqNJq~*=U|zaYK_9qJM)*F~;WqGWe&P4KUb*<3pOeICYLKxF0qJ^&zJTK?@S}o*x+6 z>utWiS?_#HWIc5}O(%JW!-#Z=!;`MMt=kF6N#xa8M-h8Cpx8cipVBBN2k_37QR z5TbMp6O2hjODK?&VX<9)y!#A}<}pLK8A|R~&$yX|*aH~|heCqA4Sm75s679p`8M3W zyD@$GFT_z#5Fq%ylC2W<;u?x4i^6U81OPp?PllPTD^M69-` zy;tLK3-4c5ko!*537=ew(sCTN%CY&oqaGZQ*<9#pDD5Q5 zgoHOj2w~&-yHh1IW+|Zf zH=jijT9gvIR`u%w>p*kRPdEtr5lAx4m`c4hKEaWoIfG4C3?9|Qt~)Hpp2B-;tsgOP zf~{JPNKq=9TPI*(pT*~ShPbeNT4dKfZ&2OcR=YV6C4yp~w(8Z06HL#YU09yUg!(~V z;`t7*rflmf0WQ7Y?7FkyH)A9(z{vxCB2u0*7f)LUC5Wk*kQ-YC4s}0>=GT7JG7lg4 zQK%Q9-+Reb4Tk`xcqO@8_l)BC&;W!^^S#$3rCKhtK-018iGr6u`W?_2B3TJ{hK3!` z8}pBT*JRd%Uf;lMOJFB7Bs=!7j+fC(oA2+vXlqUaHPCc^pjkbnCK1|@;Fu@SNx*W9 zjcN{~(Y<1Nh!6KTf-?~33K@JdNPBh68a$Op3v zpd}+(6JiFN0jw@35C)jCM$Sm-GJ@c;0!j$=mbMd8FtXyf+wLo^UV5!wF9pOC*fw)Z zfTV0fr%_i(yBb~Z@p}yEeyyvWACN>(K#Snvov~?m=^s%n=8sX|FX%uNA$}m5?JZKy z;ybijt5XME_-~7Nj>MFh#b`Z;cJb`xHm;RPW+#lG`cU9ynoh!hH^hqMft+cxH4P`Y zjcmxjRWPrg4eD!JGr#3F172d31E-GdX9?7{Jcm+}0sFl|d}p&|aDk6VYqCU>cDXI) zwZ1|^D%Dm^e^j7I8)WxUu|Jayjz|Udh2H7>c{R-&8wpDreuEhc&Aw!rU2}^uWC`z^ zE_GNCmSbDhFXPE1Js~B3-8w-O5wL>wiu--xnEH`rkdR+IQEQDy(1wOc`BoAONhqXo zjg~2~S7afG_2M;xksi1#)Bt+yftN?EHKSV|2S2q3(* zxhkd3IHWa@q>M-7xYY+^USs>!Y&`(vWG-zg2KEB-W=rI8!{Izf6*vfrpB5s_dxkw! zT*(=X*+JlQl9M_QFs(YND>(-UWD5aCq#Ni#bUrd3BS2Xwr!&PTXe|h|yN61MDF`iv#Rn3sZHXb+O?ACP zGLjFu=W^vHc0>uYWjsLl>8aQbD_soaX066-@-uW@#V}#GIlrs)<#rS*u;T=USh9YG z-vS$rwF>eBG%!=CKVHpBVzL#qss64o<{9dn$KPh_pT#6safLKs6CFJ?u#^yjYx)gl z*2{4KHPvvUgG^c9LsOisv*@O&>}kTRV-^)|r3J(}mUdT(JwofCRTFksJq}u`l(W7} zw!6u>azW=Yy{XaoOZUd$mdj>;)U~RT)Cg&>N@qHBk>kc!EaGs)wHy6uz%Ipp#p9nk zIi%T2DL5cJXM#0fg%88GuJN>f(OlMdDL@gddu;XoI(ZX;`*|J+9slQHaSAziZ18v8 ztU+XvL)vII*jrwB$w<_yKMmOGq}ohx>HkoD4lf-U>IiV7YWqM@<(FD^p#_coT@9qa zmNBa;K18S;ng;T?vfEHvA{=H5P6bAa^vV7~Xc&=>HM?oM=zTw-AC%O!+(Y)rkQQHW!krba?#Imj5PkU= zi9K9r9!&Q)FP#79sL9f(%GMr;sATLJ?9qO zDS4da|5~lHY1>UUE%;3y_JW5~Yy2!Zv}$d(jtLs9c4fn-tQ`PAC$(<@6MjM?l2iQX zvdK|!Q-)WLVt~on98m|nK0_B`K{~MIu?gTQ@Z&IDdeSrC*exiy2N#f#F|lA0>-Ra# zDKM?yZbN=**(ajQAc_13DfP{&0^MLxC=n(RG9m%8pEBYS0&u#M4#A?mw$>08zS|a+ zHA>u(@HmHounk23UH5(k%FV{4%6Oh@v_MzCtzLrtBiAhQ7P6G#d&vBEwekk#w~xF4TXU?LypJak)FF@3 zETL8wKG+DbIyRR+^F?4npw*|x!~6!^szmQOMiLF8XE>p_sG-rvEzW3EnVp*wI!#ZY zF$n^^PaLa#>o2BuU=50gq}%bkOpUka^;|VDB7`|~?mqiy;~d9DWS|4EO_F92H|K~y z)z+H*^o$mzv)iXaHbCR(gir0JIeUd0L_$bSPdT+kCV1oXcbwKU!>^~LFXic92AIo* zAmg-5lB6>z)J<{lkSE}q73G8!6cC&uNn_B57kQoqEqF4)?;4nf-dn;wGs)AEz@$Qf zT;za{$oS9Tru^;Tu#vB+|D38TQI#8V0o_v%Blnt^yG-^XM3AD45B`dN)$a#p65f1H z@sq{GVepwy)$s0Gv2QKv9Apx!+ps9#qp#HKkiIZMzSuB~*8gLqGok#4QZ#`Ki?=L1 zcD7Fb@?nOOq@PQ}QAqGm1xsry_4vdm3V~^o^CCUNK4HDXhO5PV1qTSi+Asu!a0aXD zLz^~a4uZIJuQVw+h9MU2VgehM0@r&pT5iwrH_wf%j5Z}_3R$wd^$!1Dj{A04!m?fT zSBsauCmuSpy>~$G#-RS$WZb^(%*R{ zR|~Uo$jUM^ezRW)AVz*?TmA!s|NoHiwEt7Wr~FR|Pcyd%t5cyt<8}7)>dRFTM4u1* za^DA8r5_|4pHgupuIJl(_4e9Idj-_2T;%1we;u-Y;6BxdtheB zMdg1kl8_Q?&41c#{~S*Ug=a{tVTjHZ@bv9p`KQO4QTyv)=UET>FZbbhD~I5<-t?*< zvdoC%FX#?dcaQ!$RwD;lBxi^ESEd1_s*ic|-EWqkz#AeU$3IG+lHow_$eorS@`3D8t?i> zky(-vJ*sWwuZ(Z}Vp`C#Y4>E=6GFRM{I5M1v@nxk8uPz`e{o@2JmuhX`>{FsHtemk zm>&P$StFqG4)QQgEx`v|UVOgd14@!i$V-DrK)7Y5;nVl`JA%^Y*>oPCLfjC_Ue)06 zd^iss8blBO%!>N=o8oIj=)F|~ZF2hdkBc`QqWh1FC;r#P&(mpP?$WxQ(MCgi^}1YC zjM5$6X}&vv4Wq!-*VVY_&LGUSk7{{~<=fP+<}`A|Gge?P)95(2w{ z@}rlT!9;KSw(E<6C1^PnGi_J6Y)*~7ikQ)7c4<3ZPweuresIU-7$41!<>D@-tzA(8 z5$RzH*C-}1OI7lUy_{W-U*%lE`cqW)m-5;#=DMKEoy9Ury7`>+-S6J;h?1lMaS)sz zXsBR9Z}WR6;y0j`4wY3(^j=7LpJLz!7?ItJOnZy7P)T{gO6kT%Tk%tZJy5ntwCLY+ z@p`QI{;~};TY-YOIfR8!Hcgnr@5J8X_wE3){9f2xP?7$QJCBp^QkcQ7dGS@ytgk~n zNg8>^KfEYdv#mw?Tm}QQ0ylw-4{5>1nLN@Zb83Hqv|w*ALPF<|7Hp4GM;vY!D!u2{ zq79=k76)_$tI(E?GA%#ly`m^LpGi8ZZ%eT8SdW=(nE;Az-2zLMv zc@O>0|jR~Ytn@mLskK4!CRe|VGAAq*R1ckzrK%n#!)wq}Y#xp1% zRG^pL;FK7YI~XlV9nbrH+RxEk?!#tPeF^9lpb79P?i_-n_~ z`Swot9$9=UA*6pZhaiWgI$O{I{+S@`bp(>*)C)i$DVQ}2!?;sKP)VJ%x1U+!ZH^3L z`B3M^w+n+5euN0`g&jKqfF?t61~cL-YoydeT)b0RMxeZ!H=y8b3F6|L6D(}3?jWPp zsLp@u0--&bH@eD-ULE;Nl+V9+0@8zZ7N!S!?Nl^81V6L+J`7uf`Y_`OCx^1B>@3NK*@^MN5flaA*=ujTG)gIRW z=wMp^LdOD6K}8y5@_&P6bB&Xk`|8op+I7Dvm$fyTt`&Nw8zYL`6)KHD4`9G5&rG>F zily9tLU!bPVv!A@Ub!s81Y&Q7z62t`DuDi9K{o1^{|4EVqG+cBq>%6tAnQ1v>Y&Rv z1c|B_22g}c@TjdB#kg-5iCua0>gZq?-|OJY%@*%yYpUz@pEd(J{jxmLDA#X*A^7u< zUv`zm5cGT8uzS%>v+{pkJddORgU}V-M%n@YXOyCOh>M3hqC*XO5ghx+#g~7+a)Y>d zEN5bZHI7Yww$c0|h>HhA;T+3%aHyO=a;ROfSM*qY076_m7o-9^4~x1W>8;(Ltd)&0 z8KeTcD`Z=wf=K?yif%Hq9$k#YM(Z{AlCAjDTRv#3n^7mFc_%Vo^{y%%nH>-Cuv(B0HjqwVLPi@w~b$1Z3;T^d&O zF}Ml(HWmrvJ;Bd!nTq49^1&F}VuP5wb9CM%7;$WlsJMMcp?rm)>gOAN?&L#zoe;RETY z_i#tU@db@50R9a&w2=A?%eQ2cl0^-ZiOs|--ho8krtcX0g)gbsW` zqeePsbBR~8((?!j=D%8-AJI61h1I!EZOVcYP_wz+-Io@R1yG6rQ^IzU<>4+y5%iue zkl}DgRY4t^e7Q1w-^#?F3hTSH$jMk)!LDvMrFZ)y1Up=fYsE6f_21fW02es${x5!u z5aH}PGI;X|Ws$%>lJy&=Tiqj*_()`uMqUyCj9t66O=TVVr!nJ!@er$yqT{4sBJ*_>pxr6f!6aY+^YPC?Gj$kJ zY~LCe0G;9@7_8ZYs;oc1MsSz5eIO-sV{fh>tWDgU(L{U9pEfpU+WaklF^x?C^=Hfe zQ0JsHd?SFDU~kIc$CcW^~F&Dj7apDu7a0$KRYUPS3YZ3<>6dx)=v$} zTb&l5TeRny*qn5eo;P|8a_oTYjzm+tmXjByZ3kzg$LDb`)je1@-2k8ey{S5ky}31{ z`b{6eV^X&}Q(S_FhfdU{D&gWhQ=r1!xGvb6TIWgh+92=9_<{`2V^t zwavx6mhO0$!w0#;7*3Wq#n)!$H?Q*_oaYiK8XzBpNb!0AWD~m{BE?0ux{MKcf~X05 z;ZKM9x;+5$!f;2$g(KY3>q2Sa5Gh`BRalPmM~ZL#k>Z*Gx1Wk;ltF?nC@r~MWsD}z z+UF*^ps5F7VeKy(wmiOifTr!%H~qHD&jWE7nzg$QXw|}-w~XRv_5d8+tp^6su}G3{ z`qUjM$xAtc-eeG9NlK&WBedhTY9r-6rj7t?-Wwi%H!ruX_M8M?9c!BoS;&nuP5m@_ z4XfE}+lMtI5WrfDW@r}#{Mw^Np5Gp?Z6bU0ZM(;X=&5PQY{ftGi#Z{q&w#4NCCNPW zbNW`&c2AP;62*tyzG=-lhw8T#r^!FC^GgAZZtT2j+uF)?y!aM8ND4j*KMfFddlT>d z6npsKhw}mCrjW5|pE0R^ozPVXl5XQxoibdYU>>*P?*3o)rNO!FpNRmzYbSq6+0=HC&%O9G+yNO%ccdUqB{|cYH&|T$<+KxKR;T`g zNm~5`>UtL?XoDvZS&uFiMkyB>t3CR0cL!;@Pz)sOk_I_`cHd-xT_7stE0~f z3!@V7)4dm_ZGZl+&Fm7JUTDz(HTrJ6c9whXfTERgLSNh%=P$E=g!L>$SZ_dtbu~m- zgZ~KY*Ah>NuugrX_qv{qKi7|tc#qfkq14B83&5~trb+JkM_6P0M_4nlpzDvYh;i_X z9nsF4*JijYaO^=xA<^0KYt6dbJ^U5cs`Ruao+_S0Uw+%4EeZL$`-*{sMVXc7SaC>= zYWaK^BPTV{H}AFP+FW6hZLObk6aSmoJc0T%dS6gw+VG3M;I}` z=sTb2`P}OE1e7tP1_Cu^s`*};1-ZOVe6a_9$zrb6*ZFoSil8j!4}&CQzy;QxPrwe% z@?WS6c3iP%@lnqc*Xew>Z>q&!9+$kvq9Cy;C4S3z$&r_Zd~ERP8B_EtqG%c6y26>T z#Bs~rd3(N2XjXvVwac67BiVTck+!{wgqRq?sRI+!nw`$)}!L8l`Id*R8%bIh$!+cOUE>Nr&@hiX5`C1OC_t|(g45@WKvt+;+j(+yBx!>XOu1j=0C+Sx zHcBKodj%{hXz4HV>S9?Ta>=yk69c3%eX_`;dLhb8#{++$>6bAwR>g_$^+l3(Mj61`mGZ#gM z$MjZI;}1l*V-8~y8eomBx`33Kf(CI4|I8Z!6jPE8kNNK#WvC~%rD!>hs|cba5<>eFt+bg>d++JBl?mHPo%bS>X~BwA7>}Jc zI$${t5y<8vbbs;?`X!i1XjMipn8&(DQ52P|n`$9wu0T&b>`5B!D-T|&BMmrbRsPl8 zt#YO(D>PUnEa`hhLQiYZBi3VhUK|<>Dj}Q}yN|;gDe6NljaVn|U-SN=y=Nq6Ar-+r zJC$Sr`)3n!R@RxKo8;Kl&fFWt7WS^itNR!KGI3BmDnGH`r=ePrk%HWj%-IW)OWxyw z@Dh-Z@pCFXRTRh8_hI7PuC!@Gf?;^JcdDXdap!T@U!Q1?SObO(jT_XTPZF8m?aSU5 z;sppodl(kE&fEX_NjcKy07QzD+tujjyxZupWgF&$?Dj0>X>_$6VLJ{>W@iZv0k(~ZcyACw8Zu47FK2g$Jo!@N!J`)5OONrdXfzK`@y7n<% zcAvD;4nBuL;nh|`1!z-+-+ZcTX$6_^N|%9v=Vajty3nLRXU&4GX^C2W%uZ9EKx8fF z3c@_3N*g59M zI`2?+U%{L_rfV=x)}0o&Fk)jFDwUvEPd;w-CCn)>Q4mi!4O#mUIW;mn;O98!5|;O9 z;v1X^ho#e7ddxV@Z8IIguuxHnRA->HGG32)Kkx#f*0hJ0KE4CUv>AUzX1`^4E7&sl5%Aju!xt}#DWkoB)UHsyd zJDKKth)4fqkHp_G!J`BDF8KcTrY5 zmM~R^4z84)MXPEt^is9du%#IAC>xsNhQF`7|#r75u-c{TDu zo9uEwz< z;td-t=JNHPGqC`A9t7v#m1y8I1!s;-Y_70|pGHx%Mq%(jx$Aiyek!~7yHF_t_{~@Q zzIE?}+AWosP>;R$MGXYu1XBGc3vhZ2`+@syI$Xw6OWlAnNATBe{YPq!VC$hl}!^%ayAQhKLIpv=$S2FJd65hN!jG$+~((eVxL?L;uC4xZL>GCb-rI6a*!9WmdkX zq1P!vXegVwN7_q@VLF-#>o7Ysb-CVVOfq&!4H`v_Go**?+ta=x5l#1}MF1skMH)CI z)-U=mm4Rta)#7tZi1)twhczaPkBi@S-$tRvL?jw+)$;(`CGl3^#niXlkoY&wj-@1y691B`R>d45EKQs)J2M{`^u{mtkRDvJLA6bD`vIe1R9K0 z8D!1dfh#V&ZigS%)MB#^2*h70CyyzF?vjgC=29oQF_(=v$gz9CeP$}UZKUWcC=%b* zh92^Ob0*$knD=As(9=9xoe|AtcrJ)PCl9hQOae7$ZzEaEoPFFf#wth< zEJd(8mb6n`q1Te`*!+V-+BcYfTemiRzr|v_i{daYI6#q}PFlRdFWEXQ?f-4vAN_j~ zK<)f_03(2_ZgOpfw9Gg0y<&n|w`ZXH4_TA3^$;F(cgmKjfaVwX-}~@25xzb8C04dO zM7~598lG$m-(A4JJC7JH-vu?>nXIynk+WG7g|vXt z%>i!4G?gyjff!efj8{B0vDt!vOX{&wpBfnIJp9FDRsCGkKs$rY{S9doUE<8b^Jv_C zHu!nP3ya)clnzL;g%D;R-u$KYkXQPerTQ1YOnp%2SfVCvI%^j3^U!YN9bU=V%&bYW zz(_jEDiwKoV*l)N`7SCDyXO2zXv+)+!{~(@17i<{#b70s4GNY~7+QuhM<97uCbU#j zNoLWNz7HNq5E{N=o`7DqTLb&PVdF{AMOs>%AR0N`2EZ8_dyQ1T+sZWdze2&2;&Hw9sc2X|{Fp>=)}5 zv?gnB(Fck80Hxe$*y+iKZY|R!BF2vH$ytZ&fAqWyn(ZXi?8VkLyxH1e3*NjJMQ*d6 zP!;b*tNQ7{?cG<>-CrVASBW4r{=kjO|jTZDRnX3U)YMCXHS#Q>K;^W9{v zZvs~9y7>M6&roCwN;(~8%e&0tCUlb&A^9O3Cq`^97VEvkHy_!4EA@H|u?(ffZ60Rg ziDQ|^$nno~c9gB{VX1aCz%WLhpYu5r7)!YG?(Rjl-`k9F?!V3?j5jx)KNdw0qxxnK zGsI(cuJUy3Y#qBz$~j`uqF@N+=HC6@|B~CL)-+(mgZC0UHoxEKK0z!K^ax)pL|SZN zrz#UTlQ|yr14=I07YViTN$WC#QRhbcn;=7|qwl<0hW$`%Kl(#8r~U7PC!T?Md5rC} zmW=n`f{s`b621&?C-%$CX0acx*UG}dV_}8RI|O{}TUXw)WB(8tIt7=G4fMUjg{~N+ zAN{@Cy7Mt-Kp=q1DAWpGm2N;&NA-xIe*o@={zdJDiJs|A7EFUcBArp+JZv~?P($L`6t>sWH%lt5Xbtj{{F)%Z*&ch@BBJgr+5TdREanG%;#Yjn#L z>jO_^LNC^I;obyGwwWyU^u-AO$jt)13bC+kkyWA9$~Hq&|Dfo!>o;}S7}23wP2^}p z(Muy2?j_`mf z1F`zc)?KwA-&=c6o6~j$&Dty1o;9KTZ_?bdZt) z{IG_fW-rLHHD!}Ht%g1og?0A<0;I)+DOaI`qFX7+pB^iAKGUn+UI>aHD_w=q>p~mh zxTLWUX~4&P~=Jfz5% zEPbq0%NGC}%klL9YJ)r)@{?U7n3q-2d0XB(z)+D05Lul*fHuQZq#OP7T@5uKEtq3OXET;qP! z?g2NPx75wa+QIc+hZs@<-(Ya!IeK*oXiwxw&lJ0WSXwjiZg(KM7!%0_E7G-mttJ+D zWW)#>L}Kh>^KWJS8}N9c@#J%FQ3`sYqq2juV_oVG+U9zUJNTNDBrf4T<5xsvnv{wVz3KPy#!-O#YF_*VLb z6pJ&vijPV+D5A0tOeJA87fyJ;w;Ale#dU(B7r@=p%hO<|OsSoZPA>3c%)AIvv$|{{ zM3jU>b-`TO^OQHyf@G0QsUDZ13)#RtN)K)F04LtIpQtpkLd)($oZEOX`{>P{tzsu3*L}HJxWJ&sllueN|EtM7NH;JL&F7f zS3Fu*8iVrEKbp`~oJD+ionjMc`ten)a$uA!s2sx~zg?ccoQwdbmLC%?t@t^TmrO`T zzLFsFH`#KTUY|?`Flr2D&e@vS96mm0G#)Xx_$1$-Up+OL@#UWaESy#~HOV?F$CTPY zhRJvoD`w*k{l_Pmq=@Ea;S9!T`;0^7-bvZC29epYTv+b^1EEHqU}> zoyJGG^PJtEK5s|J4jR!0GYu7dIA5YHd`9d~cr@F<=tm@p2p%s*lZH}rD%hSvsk2NG z@0E7tK(VL=bznsNJSupM0-8OVWlG!*6^~p?UI~{Y`Ys zjM%EW>ALHaNXZHVxx3`RnV{5mCad&7WxVsbFB}j00Xxt?b z+-V>*1OfyJ)>v?d;6WM*1osf!A-Fr--r4Ut_l)n3JI4L>{jaX7eyY}5HRm(un!Ak%!?#mBSt8PSg0h=1th&0c-=#^O?Fj|#O;9)x)P#xt#?B~1Q}p{)KY{)_7HsluhB z7UaGvrj|AzLqf`AbYw0n=Uyk)7qF5wi4DPybTsLbkj- zRbq(u9!BGsN7Ys8pdLaCpxhPqlEw+-6SoTXXjAcKJ-p;)pok4Dz^dA3*fbjaoHhs+o8+-*QymtMyM(PK@D%%?7y zI}*^z1xs3`&QL-ys^1}F|K6O(yGEIHxX8M6z~%rO25A`lxCW1rnAUo;o`Y#mo+WRj zfxXOVEE8t?%H@Fg%NH3<-bjsvh`V%H)DcZyCBup02Ix5zOQn;s4?zrt9O?JTU2uU+ zoh2{|djl8kJ(#S~0*k$!6bT8lqL3yeQImfnZzx_&cnJzx$VUm+1Lb()wX3t>Tb>TQ zIxsxZmqF3MsYfXs4XzX=dC3XLMS9@x?0_3V%9xp;X^HgU#NYYG%d%oBoPxG1MHm4l zS8ayK?`WIy2Gr7>sOLv?$!xYx0P72YO=7pd$g;_K8PL2eYZ#hvqCs%O!3<88t^stx7phm{RWfz1rcs22{?Mm^Zu{j}YFzN3-w0x(o zb=N>@(sMB_FFjA6cqT)9k&a9+k=vF5fAmU50!Dv6H~5jKKwbOYfv+J43OCnfd!@#H z_#?5z=$Vf!F|$&boH}a+Hb3T@)XG%x&e3g_&toIVftJtankgGhC)*_tAvEF!LwRDaeQmbYRKpYeG zqTALuOVPsP@AiIiuBMhNiR8l9aokNlxfwPPt$L*MjSu}D!gN*NB2B`7cZf9$o)jk^ z8w2sgo~gVaA~q6gZ$1cNN57^?mpch-i59biuYW6*wXBHz)X$`Usi~Q(VuGA0 zeWgXs>=+!Y2q4V)`rY}wxk3GpZOWoIr(KPUoKB(jzokzOg*+8@3(%Zck6m;KOP_6onFLLn40Sf_o`%~+ z5{;rbiVO`FeO($(xs8F*@6973~p;{e0+FHG^O&T>@aDjw*TrERoPfJ#))cDS$JuA8aL|Bp!pCu{8Haw&F|r#tM11B z+2LG&w;UsdKde;m!9KOrwS;S=Y`>aJX1lGGlwy*!!s|QE6B$6r$*)9TW3}MZABB&y znbwP(_fDsO4+z$#I$iz&t>p%7u4^`CTJ0%Au>Ga>nlf^pSZ*1}WMUD$RCjtLA4zo-#rdR0e6zD^{Yfu_r?QM^JECA! zH>H2JXHztYe{${UW<4toOxc_LpbBr}Tx>`Jf5g<2HchYjceX2q#xjQH}@r4+`jdDes1RfVxm;LFpjJc54-m>8bt%IFIA zrwm6yhFR}J;9}A-8tgG@>~viIKpq2gjcEk-8E>0(M;5=bq+sJz;kDfm|8a}lhA{Ki z@B>{nBInbjb8uBVLy^xh56x&hW(^GQ=v`Lx&{S=~8`|=`?quG7IJT&r`08<50wsgC zF{xyXS}1Rf^`{n^ZS;+Xyx%3G{O>jd`sw@7$ct8hgj86HGf1Ng&zPMQB6qtNQSd|) zbz~3xDVwju@K`I$h)D=&uy9x~{beDLN?LM5oN@taULOh*;qL z+Sf&lvw1&X?``C4VX`EaCfY+-D!irG>ECX6?-SFPF555hMJi8FV@>f(F@45D>t637 zkdLa+yr#$0up<|p(rMzR##w${ZDozwk;jSgyG7aOpJFgIa;7SXT-UX_)Il0z1YM!F zJiY-3EL3g%mXzIo<|)R!G|k^Lnrd4q5D;J1HTRNIE=Q6J?G`qk-B#!?lLI zhW;@+!}PcP>9Jwt+4vW%5NKQIA`9?mh=YL6WJ%gGH7kk0bNALIS7d9m|6_wQhzrtf z5(h9-Sv^SiBJpEeAw{>S#&4S?d~U-yGs?Rq1c$@{YV^7yZ~4hU8?TANWuOtX9zpGE z7vF}~RP>E2nAhbwfltyh(O-hD!QXoGUiGe~f@%!VP#;*Rn#Ti18e~u4p{p`r^LY-e4&6JR81phGxe0y%@qtm4YM zKyrm9FO*s+G4?a?-yKocz%}4fy~7RJ%--63I9-n0Pb>MR+R@4 zF^5p@pKZ)Gw6$a8@uex%BrvtPz?aOW_jzxwvqE>PN?G>kvN8X|2g2E!0XH36tgI*- z3oMUJ*D+3=tQG1bf!Gc+hG);X(DaKaUx=okJjO*Q!t~q8zB3kY5{D@{e6>H|pI>Zc z_fRMNfhaniaHh0ddJ2OTWQ#BBZl0{g4(97StJOW4JtR0kSaRKiraRsS0a7EQQUlk# z#b4CR6S)CRiqe|&3aqF)y~*4xD)A&CIm{G?1uQ2B&N~`yyI5;s|7RWe=UuV7l}^eYs`2-a zXpxrA-1Y#AwoxnfS- z_;UqZHHJD>LqdkS$_DkRqIe66^nwdRN)4g<7W*-X$2rZT&l7r7UaCW~B$4+ZufT|V z`^OA;wEZx{GWwl42UZ_|n$uQQ-rz0*ka@kn?7xd5;8Ze*>|#m_Vpih^Ua8QoU>kq? z2Fcv}>h~3yGznV%5vO9L?$jt0cwh7Big-sk>NiXDT=+p&ROf}vfn_3bzbrtnWBvBk zy0puAqg+K)VXWr9tpb@r^6DTd0!|H)7}zw=@a!TD2}cZT z7iwiQGw|GcsVoQ{U$G7}hqGH?EEgNqg<4g2|LH-YJ`O9n&%6xSuv^wcWm(}sbw8%W7K=xQqUAX!u@1y@UEKgT$+QIjm}V&=y~(E=N6&ZWUZ0P{BS8)% zMl&ms9%}=m=eSYzy_4&F&gJ&bqRoc6Lp*MQnG^QNjpUVRKJXh=_MZCo(k3a@+v^*A zzzK{Nw_fo3^48t|Juh1h7}XP6BVf?E`dno>|b~?9O8hu{pj|E1O2c491SO}3(vsyz3@eg{XciFYCu|`5cA$r(gA)&Pp2 zU)>hU<RO?ZFlrKEhu>p%C`Z-I3HLQk)qMskHE%h=ivTTwiPZ~T#4Gh z;^gPJ7Ir2oJyq|trir4|h66^mXDYuqKJ3z4u+=lWqX`=^wS%D2q>JXC8!54Yt#eX) zR;i8ke?ZYif}EU36yxJ=*YN&N zf5baMH8vM;R2T;Dn0rduD*xw2S=$@>CsfscvIqbhg@OG~pTCZ@s^BM%GYbL=}7#+CH29$_1}~KW6gS`w|sT*Us{0l38oMK zy0`wBKmWNHx>dUmfwN{CXr=-H&u@5d0h7_#fXGDoFotX83=6WAOR^&Y=I;-rf}YOaEu(!v$Qt z;vi)cD7V5h?56QmN0gF!==yiP-B(y=H!a{%ck-?JbVy0L2hBQ_LEg~if1NzhkaTfr?Wk3DK?q>sE+i5(vUTg3 zQua|g+vaW;R=5vY1w5!Yo8uG%jFi zsTXLQsfbI#$E#eCStPfu;V~-%6HBzlf8!2E<$60%=2g)~APGas>_}3cQV^K&4ED4h zV&;}%n+d$RSgS*Ky&&5P)%$?lbk*>nyT#|X`=EQC!Bf?vwwe$`2_g-g$_1kMAI^KF z5;XlEayDfnAE~5*<*NJUYraAM!lfOkt!rWiu=TQV0;c<`dqlYdlg>DC2L)>H>HH~n z5f{OFem~5+KF;wER?4+mnJFl{8E%KIE%TD<^0uspKa*c$}UA6BhPl-B>I! zUAh4^1-of1LL&KSp<>e@sZFY_#fc?!Hj1=Ff>*kNET6}_r3UlN71t}|#?+EhhD`H% zE+jw_z~<^rD6Z_d9m>}@!*i{+^3xr^^~4O5-Dw+&DT(S|t(Og_lVY+*%-CRnz@SB6 zo|6vn=UmqFhyRo=@`u6MK5YtO3K3QJw47Q3rI1L-h>gvx?m6j%W8KgsHIar$1~ai+ zd4{0cSx`tf=yfnQF@tP#KG>YQ8?uU#(~ibWa71<(Lf8Jo_{xCNt>&d=D4(0CHCqJY zNF{0@gsx^zp#N0pXWul`Y>{;tLJ-}>;Sz^1Pt*UWkcs@^w_4C&6Wp-&OtzGK@xBIdx1#R4&v$~GG?p_Q8#&|b2?!;ES7na5~? zGK7qE=7@&kWAN$8n-oD^7($NiIq=G#BTbRpRmBM{EG6giu5mwIN!wB}#Q0+3I3+=P z?;Dj8J9Z%4DqZ@J>~XK$|0kGf_l3u31`|hv;7=2Nf)nFY63y}^Mp%UV0NSRn><|0z4VA-fE_e^Ns^6x`zx+8_&omzBrvFF9eOYVc*V&0;TpqSbxT z^b3u(nj8)wVJP%sh84_R((g)5Ve!Wi$-CaTURCuY9@2}XiSN}@tLFcV%P*LJ1stf# z|1IFS;DM-m3H2Qj=x3uetAOpoho%uS+1SLKwlU_$0M#whPXRbTKf%+^_Pi#ZbAkKu z5o;Tv>i1$QcNhoQvn%703;DnFA_bp&)m?^2h!{=R=l!8F!2u^<7h3-@peL;kF<+ScESkXMja(-mgUnW_JY+dUn{^PHU)E}2|WxkL$%=M$3Asx5(2FuB7t5-Epf=ju5c|0 z0TP&4LnQVcD*}AA$C>~ITI9Q8o?wD(4T9RS)0kX$2mbjO8K~zkY8Pk2QCuY^@v4pYZ}k<=F~ArJAMmD=%YJ!69$wO^f@8A;x@({ftHB*yT8O7g!d zyBCclQgw8+e19yX5kjHxLVL|Wi^?Du@36-|pKqwb0#+?Cn|&1PMN<$-PA}mKkW5;j z@iDdyAPHqU_;!i>yn_^q!Ir}79|hF z7un`(_A5Ul&of(2>MyaOb7(p@vSa#SjR%&Fl%nnPj=LA*p1Hq^b;|mXfpOAwSS{gc z^B3{a4vbwWC0`306*posT1Vf)EyL!A^eIq2!V7U$LZ|sqck2$e%>GUeJ41T z|29slyC|9wy;>^#yRSb|35L{An!ok_awjkCb|g!N5cS<-WSLogSr?!ujKgx7fDBpZ!|GtpAb^*{T|yTp%;@eBqQo(wW`Jnmlm zPeuB_amcu_Tb&8%|IR68=ErL82><4Dt(Dxlq_!Ep{v+C(kbd@SMA0cuFKG|Ve*P5? zw~w`>GBR;eOsWa9KE-wE|0!||RD_hj+; z+G7}QFm{qJeJJ^ZYZYk}MFruo9-J5_1`iAetUVX@_P0Q4x% z>~ZZn1k?N2oBqPwgnfhn$X)Y(%oLI8Lz*&9y?Yx#eB z*{i_O>@dQa>*9{TBd-1dy-I<$a6x~Q?(rFE4bPiTaN1OFnx5Xks}4)?LRVHv6^N)q zO9um${SICOre(KbNTw1!lm`^PeAQb{Xq*^5sQ}sL zA?W&r$9gGGVS7(@!<=toYzrZ>s+s-4nx^>|pX7IP`t>1BxaO7G$#i#A^cG1|x{gyh zL(X$Nd}zziKlngkUE=dKz|v=_A9*|o;3yHm zK^d2sZ6cZT)jqlUA~QSZhD%PcU;F8)?6Sg$l-pP1v7)Q@68N4slvMp>T>YysSRb~4 z9~1k!5ALHL-#GPsB--JGXJZ|Jb#?$q{_l)DE8qEv_!8p=Om987tEF}1$S_3<=6lu3 z3^jA0UQ$NFurS$3E8L_rXbmp1+QNi+HrTK??-mmp>z6_4glDMmiww2y07L+f;$9hk z0U<*I@ZWB+WQ3x-Mq*|D?-nU6_;mIFC7c%O*8Xny|7;283sMh%+N!KF{BAfY+|E;7 zD3db)qaLDhOXRfRJrU=Nq~H*9A(r(%1yJ{jiIxbN9xIfZv4~7UHDaIdWkkX$`C;`? zUv(z;{|gB~p-`*%Q=AOY+Y9d5-QQBW3e z$|*O;K|fYNI^wtS`sT=$f+~b}T zBl7X!9|TW^%#T&w7a@+~KP~#HUG|jl=BjQgrpBtLUzf>74M375s)1?jJ~iqH9{MVj zZDtUZYb*hWklN1PX4yI!5)r^|ar-24GofV{{-ki~U%yle#i3Wt5*Yg$RUmFeuv^y?eyaoMHR zv7`Wq$AM=*y)>^!f>oZitWdx6^@~~w0`b7Wg2lOF0l7xA!<#yjEg#O=?A+yzq@X!t z=cVFi*5!Bb25Q~kh@J%9i$lo_2(A+tijI*InBbCg^euuE_v(`3Gn=F2NUTpeG!uRw z-SZYbcx`DEkdpcT)Z$M}0b3_{?CH|INdW6|`FQ0Boh5R*NT!B4w=$Qm9o0%68s(~d zH8pBG2o$7L%R4W$YN?vEu`19&*BQXDa1HkoJRL#Qn9=W;Rm8VS98ak=Kr3U{e}RuL zcjEb(+x1A3auTrU8>o8wzMAJ46FBer!3X(e3e1!PkjOMHv4TG&v(t1h_y%^|(&Jbx zYY}}z`jF~z&c@It-BklXH7A-|H0YNb$Q(k!qQ74QAt+i#vWUptIa3 z1)lS*_vxK-7C6l4O|qJo-c{qFuH|QV>YgPp&!{X|?#lz`*w#;xog-d7elB{&5s!XBtG>V@J zj^Gp)O+G{ZvArcin>8@W)Fidz6UB(q6)~;TF?OwJc;tB<8VkaE9ShS#h}6y`rKpAsg(xC^+>=kQZE|ubl_rEr|0!H_6UslTCjSA3$mO&@Uwb9U-<{R=Ch7CaeQ4Pza{Z zJi9DrgtJk9G(Gs_p3K__Tf!jAo82vS{SVAfVEq5P)69D>!9SUyHBCQAobs9rkI6k| z+AB&jRQ4hlT)b;}?G3a+9fY}8^vt`>c;A&2{NT%XlFFa*NEtUVB6ReOq1eyRvTqzx zD5k}+`^HatORu|MY&fI4PR>+G>VA5!H_TkT!jQr`9yyM^&8|v%UBJU{%xjmX?1211 zihYEP;nI!a5aP_&B&ej1x*$d4osGC{p&jo4|CSj|Xb$BchT@+d{>HK+)7x_RUC@`{ zsN<`s?_N5Y0bipshN02^JWaJ5SFb)H3SXu0Y?;y4cUbKW&)Jy$zZ=aS;){)*r*1p$ z7gwp1KPIBr7T5H|9)jKE0O_Fw#hmz}7LirXfS2P?mRq}cp63XwrINX3Jp;>L`ABol zs6t4VYUeuc?nKxBvv%Qqh4GCO7?Q}^ge{o7PqDup@>9Ewi09%r^&`Gr1k9e|7e&C!KlF~L{qu- z{@a8z?Pp3WzJf9{){FlywemmP)raRoMpC5W@UrVrs-98GazO)KfxK}J;J97J)AtSJ z2Y9&A$ozM2fkzlX7s~A=)d#NA)2M8b!-{CPw3C6OKT2uL=x@v&mSmG$OL*=SfB6wN zap)4kqES=v|0Iy4xobDNIAbT9i`+^D?vj}+Od_w{jHrbR(9BH8(ZD0gvl4^pw2_dL z@>oW}2*gG7kPj?u3PeS$g3_8q@}eI~VaxSOT$s0G>;Cp}kkqx+Z)}D}qMhJe>G}qK zvGzb8yRi`wdo-V{kifge@kQa3UCM+Jz?-V@DO^Xpgb5-5oZ2!uO?h2ysxG9@t1{Ru zqY)6mJ?;H{Qc}OPzIfc`*DuXmzf!yfd9M`rfQ1)lWYt^!3ri6(4ePwC028XYPA1jg zNUp2XmtDP_^!b?~)0PKS(7 zZ<>*M8G)2U_qYIckh5Ll^o(bXkJ+jb|54aPQ2fLV;%M@U&tib&-NB;aDN&v%^SS+? z1mATcIXwsQ4XQ;L>g#Y+qTXk`wBvbklC(^279^@*MzFC{ zxftBZ<74qDN?K$z?&S7(X# zvzIT0UPA6i|8Mg7SneoHvskYAEK$m1M)4z-o(c>~`h(3Q(LMu<$1UJ0lKUU=3lXWx zha`6r)wQH4XR@U>GF**S`H@f^&P>oPlE7N3TuWVSQ`9mP^b;(ZNtuM|eMMu8I!{qB*f8c&Y+oWFI67Qxwbd!fifB z)>Ps@_KkafJq(YxZvHA;V=}` z_<-*~>F;*xOfQo;7{3Z9U3of0A}um%HeaHVOqaQM5aHZaYooI>jNBZJv#tG7{a9r8 zL*S!3>@e}#$JaMaN;P?J(MP|lb&JvkoxdL|bU-mH*%vcz2+HYC2qylKV0`$vywOYY zdfqI0%{=<@FqgS9F8s9p^=tl&S92|jI?I^P*^DmA>*d1`+M5ZSy_tooAb6Hi3*66` z*OW?L1=2Cf#D$r*EZy+4Y;r$+3{NhDJ|=VK8BNY~4KJ0lo`ivTTDa-1{PNp;Amrbu z)prUdg%sH>H+B=d;6#&dkw$GHH$>cQx@=i8?7BoX#;KOy(sUM^-VM%X*J4@JYG|_l zL`f}h>F4<)&=#wm<7PjBiK`>-g1vcyh6Iw0!lac}N#4bVCa37Y<$C}v__LgOw&;Ec zqWv)aRIgcDM|UxwL5i4`UVD=fJ%LG-#_{+K*&8F?IX~l5zHpAqV#CQQXUoJs3M!kX z4(As1s*1FDx{4!~8p%IW9Rzw5$l45JOP!|Hmcc8f;a#7Sn#ou=Blkcw%c^5gCB|m6o=5 zt27~8AtlO)J&H1hRuH|hX|;-&md$vvsgJA_uY7ta`!>8wIv=blT9pUeiIRKo_HlN1 zM+si1zXH!#_pG<9kV14PLM44sa~xFzQx{fzNcRva^BAUtsUqX?$y|K;Jcr%$h&!pL zB5DL)gbL9Q0|8zwb?w0xlBfYPz(+=NB5tFR4C+@{txCF|k4gv#%8Z0H1Ko;{z@LZS z0MowP6Rq$#6_s$$6Ds=|=S_Lm^*MbC%X3ixu!y7E+={3dj+eJ4Pj{Oh15O8us6-qN7BFwrE)(@treVtR;P zu${7ucB8UWPRuN zMIHMQo8eE%&g>V|p#+Sj#j+#`@@h_kP4%;0Xe!0{o=3@e?R~|GaA9z%e_)}mm{!ei z@8CYnBfs-k3ml^QIrV6HMBKdBAP)b(dHE^XkCd7)yR6 zr?&S}xChT}TuL+?NlOzgQVTKb!e z9u6^hS%S3iA*=6PHG<4R?K*Hm*iZ2b!4(Zh+t-cz7dV)qD`Vl-%))K%^s6Hj>LvOb zbrT0vE02D7SK~&PUm5U@;+X`M5s71Y)w6kH_YK+^!UAZ!rkm#((w>`AIYWa+XQW#6 zD*j6gP(r=)ag|e+I^ZMx$K|M48tIvGl6^iuL8+JEXn6xZUd1{7m#=P@Pmf6OLgK>* z8uCS+x4OE=ywT}yH^5Q$?_^J-tHOi@3olQ80pA-jUUhY6B^r!U#5OOyMo$S~vvV4C9xoA6i!Uuad*1`;k`5B*xYzx)kC{rLS^wQGh~$GA zllVEf_Q*mhA?D)+h>9L`5aU3_;+$^H7(R`TPMk+O=lCFPlU@4u14>DtofISO6$Sg` z7zAl8Vvps++ol?lZIDg-9sTcp!R1!8WGmOMCZaGR4_J?*-fUHvS$GrqW3XBYVe+N_ zc?->eqnJV@FifvE0erOIf)c`soTxOR# z=Jw)U-i4nh8oDgn@|JtL%`-e0Djy5>EKl@{=`6zQY4IPwS1Xf{tqFlb6pxyKPcHfM z3@j_!7jxESJ+JFOcO6456b=F7pM`w`_r_8P@7R^LgpAH+q;emwH*@fg%#)N85bfiu zRMQ<0bJ(Cm$g(G~&?Y$#n-ZR?M5_UrKm;aQlhX$Qzl(p zJ@IdSI0wrjrjs5S%Vfb~-JLs2ghso{p7V7FF16a0vg8VVy--JzkpLyFszQ%$nRJp!zFRDE8A3FTW#MoZ!adp~1i-FfVVgJTXvH=+wKO;=_n*%8_ea)fdc<)DOJn8)3;ITO`BlC`@U zui;4Ly56x{{`&?uK~SpY^L;@DcMgHcp6e;#S|%v<&~-cI)7Roq=UvWNcnb9afXV8fpZN}bh(sc{6GAG-_-zAuwh$)9Rp2t#lcL{SZ#IIBPt&L{o z@?@w-GbQKi;gweu5Z0azUf*Dqv@dW!Dc0mar4EAhx8n)r)PeS39m$BcZ7znMhZf)oT#%$ zK+EAe{nkG~O2GsC6 zpAprWWY2ii;!uIzo0;#(dM)ig)qrF*n<93i?I!l&)f&)n$+6o#j|h+3`pp5tid8+t zt2kp%;fChPQ5Q)^*V`(CDmaU25iIO?3hHBu>JLj-^nj|BrcoL_veC!)ne;Vm1HtHu zVJMUW?(s7-mr?F3L~lYk4ilo;)LzpMI2nH)HnoGoHn{R^eOZoV&n+z_9UCwSQ?R;p zREMB5$Da+B`xjv59ogX|V&^tln0@QswZB0EbP{bi zax@+a{Pg}aPkkiM{s+4Wo4D5I@Dn4$yQYm+65zJh=s11D3Pa0aaHcKqL@9>X1YNNg_CM|V2raS2Som0 z8CZ4W?Z^#&{yh&;&RRRZ5kSmre@ar3ZcpdDeksrJ5C21LN_QEAn){_<-+y^KL^wSR zvQwsYx=)br%f5cgs>Fpf`^OPwbXMGRv0pTFS8_Jf5eki3;O;qoFS}+Hw|;fhIED?> z@B-dpM#MMX)@FT&<}LQb-a|K#p=t1$PiL`L{h*)N$DLxRdDXL1Qfu9*Yk_WK@upAD_A5xE;<*?S7^cce&RI`^{|ZtrAO( zOkZ|Ztzqp@=)I;qD1JTyz`u{|POWrY)*h5=#44Fg)8ajsvi`f@ zO{7MwwGJ^moe7RB%0RX62hz+voRmvHNx~w?55nn@uc?$qA&)UU_UwN1(@Q$EFX}Kx z4ka=lPK#FHyK?lu97xgeF4`LQb7$Tr?Rs|N`})&);t6xjZz?~)FefR z(WAU;EU5WkvW4=dBr;g@Q2HaMmi@__~P~Z ztN0z8{7m@X2`IebVy=^Ko@gZ(wR8h}g(RTl_lkuQVw42SnsE0x$wUNyCgx9rGzQEX zDYl{+c!)I=vo}hdDx=EsU0Ho{WK;j33jDxgFSzKJlq4D9(!11az<}_wYXamA4@L&; z?IS%GLy&#+V1G3N2aCT4tcXnOg?UiN^yt!V!I!y~s zFD!0QFJ=zyWHhFM?2S}{rh^e>2irn^d0Z~QoXXN&-*wPprVP{k)%9_`oN7t`mC$1j zmU+HrJKFx1b0X@U%5QpA2-o4D@Y?lMqXW8R=ftk7TCl~fRc-C%D!aE%^solbA~8LC zbR~<90pUhi>G#tbTOyuFSXH)sk&ch6S>Y>^y0b4@yM+uqWE0Lp@>I0c5AA>8 z%_M=qTXd&dTJRg$w-iSQK9@KWpsgklN&dzeGu$NfVN_0tVQG&4WYv`}PhzON7GH0R zMAG+0#xyxt-J7VdJ-ub)9~gJ03wXV0KL7bQ{pBC#M}MN^4a@%t1;Y);hUQ~6Kr7Rr z$jMJc*ix$aC>&wOy|3|cXcnsDN}Qv8>h|7CP~>o9nZViSe6m5AHvkQ@vi~g$5k)0~ zi4OsXv|Q!1YwlrvaNF3G6guykcUQX~vwXXOaLT3&M4BXwL|jZ}`WN+zpX`5zo+*to zskVjICYe~!#dt3O_$|tv0QhVTF0TSrv3mUBr!B~Yfu-6zHHBF;U^rp&Jf<&*HDKg@ zjU}tYLsNgU=PL<|mcll=%QyX{A2V0@Id*WB8noDG6a;!nj5`*wJ1NUc^|Z9E1p5!= zM=u#OA7l?NLPC`BiD@~&Z$n3mq@u*!Nap0j-@hT9fx)7WwY?lsX1v7Lx}asY$7H0~ zVbC8S*x(t2I1N}|hsM)?syA>jP@A;HVWJT#(#+y@UaLV18 z+muZ-Ap$^&%t~Y=4{_NQm=r>m5TI!&61nX52`Hnb@N@W}P^fqE;>2Vx8O2?xbU7eOb5>#Tbm6mN* z*>YBYbm0F>JFYxy^@G`vT-GOwLq_TI!XH@8B~oM6p%-xz6B}AoN@yt*M5uH`Q&L>*vb<|1yqm+< zl%p}K8PkPFbMm9B@tBDNW{L6S^{nqS(2)U|)%;g+g#@F=48k2PBr@adw6G%6kMuUV z{(trs=x=;-T@EY`#Z2CJp_=ft?7;`dro9eLjo+(H|DO4}t|Nw!Z}<_d#MR+3fbOjg zxuK6;Y4ot!2W!xuNf;~~s?zzd53pZkGWz=;|GuD6&U6^1%=huGOt0lgZmt)$y>}#Xw z+u5L*1X}*b?KQuCPNsG{emVhE1a}!W5*8bDh>nZia~m#_C=ulCI3MYs-TQ0;(7%87 z$jMqWuv5X!v=MJDT;A69F3`NssA5f0c9RJT&^7jS0bbn8| ze=g8O`@8FDG=C^|AK*b&8kitMjBLfJahXpNkQ%-a34J5BysuPMKB6y$C+ zB}*I@@`TTQf?243cs2BHwulRx3e?E(yAakN!uxzpj9$aEk0KOZa@aG2Isb(Hqs@P^ z6E2C(#5wCGf8h2UHJ)=*Nc^Z-;4Rt3uw=CR=Os35Tz>t?G_r_kG_KuxrhKQ!*xB!# zaZ~qhpmaN-zOQ#a^?BB^9tVWWJ9Vy}F#cP$dx4w3C4vm_#R82wde( z+_Oo~REK>V3fmR|RbHbbSQiYv>yA0e)QLj!gGmREmK-?&>GyQf-Mo+@b{fG^ud&yX ziZ@P4ur!J#_8)N@k*vi#RC>%8$9Y8*C8&(0MKe+!zF`jhd)A^@-Mv}4(BU~y3n`E( z7{~--))sl?{bQzv(Md2FL$%gNLyOAw$%gz^eAg>;qj{*_TX*ig$CuU)b_y#n!ltAmB4^vqdUbvz(a5H)r-?~a!A@7+!_lX|p8hm}`p;s%~Cx@x{|$@rQr zTqUx4Ab0&o6QPjb#ByAh@Q;ruqj8KW^=5Dw37BdlZsNyyDZba8&`NN>7rK}35vHA3 zj9B0Noc%@E{ap)dy>A&KbntfM+kTohYi);tmdCsEhkHT;_WIp5T>U+!vPgtVhtZsL z!cydB1#cFuMNP+X)a)~7!j9t_{;DoxQxl`U*f8u|npr(JL6WJe+79DI5|7V~=9V(R zw0HDZqlDUS1iomKBX=_!nH{X=*8yuXXslF(ZuI((7A6Cff^x(Q`lp-nmZFQs`(lJk z8rItHFnqL`pRV=3(6Pjh_?S&Hzz1Ihwy}-R%?s&RdUjNGWSdXE3zziM@t(!0SHRU4 zeSN?!_obb>{}J6kI6fDA+R;gSym(f3>>eJ#13tw8-mx}p4gWn~X*5w$k!AcJTN|bMJ7tn1YIz(vBJz^r|;2)XT-$`p1Ml_D|ozjTvmaOmPECksjk+sxUZw zg6ZR$U9yZ%!M^2&KfL*G;G`fimw^rN|5c*BS^uvR4Mu73jH#!#h3{$$hOv$i=%A}Hg!jH05tPgqR>h+&f0kUyE(xJ5RSS0pw5%*&5oNY{cWOQx z^G1U2z5v1ll;gXUd&pEF*lmJ)peWwv-{Ap3N%WLuWc{yIrbwo`12CuhayQJWPB0a5 zzmnspFfXE{MT7u#x3MPQAn;+{SR!^u#2Bo!9k5l|)F6F_M#Pxi)PSZX z15#?Q*JN~Jaqi6Ugfwdvt-Vua>W)yqAvzmUKY?Tz#Fp#e>rB!EH632~j_>_f7 z_P*6hyfXYtT`_W0fQ==ByQ&oHAA7Ej33Yc}&{NQVs$rb!MvszFOJ~W|jRXN@%up`_ zNAHcC34Z_qY zbX2i(^^!aK0`#&^^t2>5_pp=sBk_YUs)~`AmpY4}+{A8pY!gsN^vHX3qi#uLPO>#C zj!4Qr zraffu${UE|mo7OTWZr%g0Y-+`p!Ac-%8xm`70(h|M+Be(nDv9@P!W+9gNhsZarW3k z6%eKH2~eXpQfB%i%RlLh2U07qOOf|@dayeFs6Qjn>d|OqliP-W%bn*T2@c!2X1+Wu z5m=lVkP+V)d1-Wp3|#$me)K}&ZA$G+-{KB3q@_P68f3`~hD|{QMdjfmE3hLy^jTHF4Mu7|BH^`;3pEJr(l@q=%$VJ~ z8n!djFSMu;i)d(F+uP0cz>5CoA1SFdgH1`A`DI>rFJ6P}$_aQR0r?;D^lACEPS*?f zP~xB2@JK<7cP!Nk)@ zZ5^+%waXdIJ+4{xEFLaNxfwn8biPRSuBYLZ;ZlR0Z5NG>os35KjaCMiE52GRD%8!l zsXIrnfyYM)N!z`|@dV^U+Z4_x<-$jW4n)d)eS4kzea)jCc3D0z#n&wOD)rb0^T}Xj z+BVi!Z=|ogj7t>0_Mb+RC4G-;CROPl;$e$fYDVPF&si zShU1P^0G|Uixk9O9qZLEEYF}U_UF*vdOgBiQiJ3(b)->?C6?K!#xHU*65LWvOPI{E z4uUk3kCS|)C7#XLEPg7)k34A#pc*f*qX;-3ZNfRH!1G&6*7?9PEmyV#wc*0kSI(oW zcj~jPx6K73oX}(j(2SR@YOiDm`nbp|a+_=tx5S0Bjj-6)2g?YBSDj)+O-wGFk8)pm zCyHOC=~7>006z;M%DACV-vQ0ZYuCIa0tlG((>Caa@w9Vk z%3H9u+w5mK?gvZAb#CA(TI9#Lg-l_SevVWWPFa}Pn@uyCjCtgayr_~yOv+i6KaR=h z*hGC~t)|A~W}0x#&-V1z+0)c;mw+-_`KL#p+uLW)#vHju<37AlgI7`@rZ24Zv@>n1 z@+yavMoMp5sftls)Nkm}UM8Z=NCK2t10<=KAf-&J3uv>B*&iBn9=RRp(A#KX(owQH z7_7tuNkR2%j2DvO871rHG4sXytpR^Vw(zf50Oi_LG#sU$wVc}~p5HgztqDhGYMGfL zyrd>`(l^p=Pwv!;UQw^E$6p~RPh7Ev=iA!^&Y>RuW*X8|7lwridMp_$R;uN9#$tkJ z3ENLOqR{qpKJh3y?>lDqvxcD?g;l6#cX5oCkfflljd-3h4b80vjgL#dzZ`akLq!kH z@zt~<75QT}zfcT)CcH|4Vz90rVy|^%6{*Xrl-5<1gqjbbhij(h zYeu~pT28kGnD_=5Wm=Nniw`Mg+p70cjzqjvqba z1hQs$M;pt|xThj);#`}dL%%ff>>5w3K7Dshb$Igatq1p)-v%;}*k5`&BW_7DsqRNHB;A}B zj}-7awtTwzom*Q*B!2tt3^ei+vEJ65nw>WvR%zK{TmmVkyPtZE-{ zeNE&mobp9+2pO92F>K8FApZLtY5pAvw-?vwDih(u?T?f7!!V{T0-AUNtR>Xk_FBo8 znI@0#r5W9yUh;r>{?TDMrjF7MjJ;$X=z0<#E2p1)_}eu+TAOm5LSG%c>*b>A1X#hd zBsnGKNZA_MzI@I0a;SOVao>iLynT98Ky&R|2-sOC;dMD-N%}bjbH0ZOSJ|_&rE_l1 z=g=HQXJ|Rq^i2dEnh!03`rSP2&AVd^%VcgaF{esBkC`=K?ReaDb;0yL&6&t6c$HWC zYJ)!exxdP`Iq&@Pb~%|o8o!;Gv9_!bNCoqlS2Wh7a_m=fAFm~Ux_Z`QxM)>XX^LRQ zu-f_{)16p}=FX$6=90MZ8xI;@PGsNQ>{BxFt8IjgL1+$Q|JA|7S)pnZ=XOYm{J+c1 z`5=1*!CU6sq6IbLI`Xld;8@n%Vfv;=eT))s)8ACNhO5fiMm*B*k)(fxfVNP$c7(1{ zIj%gRW5Ho1TL3d=W>QyN`tkr5HW$jp#9SK?r2+sTLBL~&-{))Zch5-%Zg*#fStKO( znKF{$IIT$I<$acEkE9C#a702GQZ5~@^GtubRfu}m)=^j-XKIwoy## zLMr^-tHHY~52s+FrUj=4C4IXNhsQSaOH4~tCA3@CfU`P8`ZjZQr~Ug8*lM5u{JysE zI+Ks{chIrNZXa%IT8kD>Hq|($XPC)W1807`;}33PwqQ^s1R(|zkjfLQX=TTV(*OMO z-4))ej^M#zo|vt!(t7h=>`}fT0udtdHEF`O(gib*+ZKhxKce`w=hg0MLT?@~E-}iQ zqPp;X-pLAEI9Rfi>OXvy?p;$)VOXmv{lPXlez>c;s5jPMlmdA>&>jmUH|U{*syJv?XO7A^JLGO70*u88g`dnquOFDpl8{W8tTH|$_xk&Yp|N8T8duIm>{^erkli+W zAEdI@9y1_{WF=pg7HHtjH^1GTHn40WY<~bo4w@03UC$u)hJ!_zR~HgGKF`jz-ZM)! zKXD?#tQ`l8C3_+g=f_HrxN&g5Qg=#zO3BW_GEW&fYlK)1$#un}-KDJ7X?@Nb0%RXdPZX}q_c+zP3&vf z_ovm)m)J%Zp->Y4=SP*=eRPxgh+{n$>o)C*HWFXgU+5tKlo*8(D)*D#s zstI>`eQ(_MwHG^{>CZFMK1AapdHgb9Niu|0Q(PGCAnpw(QaXpbQ|6uz@01`BlLgx= zb94oO->@DRzqz!UE5?@g^^E^2c4T&WT6k;J7X$*nT~k>2h2>#<>hh(1CH+(QJEw55 zw-$CWE8JvlVYh1;`P~S;xNkGHdo7q1RZ8yhFD#X3+Y^oPY9H4uc`J`XLu6kBb$z4w zXt?1F8DC9NqPHP!LHTM%X1VH%;oG8lvt~2lR82nsCml#rg-fm67 z`aoFe=D=*$KJg{AcS4K+fgV_}W--Y}9%y6p%BJ(k9c0!5GGNwXp~Cik5#wOmwtk2Z zDQIn{#$ni8^`ztR>@_NK^x_2tZB`coWC{tAM3^Fxczb$-EPiS{ZyVKc*y5ONlQ$fT ztd6|sIz@0RopeK6CWyK=I;rO3o`Hp{9YxfxTke?^z9M@^6lCZpv@*QryV{p5eC%La z!C{RR=lh<^8B|d8!t(d(3zbN4dEVXY43oosNM8AbS8~CA^%@&s!L8 z!yJ6ttUW%V#eJTQL4M}h&{wl{K#->Uig1rzm?C0{K}7gmp$97tI!!F;F|)bnS?bZW z7k_5XLyXQl=!fcDFJY)^nPTLiQ6#!dfXdJj?249gUMSf;l?;(ZskMuzxq*e(HUwzC zV)+!akSF{9qjVAlyr7Ed3yShj?PJFMqTwbotZq+sr_k_}eYUB|)o(m4J81jH)DLzF zqnPhRc#bAv!Kh*uXgVJofBzZOS_DB?H)ewu=)dO>wgP=nrqX~DM&Emj%t_E4-qsC$ ztEQM0I(OB?d+022QG9*D zAIS{o7-#)>lLs^XhVNEn1jsT2KiIf93Cn8ZZOLzxATqhe(bs-l^fc)b>%ibd0N&T(lrKzGekq1}hMbOy zb~_0838&6fD3%8^%ZM98@G)uI|?>f73(W^K`X5i}jF@~V1-({1gBHV}N@zriN2ellzBAv-e3oVg6 zRy{F6`K_pKVxCqKJUWbDZ=J36sgAz5irkfm2vd2#slD5Hn(Oc9Ym<#k`|v?kKt07R zRQ|6rN#7Cv`R&x@SX>#Um_51Tin5!x#2wVf(@Ts8^x+~FeV=w3H&!h@po zU3@t_?~P8*4Kuap$19{=;IcpH9?2?oa8QEwEi+|qqW_Sbd$ z#uvkxYx(dQM5TkCXW4kbfj;a|ICDFQs~kF`;ON)pU49`pNMc^QJc-Dhdue# zM+Z&}8CN5NGjt8C3S09l%wY1DxTZ_*`adaGY|#03qr*SKF%-Qm(mFl+IcYc$i;9T+ zLXn17^t_0kk_J%NK#fI^rxQ`*;xYsPn87jPZ zz|}f0+n8kYa2sQ}Wgz?@7p&PrX`f!nufFINvRS3bn*J0Le=_`LiKi?66waB#a7@U+ zQU3np&ZLahCZ%}O)55rTVjmu*qCGT>>SX3wnODopu}t_uD=5lgWFo(*gOBv zIVD8WdYa6el9XF#%!U=eyty9m^q*)FUNy9Lf<$4_-lgBF<21fi+oQBh+o5LX-tJ#h zP+nJ^vg)GJecQb1sKy@8pG(K#H2Z+QF5O!t=g|~Z?WN@M`-NQQc1wImj0cj8+H6d3 z>&*aABSX;-Z*2mV$ukHY^Hrz(Aql2H-~Tz61ajLvO`x0b^XobH5!>k3li`0FCrs$Lecer%E}bhI z<^B?oev@E?e+|Wu>4y_Vb-@4Se;EC6;KBS^7wSe3)y&vFY<)(oLuZ z(Q^LZO*bKz`#+_d?9u!`NH;n0yBZT#Ec_k)>-adGq?;p%#Pn+fC)ZUvdhF{D^^o~j zAM#k@59HD4Y;wwqeQ9zy78*id9=eg-C$O4kaNY}FKRh+!n0vnCA~r8L_if7{avm4i z$?!Vf$#8DBxTVy|tD_u`06=V)S?-&H_}2ti46bnaBxK~nChxC;}|@-0`_APboV&zL6z=csyY`5q6vq36ZGhV>wbX( zY_gB}rL#Z z5QV;3p9uk3A@j6cc?SZQ$$FhFe-#N%&$OHgmF(*m(Cc%Jg({ou2`|AL?vLIRzY?4y z)h_3xZ)hudHj;6-fH)M6Q@I@nQX11?HFu|d4OF&4s3GT(H^3^rhKN0Qg=|~2MslW$ zTV;L^!Z9#f%{}RekgaQHk1mQ%Er74CnMafqQW>Q8X{^TXr;O}xU6~b90M2Xv-wQpi zOP3e+ztdy#hNY@Pe5APi#NhACXx=eaupY{0RZ`_Y46C;33*GtE0(9~-LZM6GwaewDu4F6E?F)j&#X^c+@0QTSrChDIy&L@7d*wElyas~k>iZ^K1=sS ze-?*kB7e;Hpl01^nLO-{;U2Zgx4mf}C>vj0XEYIcB%8_6$o2JRTuFYgMp~u|Fsado z8Z^WGx_bSs%Ki=32b3vKDBTE1Qr?F2tzkoDBWX)~mpVcb;EdKWN;s}UBqh`MdBg8; zXnk#4RdL}k?SY@z?|CQ5btLM;V3a(pJQThL*Q-WeI2@w>N(~wMka)9Bh`RTDwQ~Lb z!nEZP5oJ8!120psD0=1<2P)7`xd~iV_idxJj_K=?yMM?cW1l<7O#xGD0~%{7v9RvqdT-OoPqkR-HhWfj(fefaw^l*Xkj_@13p&S1InX<` zF@S^tv(!lWN}YyqUSO(o+;J>Z6-y2UJ)1Xlje(oRcES}6CY(C?l(k5ZPFp~Q511M0 zJ}6_X@;9&NJ1gr?RLOfP07EyVt<{T8`zth^SsJ10B(@}`dd`FSKYzXEKb!ZYNkZc& zFBUiCgO*Sb3fr%*z2i3vsmVlxdqS>>`n2G1su@95419=H&TkYSzMVLfl%8&NKdI&t z;JX?bicv>*;q$Nx7#v9iXcA&{MPdqq{B4wCRh0Zu8|hN78Eyfznn~VMI*unkLE8D4 zaId^{a+Pp4Tk2L66h-9x6|0FTtVVs8B8W_Jl-w!5nVrvR1OOyOm`c5 z(P)<1guMd`WVrmY(b%s5WKGvNgeWLlhhmt*2S6P=x*n`l^O41bC*e;_mCq@OmiXrH zi#vjmZBYUa1!ALHfS86Wr5Xzaza7Lf%pc9Ts#7%5W}?T(kiE(#7$&m15KChndxw#I z#Ub{mvn}aWx|~&L2aj((s)M^!SJn+(dzZ#vIG!ke6E|e1IpcNRuck!KC&NH_xjtk} zGqE<*-+qlh(-hTQxBoJ9gQVXbQXD~er#d3Y_w@)C0Q&)n?KaDUQCgYH zlB%pI?sH~pkM8|P;L_ahVx&%g%53`Bz^NzHH=y@MT0)jpT9X{7eLZgTcN9gCutH{2 zHr9MuKKhZ*<|o_ZvzbS%0Ha*PAw#1{?9j`A0w4KRFOoAo@TYDpbNj&IiWAE!<0+uD z6$6|4xIGcQ53lK#`Z!%}|U@ z_`H#a$sq_`QlTEx=LGA=NFI18X8Vkew)Xp2HJy+(UFq(oTVBK13Qu3wshSOGo{H9w z&mkMjEy%Hn-2z$W%)K|9VNORUhxd@AaWE~O@^7@>BH6Iu-j4+&&JsyHw_SeMu)4y| zu@{6<&pg#L=Y#pXTofr!uP~D^IK9BWYn>)51ecXvfh3R{Hi-;&f{w^wh%G^`c4vwJ zBu5-s;6sXhNg_}Lf40@=Wa_0Qcb}<_1&|nntdO*IR{h2{bh!TMNY60SNWywaYrJ&W6>^We;=j@)_XizI5^|a5{VJ!M1q9T_uOV zT~$+KM*cx$IEsR-dL=$g62>50ot1!T$u9+UCKmPhzz={sZbdE$FgC@XfB1SblZve3 z38+iJ=urEJNr{D$h@R=q(we0C!&7VO+S5DxF4U%)A}vw4-LqW8KmX%r-B8GrUn`Up+vS_7)cv7pFaw> z-_j<8GAJ7#t3cT5O?9&?4Ac(V^UA*Mhn4Ij-;Y6mJ3L9x;K!Tv%)TJjroDTK*V-&K zS^CiC%kLf#vJnr9X|c{$GJ$RYLdVgbW&n~2K>dYa*iJy zAl1+c(RQc}sImi5o5+iLb&(n=vqC>&8L1al`F+bN$(=FDAVkI{VnYHFDr%@XMYyRS zWhME@S#qfCJ{KFiQZc79mxAEJS$syl7qZ#27SF?qLqHbptD?u8MiS5M5|i%o=Cukd zRddT^NBJ64I`x+2rc|xWOo79Ym}pR42w03c$$NVIR56g|Oa)rg3kl^7tK$NQ!V6ap zc=Z{cC>kAFNoRhK>Up`|JqJ3RHt=m3HQ))Qs4Sh3FmEXLu4%g|w%?c3MfDW^ht0L2akqm;8bxuD!Y3{O} z9N2`_^QiKvDYD`R%1Dk&Cy(5~JAku@09=Ww56x?v7oM@_4D#&;CA+HZ_uSjMa?Fcr zO_vQe)M}^jUadKwhIOV}dOoOd;T~A5o8~a;$t0i)RY<;dmTodt#Tu?xj&lUB5ux7W zzd$P8!AR`=+U{RMLBL-3qEZbJ|GaRbE$ACVk7=`=@|ydR9P=KlPOU~Y>yY$hvqFyh z_YW#yG@Tiym(>)pWe z$O9W&V(i#(!+K%y0-p^9!nJku;LGD4@&OH)A;s}+2_Yh69WOesU&J}+BQAyW{z?1F zH)`b}v8|tMiQm`v(a{);4ES-`4;FETdYjsHhZ)~>6aaU7%1tiBv%ScmONi3Lg?660 zGs|Lsn#uB~ne4#~aTl^*SQ=15F>Vsxe-T!q>|f3MI+S+a0>*F~&_wsfwEYWjN92MqubMs0)K@ zuKh2n3f~{9%F|&wlZ_t@(x#KK|1WsTBmbA5@g7RsKho(FU*~*NMsw1|eHTHHcAq|L z3Un`xcZp-wW?mrXW1#(R{OI%=$6=T0l)2T;IZl8QU7YMM-o)Tb~MVY{PbNnk7 zKr1y(Y!~z2fRz$;L|OmtepO@x5#;Bjbybou7+}S!XcO(KV;vOxZf3z2(m%YeT|FBe z&d$w*P!X+FQF5+_{|={`w{+H&l}Q~=6R96thphnLL=28$qicqUX`AkAdz9d$=CX>> zkuFsE47s5+$B1?SitSU#WZl?3Ckf{9vzSn@IuiM7D7lMO8pCozF+fy79SZ-9St;#A zYk1C!Dn_-?_vGe~A$yPq-|oa9l!von16*$?h0e@Nw{I2&9uG#V@eR>!NX}5(@a!!L zcCZcSxWSm<)tb$5smgJqxhhKWO9=%x=GfvwiBGxZ zfb`L-1cFQ#l++Ktlp8sQa}wFtE+6j;r}4SNuNbMwVjmlxnb62r3i+P z2^u{;`s>!vi0JBB#6>t=Xq{D9bCc1-ha9ZGDMBwcKt?>6L+#d0_Ny>eP?>XL%fhm6 zq}=?&ff}xYg%JJ`OB6lG=a?)Gn?S-Ax8sAy(0JDV%YM`ZxY2@?vWzn2VNl@^@r?!- zaf{5PMaE#Y_*Y&zq}P?ko9M9u?41cvWPluTT!lpyhX$v6U5+c>ervit*$ompbMAM2 zSb-^MF$35ZYWPHpS!}YtrpBKa0(lbwXv2K4#t`cjKhVyO$m|m8=q_$ThJ%B&I)8JJ zx7@Rzu)^!HBeG85C9Vd9!cOr#MJK`Cdi?8ivOlbfbFQSb_kSVxK4J=v2d2=3DV)Ew zgiHYZn>xWl4Ps>LSaUdlmcRviy?b$9}nYYFsd^FV0) z+aP58GQ}1%5zL1`&>DHL_SjGu9T}i95w8ue=CAklg#dwSH-Tz8nDx!x`hmx%*blUJ zu?285`pVv?5{u1Yz4+Q8K<$t`U*8opdOsxx!kinuaai4IM0O4|H$vs%O$h@FxG>4* z4Y`W<-;CvyN!LtBFSb@C9FM}zPd+gKYNp)iM)jP=>tH8SX&X8(pxSZ z5_GuaZt9{BgLC*1>y0gE9GrPq5Br$XSKo7u9$jB&4MdIe2(3;BZFk(rANPw4&y~w0|ds;&@N|+`zlw`aa{5KHpXVAm0DXTM^CvX96mZ zlvX*!O|;er7;pv!iXyMBMy*LAPe(I|JRi?UD2N5MGs6HYHvLC1wSt>)&^`>}CRNy` zR@|lXD8(%1e7SLaN>|@%r`#Fin=J@w2YGqJDb&mSy_|d>A6yZ_`jZwt3VHU_&tb!>gkJqp=uQq*J`~#nx2BGK7aDCA7aT5xA{3qANq7( z?TW;9!)#K3p`;6*g-q_2?72T9yRDCZT~lR9b<<{kHg+z{oG&bp){nMpQO$$e$}Emt zR|$JeLV9=K0cf&gE~Z^m*Amw9B}ec!_T)c{Hu1K4qjjLcqziX~E=|>!ciVsSRU#yp zj{b~u)AKw?Q5rL>9oPfE6v98NM!?}=V#DMppL9D?UPmF_jK&$2rDuYPE)YcoWcZ8` zlHU#1enOTGBm3#2ujMYNq8;V>D*sM4 z52}FlnLx6f8fsN+Fqd@`Od!XZ7!;Y@K=qNV0b1m`6m*kBNvWLcGzl1Ah4Pg!;ks6$ z)_~!|lg>`&8XM+k8|BHltoJHG=;9DEE^x=j(a!WAz6yLo2ZONcbe0re&;}fGWDAA? zm4hfi;Oq7SW=b3V0eZ(H&zKMUg}tqEdtQF@nJdUw6@<^(5M4MZoY$i7=l~@$nj(Wt z*I~+ueO9i`6HnKGT-Y|u(pvv(y0Z7CA<*9!FfIr5ze^?;HFnyp8k`p_?%~Ype;HeK z42Y&r&A55b+&hvSW-bkfuYtp>Wf>xxOMsx=X+Q?fXanWC$sqO%#;nn6&sCmB{koHp z$M&uOu75sF-VSg!t2y~BWYjAb#wW_T&^Tmj$m&s8Qze3~i$K8KEzgVPCV$Flq~I4s zm<#$|nfmZ$dGn`TET=2jlbx(K3M|u9?ik0Ia|(c$aR3+)(mN7`C3i=n+IsIy$I{;+}V@o5=p#MHHdo^nlA`G zCsE7aqBW2IxNv>YjP2S2F&<(em(^V47gGOGb=v{o`pI<9w4UA1U)X2*9Rpmh;WHoB z6Al{PrKKG{@t?(1T~$>vOqkBRbwJrIIuSO*Jxi_H&f9PmV^%zRSWjQN>#(sqIdwdO z;ZsVAfu?RpdHQfCOz`YisxBqJ`IT`q z$V{BP3%fwF5^L||I=ud@aHi~W7`2D%MX%v7i&Q8ug~-J&shta&$ToZlC6oenu%vA| z@{HPH(de-{FuckL5nIdK*uKFC8ic^#0X8gU`Z$9qZ{jdqc7JoUzi?urf3|*8MNa;S z>7WrCZWOTfJ+ddkHXHa0y@MV1%4TjeIr=>`Jl}9zLwJtEDkPjhS(pfMTL2m!ISZ6- z=0PFXV>$>0ktzVd-!FG>M6!YAomc7*b&*kl4>8+cq_bvRU^{y(-8%de9Su}z-fS9% z;(|3|(405}eJxNn+H(s*Qe0kp&S2hXlmOcA_maXnU>z^ay6H$=k!KJ300#|2yM4$q ztUfa7Mv?P?MD?Kj`XjdF{0FhH3g~PwOFeAT=Lcy6DdKzHatQ;Tq|pVd>=w-Bzwnb*a`wS}O&-vOxBijTJKeiK|Dj7-VAb)2 z!V-JFWoc^W3X0rrPlv%xGleLCU3j?uLx#A4#R|n=>Dxx6#l^0cIjzWLSTi=W1u6zF zYRFUI0KYQ&%N+5qxRlwoaDNeGJ_nP%zBaVy*Pdf4ZyTdO(0ViC}hTh<7PTq?e(#@}*)~EB zs@K}F`Fnv&*=+2Z*P}O~auMa`8~kO)BbN(vv^hE%|B9vH=;Y!vMCitsi)%zl#yvT! zB~^t1Eg^@vBp9KPVSHV0f>ie3P3Fl+r|?PvA5?I+HtVFMwfkZ%^oQ4*X-Bur23v zEZaT8>_GqO6QZW{3_7(NKkoMHu6@W7E0zQ=zq?2VX?%%)X`o36ep9o%;lD+ff=o`z zec->OTO&Tg-3?w9hFY0*q;j5)^V?n~jpgop)!%>MDtwk)c(u7B2ZP{PiL$_uN5CM; z;Ne%q7&e5Fr=5G@TV=S`w&^owxzcfV0rsCcN@s^xw&^wkk=`RqgpMmkYW9ZPP_AYy=v6OjR!@AT!$}mZiy#L z+fX)4SPhgzH>{HTO!cvoXyxw!U1n8o-5VMt5$qXra+8(#W$$=d{p!1|gkk>~2 zYdC@oW1sFI<&R$}t%1eOY>GsuRgWf6a3AuPHx?z6!#?TiDl$cf{9@6ASDo_oc-FC; zjoj!8Zi_*Zu(($BJsbWIV&e|HBsJUO7kwDC@VF41eE-Z-vMn0>OGUc$JMMD}?iUuT z`LFgMgY<}Z+{Zb<7oYXNJJ~mMBy>NBguMYw?>tujTTmvJ0elSeam_F3|1U+kxqh?)TGwMevbsCt>T5o(Fx393$DiANVS zi*_Xi0e*>zavZ@z17j(c#PT!*{K-JP>#SJbab{U)!$?~-sFNOYbU$y&uB--Sa=7}o zyu1PLPkiJ0%sQGs{K6S+cQ{O}oBu>b)hX;-LUC=9{IA&di9N%A^ zEG5v%|NexuRImqX{Tb!n?tDhK(&-xpFnE?Pt9Jg<`_b)pEJ)%d!NsTB^g`GBf0pU0) zpQ&7*BchT}QQhN6%+m~O#LIr=R&wc1R=zCr`jAwGSJ4ZpGl6XCLsE!$FSBz35^1xS zEGzE4fk$Xbvv)oFQD=R?Vh_KxoD(GIOd@EszYJD2+>cQIm`&HR2-WkQy=M%x2hB(Z zI;6ty9MT=>{;`t465aMg=azEzcnGAc#(_;fX=ToE)oQ=3UsvgvKq@h9^YW@|Y4{HG zx{%@4$NNO~bXdlY;Yt(o!_&oHB+j+s@W%UBV#LuIxB4UHc6JD5fy+$cp70q4FUx_r zzYclgxL!SzF|`b(eQR6Wz!sA~bJO{De}8{Sh+JHOQ=7&G$urLqpL|x#lKsf;Y6_eU zJKY|XM~U5ZJ#F{S+8Gf94#SqNZG1Zr>N)4TIo&QGo9265OC#=XSlb5MAIBc3=w zh~-fQtS*5P)G;a9Y)>|HJ*-Oxb5WCFP#_2jM@o^>H;Dfxgi}vBrj3jENkd+h~&C2dwKYrG(urx-0%;W{C zEN6Au1lDSn-D|1nvcDMeaAKzSv#GYK$!Xe2r*mYu4BOO{*Qy|%N4)Z-7XH+|UTo)3 z)x2?N;m_~EFfc&PK>p703(G<;#?h_)*ZGHV_K;}v^O?ZfOu_HL;Iv|;lL|gi_Bczf zl3+-uv!+MPLQS-C$E9vN`3-L*RjRDB{r>OM`)5P@G;wGcz++(0%vr-)A+^N7QFx{> zrnB8_&7tXbiG@W3{LcQl@2-*$f3=9t)0HR~rv1i~pbi3rn>4_**|22*e5r+H{ZvSz zG4xiA)U=#nM@Ik$L(5{S-zszvteHlk`M_QW%kKGkP&z-W$qpK4BJh>q-2ZBNyx+`m zDcDFLx5q|~P~!G+N`m?5kN%9t&;9P`h+;i|?CWaVQfTbo-U;p&8Qm;)pOQqI}mOf(c4C_l{QZQiH z_oHqywfuuNzZ=p48;5DU@tQM4P^QvjLMk?T7?s8z#zsL*d^J&9IXF+$wXaWv^N$BM zszVc9nu0>X3_005GpAOGq`xhHqh}{9?d`I8wzro}CYi3$fO%|R2Rh9(cx5O1t$_5k zO4wWw`83@I=m`M6jjD57LMFb!bjZ^&_~BlhV@P_uuq3qa24~RrrJ;294WTPVf+DV{ zEmduAYRSzDk>pf}tU=(l>vWxmycA*?c`V8s+4rxv6^pn4i1{>_?y^8+TWMdJ zR#8xHC`tFui4)dbUVYdZCusaD1Jz*T=Lj>)d?RFFvlXttwHFn`?xUB*Ilsl0i{4&* zd|rWt0{P4bE%wC@=-c~ttUF|qoNzYLRmLa&1Fl#rpm!cAZ2djEsn1BbHiA7vKF$r^VQXTV^-;ociD{mIt{#ov5l$O zA#B96p%l6Hrh|gMY6;aw+U_}gu!S?BU#qOBY`G~Nr!wLB+n6H9Y7U~!5)UyE(P(_r zCs6?mwdeZ)N{h1)<2whPmg9+zgl2V@wMuvNJ08$kZ*p+U--U4+V{f8oZOn7*7TtjC z%vQ4cvj`rKKQ-iHMQ<8u#^9gz?`-z8=XULT$Y$Nm$wv<^FUgyJuKd<_QP_c()h0g`(Qkf( zJpqE+3&uU{?xVTQIeY&CK0aePH0gJIiU8CD<$7?6!UiL7PtHRBjYFDBft(uH?Uc*` zFPbpCmaj$HKbYc^nFks>HlGZ^-||mkc)}uPr zPfBM?y!m4U`M<>&Uk=R$iWtzhH54q;7hjPrh6|@J_nG(NYqrN*y0HQETL?t^Hg?$N zGSh!gtCk2Mk5m5EZ{ddjxNh0?g|#wv>(V|qaC5yUUocq^TesSrrfp5K56qkJr`B;U z^=al{f0AmM6#DUh>+`mmepe{2^0z+ViRLKqw}7GYkM?xCE*4Kn>9>)aJNF4R!q0`L z*P3*7b(T7|m9;;wJWt>;i;q{(#_Y%14O=;2hbyhlzL=(616A4!*JR4D&gIQ0e`xa; z5i`C_o2OzP$o;AJS`9;ki;f{;j#m3d5&3meVttHD`-y~o zk4P{v*5p7d4+Ki?EwZ+L>PG*A2X}Y+^Febt3$G1_*7=_#o zPL%@>$)_-U@BzPHv!WJMi+1k49lxAGr{QF0vaZtZ82(yowd?%K+{IjuW=4d&N?7gk zM*be)LV@KRGpImW7o&#l^~PLgFQpR=lj=JJ|2bAs{rb2a_VRr(IH=Q8FdYIH_*w%a)Q=kt2CB5lw zqZUql7;Yi%?p3(sWWtR_8F7`tyqT8djj5!R8qvr!vblW*>fHL~hC8sbz)g~EX*ySC)Pg&o>=Ix1 zlFO0G#h9Afk)g_jvBP-$PeL#5`L|Gg#<>yGbi5GTty-srM~*C)=Q-}WTz49w$wV#Y zux#p9-iA7_(bVYIK_C$Qy^X#KTn7v9g1K(7 z=WWDYcFN)RDj_h4xv_#U&jFu2v5%F=^x-dM@?!ZiEbRn`&G;w7=e8(Q0{J3 z4&D+);nz=5nd@L%meKkR2r#2P(%9%c)VSEt<{TFYL_vAiuebgx+Mm16sqA-4E zh{U;JMnv=+W-7Qh&%8kJXRrOr8|DCtFs1#CZ-l-knp+Rj-3!kP8#XK(`&G#j`BSpE zOs8?EnoJ6(RQpUhk*yhB28Bm!()$?c&g<=a1!DBb2=vw@t3K4cien0q8VNeW(%Yx@ z*ebK;%v8s~&EA@5ibXH6Z#FfbyejFVs zoha;AV8|C>kTy$b^mpY&1a)DoZ>H}jHV_cVHI&{<>%8fTAy~Ro0exHyv+Kg^k3$ql z4o}6=QC|fyy{?_|V8QJi^rlBuz6*^G@o%T26W$r9V!Qym2)&KG8cS++H&G6$VLKAT ze1PWH?LE!r?RH!Eu=-&$O6;cMdmfTe{m$=?4C)}CwEr4LhJcI0&9 z1wB-}%_PPj;7F)PQKI_OD(&p8IcZoq_N(7ZRz3IOkz`z?HOA#2spU&>vcf)O8UDcqV$9 z1@9PA8<> zA5#D+aSSb{hL-Q_!y}TP>{q6mY-8J#lTC2yiuyKlE#nGi&8G^@3{g<$Ymf^Dj(blB zVI_)^7Be{LS(u#GB-o_Pejmz(+(quZvh8Wu_b3Um-jb>3*zcT!zYr2~mQ~&6Kk94F zN!noz?7Y`#35pOSU|66h*=~j0Pm4=s&%}pst(N!ZdGM?H&6!UH*ohmQDSePj6i>qv z#OEV#U|7718c0;WOM0U)WPf7l_Uh69RSOTZ(TUPf+f#2Rav+$iiSO!zX~U1m`v-oq zn!T=4AHt5QWZ4UL<7R3`=@s9Gfa5IA&DksB$2K-JNSpPU(sde6%@+@Hq3lt|w)&$P zX()Yu#itjtixJi|YRAEBns7}C-=1Fa@q*my^oBjkv}e&2hsLYi-B+W(Xyd;N2#F4b zSuzl*xwR1EoQ~iwbe)C~F+2-|%O`sh!bOk^VFUXq)tN0VDWfDk#OLI$ETmuF;V}G_ zwk_~6%$4JklTJzgt*cWsTXr*Y=r=B^#wgu2JngU|FDHW8EGAeC0Dfo6kPplp>3LTP zq-gIh4YeGjmCJo^fhw*Yd!0ucx}vZk(&WI(CzR9LN>`^M#q`lRord%C#v#YN_Q?h4 zDfVoXx>#@7@G)b|c|P*E{`T^_aFHhV*GAvl-O)vjfWEH1b?Xm4tooieznS8LTXq?5 z)Wn9yqFmD43!K?9Z&QD~kFtU!3D`|{i2uCitGc~cD471P3&-}b-I+)S`}V6*Y7FsFeeWW85v+9m+NaL8M!g|n1yTlJFH zqaGZ%fQz6zve#{Cyy`11GVLYMr22ya`TwGDT9U&b&fb`ll^I-hULiUDO;FZ_%e8BJ z5;_JN^MZ)aHvV7(E|Tmo;Z;2oVU}K2p9Ql-Kh2rkG*NNNWH+>haKn++`}yklQD)U; zx09)=3G1}jS3M<=oa&Tlt9b>Ni@PX4eu_sdf$7OBD$k9;%fA;QOeTH@x6gK&Uzv{W zwcNxEn>MSa%lT{3o6fgTlT8E;HIIJ_99ys(2ZaByi7zFH1!5P!5-O?68tiK{s~4a@ z_Jvcu<;jI<1s_Bd7r6WyxeU$uN3!0Sd^Lc5FWX7uV~PwR?|-J7pU2h^0(dRt`;y5a znqLsXPOS9i%!VzVspT?2hVEEBp->63e~j5_Fo$P`%K)SF))(o$qqX`=RAd*I!y8Rm zn1M}hyuH-4xg0erWg6Bz(Shk=Sh0Hc=tj9uJ}!AJG|74p3UGp3NT{)Or@++bjQ>v@ z>n>|bDierMShfiaUp#3SlUV)%mgQQL3zK^h-+#SIRU8Uvyy!}tg?26!S)l7-S$LIA z8ftZ?jub-JWxS?Ad{`v9Em+wSZ{IWGMFyMQyflkRPTK}$xV>M3*2)<@Bk7vFZ8~*@ zet2|x-&gEc#o4#a^X-l#cgwL&z%RF%%*p1a7SiHzfD_>r(9^IsYA11qv2z~?ZSazF zvEh_l3g>tft@T1(h>8OfQU}Bi?`gQX_ABp(H87Q(X$t zI1){qR{ONU!uj|lv=@J})6OM7S$m=IcyLE9yY^R#2bsu{zU6${GA*ZCNfYQ(dLtvl zuLX1<)|moa49Sz$NXq)WR|Qei!&kNX%El}{K-$;hUIoe|R)zbqCmwtH8^wq|=w?k( zRDcJZ1YO00yr4`@g3ndxMyROWfP zZ2#a`lP+n6ui@}yAq0c$6HJr2N&>YndVNvC+Qw*%SLBP-Bz?5%ca|k-!gCZ86Lt?O zjz=*1wI5f^U(Ux5ldV0`O!Cb4y1_Xo6gY-Bdxf;utW{J@I40Qs{VYgShho}x?^asV z4srA^D^U*Dh!~y19BW;V)45x}gBj7j`j^=ysFPh921m4Ky%u-kZTcHJrnJPf_1Ze5 z@JDphDl2*n5omCW1Q>_)3mpTJ*E|$%iVa+w?k-K-45e<)b}XuZa6)N(s|m-$m=%2Y zBa^A0teO6^1wg3t$&T{9aJEaYLhx~$wJO>FKf|p=X51BBcs)I!U1_{kNcSkZkh&v& zDDR(AH0C)|t#u|9Qkbh|(rg+rvi+9F6fIri=uPI`1L1-#E|0R?XL}7K|EE*6Gq#>+ zm7W}WT?GwZ(rR8QzC}F?l(P`gnS%{F~obSPpf|=-D$Z;DLdrLl6A{ z{#Lv6Bc`s@iK>vUJ`mc{7dMWvS)8-(&=X-I=)aM5Bv`OyRDjD_H2Ug1vI8aiRH9eK zBZm+s)-4rGzUG$67rKQjSobBxg7V{`r4l$uAW9u)Iwy{zTZd}p z&1PyLRKX9I@wqx(TuW;N0mtq-crddZ>*TY{Fe@7VcR?RFPH}-*E3Fgb z=&11k8v@OxjY4j2F033R96vU!bw+3N-Zw&4- zfTgayF`D7L$rqL@Vazyjua6iuNUDww1Pf{{4iTv1l()@<>WgqXOeP4@UG+&%(Bu)Y zrND~y@>Yk%dE$$t$Aji1{|Qyck?L5iMEw`5)cjZfJB=>#*=9_ACB>j6GT_g6N|GDC zeQ|7uaAv_#l?F_{q8T&U(5BF?>+HdPQxY`rU)@S4EYB7ijr!+03PUxvu|NH`wxJSw z`^0u|Mq_rcWz!lNLJMp5Ib2o$A5&yn@OJ{=tTst10V!h}lWGy@g4x*F*gZ<@m;JDus6<3%r9uY(<6jUL)e!KBFjs_+z^B zIrLHoid(j%!~>Z=o@PA*!BgYs9i#sP;o%CjZdb(|I89xfC8-gkT^jzAEdQ|F0qXoc z5p?tV_=UQ(Ux-mcdpJUBv=j8%|7Dn1k(Vn8ed$-F-Hr3qP5q4oH!kyI!iDfSuD-a? zqu|M<*OGS{zJ?uD0etsN%1}~i)qktV!@&Icgh${hcoV8JHm#Wa3?I@q<5_UKemAq8 z)m~%SE8Z8mjp$Fp#UPgAa91}_6k5M!t;SibxG*%GIGkau^7W|_PBHNNe6yXXn^7H_ ztvtvgNL}B^;yDE7*`A z6Jo*p6MI`pGRzW6gAHVX$G|}8B5ZMOCBhZs$z~Roxr+)6j3>o(O4ir6*l>6EnKtN$ z&4i?Z7R#cfP*m%6v1U`v><8>1L4N1JFBKIj%`)gID2Zg{ubvFgJqN7hijo5Ci|`--$c zQ|fc6aIQ)*HWz`0Tnl>TI9^ z!ZV#H?l&kcGnBBK;bndmc{@0@sp2)GtT#D$tmu-{?ieGzRX)eBSO~UU#OrJI#%1J+ zaF-g@1D$;$*;#=t-vD{?uodWk%n*aLl1Xr*i&gn{!?+#KLtp;FNq}9(1CG}(j#ia> z$tsh!qWn*CH`z9R)8j1RBix4C_$xKt z;pJ#G5LC)BHm^7(|KyF1YJg*n?05SKmrnYYx7+8cJKGOYRAY~H9U>^_zsk$>a4fmH zGVyUrjzZJ;NHlz`q&X-iTqB`-+h!~>(tuG`G062#RYv!LwjucNvB z6DQsfb>i!$s9H7uJ_0N?6JDn&TgQL+7rW#o5h|OO*BT9yb_cGm_dHgEe&1DXlu7_I zd(36H_Gv2i&E`bcn#9HDlnq){eVTLI4q|rxN%LfwXViEK$+po>gLYlAOcp+IdlYo1 zFsaGwHIJ=7=W_dV@xK`Glm&m1&_=WqS=!znN4t1ocqrA!{v{cr|DE}3Dr6pikMmTs zgO{|^gyYhl-J}EQOr#sqW;sCAr*g$R^5ho2Wo8B=qhf z9Li(x{@$)9t0F|3CE}bV&;w#UptDqn8cFQhTWq+(w1X^RR&osecKSPbpvBTKG-BX$ z9;@C>?Nsae3%q@~rQ%QAR^GZl7d9p)i9>1=iVPCwfK8BS0R=XmM+Hg=femwH+$MBQ zkb!feMDCBKe8mhZiKqwt+kGj}d#fc&`(pKjm=g2gy6>YzX=U5i-wvOy;vejqz9;Zo zD2eA~jAVI_`QNN$UF57wK)#LLJ*@%0U{U#32k=&L(SB;H`vc~-*SMJfD?$J0ntOU> zEm))Wd8t;Y0spu>b#95YFm+5eo=*8%O86QC-YRpo1CNSb^!O*?>Uv`xt`m`JXn9rX zG0mTP6fYY_uSh`S_=Z+GVacel9UwG90PI)oWgzARpWqm--pjFNu6na{(rnGV?h!16 z%2+y^){hrK=gj;L)ms1K0Bgrhi6&Z1R@n>XDS~--Sd_8{g5YNyE{ZB5K_@h^j~O%E zByHG?96BX&4og}hrf;pdfc;o5ynEPPxEb-Rm4UVwlZaV-#e&65pS@hPcGs4D(cFLP zSPz{po&4n|&&9|OI`8UT+A&Qki%|}pFcj9cRhqBmfUd)r5Q?>CXmL1leTs)riW31I z3L@~>1LIn$wS7SH>l zXx>dP&37wTzrYu$=F-10Tv1`Y2TSYdlB8JpGBX$qmEQgSg#UU~)Zd?M->dMx#oI)+ zOx~Dl)2LvMj7O|SJV}+9Lxj)tt3{E9%l`zkSSe6-4R&1cnfqtOsplL{UFj zv1r)JtrfbpDW>z9F{^~0;N8ER%ufiKC{48In$t?+RT<}Nm^___`Dg-PxqLo*_9r0O zpNE`Haq62XddZ%W9C4u|LD!If{2aLdg0G#%spA|)Fju>427U7(>?U-mx3-Z`A9p@p z(7rgesn4$X!jeI1J@;yOb4$u3AzKI1;W+Q=JS8ev>XGLviL&}2tuZY8?=0sQ%t&X; z212S;VH4lN+GtUcj|2>oO=lwT6Ya%p)5>qmo9bh6Vab03O@;(DPBd+*xiCT)WABcwE>@=v7_67*aFxS<&-$;CcK?0nwkl#|@# zPz?Cz;E0I<7V_HJko|Cgh3V`uR9RzTx0fZv?O*4?#3Z5O5muR|?sSV$WxjF_cpnof zY2VKQSEtz~fw+3xN&9@B^~N*e9R~nwtYKb_{3j(+6y_Ltd7G$=KXbOZUP>>@pTl8F z*saadpx;;t?Yhk*hH$gtz_PRokt4Y?sgb>Lj2@0!VuDZKZe;TIqr6$dzt)A%^vZ+e zNJL?UFU}@UcbK=(@Z6ps&DbmD-28|#FTu%#Xu5d;v{f7-!?^PAep->|;r*3VFZ=WN zJFqx9+iEsEu5SXip(pG%gUMt1eL_i?0>PUX=RjVamJ34(sXKGeCTj{*h;Lq zA2?3Vp^3MR?e#L}(amg)m;w81%nGCDQ>EuvG|sg$R%kzqXMQ1o=ZQ!=-AWAa14FF`ZgPOG5E8;9l22Se*; z&4o?_9}6avYuPK2h0{;b>pHCOOc8jb1`Zo2CeS{!T0OlVR1Gp6$An0rv4fA%HChV^Wi)m1W&`%pL0`%+HQZ)>e$b0=*)y=PeP=Th;~W_zR95ab z!~KRGCQ>6aem101?|@uuGCAKD3tgE9@&Pt#f>tYma>lTHafVS;lx)YS8JlyQERmic z4T=VJ0M2h+E@<=fVb?SN`RLf|z7|_LTMCj%W$F+Y**-dGJAXXW3t?LE7N9P}7VKc2hs;Qi}Baz+S%Wh9a!lL^DJZnh1Ja0u6Kq$k;BK#olN?6jaCH?zw8S2x z)U5c*F7W}~r(k0Dj%Vx{Z~Y|a(CBdnsR@F&uzsjv|2`3K1D&JWYZ zsekT)Dc@U6fCnl7zpDj7EItF=Zj_)0PuR-TE9O>h&!yz>BG$ zc4>0TC8ur+TG3P`9Zw27=m(ZWJd|)x2n>y&x=OU53Z$cN$H$?4CzTZ)oh4F=O2L;J z%V&IDVL)VlPGo(aR1y!d1&$U25*<>A>IL`Pl74kFifQ*XJB^J;>*T-gRAz4dm@yQc z!Ew}2y3fX_B64H6eJ@a&BEaD|I3d4e%2wULA + +## Exporting scripts from Plutus + +Usually projects use a Haskell binary called *exporter* that outputs a pre-compiler UPLC bundle into a file, for example see [our Plutarch exporter from the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold/tree/main/onchain). + +A simpler exporter for Plutus can be found [here](https://github.com/Mr-Andersen/ctl-multisign-mre/blob/main/onchain/exporter/Main.hs). + +The output file should be a Cardano envelope: + +```json +{ + "cborHex": "4e4d01000033222220051200120011", + "description": "always-succeeds", + "type": "PlutusScriptV2" +} +``` + +### Using Plutonomy + +When using Plutus, it makes sense to use [Plutonomy](https://github.com/well-typed/plutonomy) in the exporter: + +```haskell +import Plutonomy (aggressiveOptimizerOptions, optimizeUPLCWith) + +script :: Script +script = fromCompiledCode $ + optimizeUPLCWith aggressiveOptimizerOptions $$(PlutusTx.compile [||policy||]) +``` + ## Importing serialized scripts To use your own scripts, compile them to any subdirectory in the root of your project (where `webpack.config.js` is located) and add a relative path to `webpack.config.js` under the `resolve.alias` section. In CTL, we have the `Scripts` alias for this purpose. Note the capitalization of `Scripts`: it is necessary to disambiguate it from local folders. diff --git a/esbuild/config.js b/esbuild/config.js index 0b32adc2a..a53bdb2c1 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -6,7 +6,6 @@ export const buildOptions = { outdir: "dist/esbuild", define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - SCRIPTS_DIR: '"fixtures/scripts"', }, plugins: [ polyfillNode({ diff --git a/examples/Helpers/LoadScript.js b/examples/Helpers/LoadScript.js deleted file mode 100644 index 464abe289..000000000 --- a/examples/Helpers/LoadScript.js +++ /dev/null @@ -1,12 +0,0 @@ -/* global BROWSER_RUNTIME SCRIPTS_DIR */ - -export const _loadScript = path => async () => { - if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - const response = await fetch(`${SCRIPTS_DIR}/${path}`); - return await response.text(); - } else { - const fs = await import("fs"); - const url = new URL(`../../fixtures/scripts/${path}`, import.meta.url); - return fs.readFileSync(url, "utf8"); - } -}; diff --git a/examples/Helpers/LoadScript.purs b/examples/Helpers/LoadScript.purs deleted file mode 100644 index 7ecec45f7..000000000 --- a/examples/Helpers/LoadScript.purs +++ /dev/null @@ -1,14 +0,0 @@ -module Ctl.Examples.Helpers.LoadScript - ( loadScript - ) where - -import Prelude - -import Control.Promise (Promise, toAffE) -import Effect (Effect) -import Effect.Aff (Aff) - -foreign import _loadScript :: String -> Effect (Promise String) - -loadScript :: String -> Aff String -loadScript filepath = toAffE $ _loadScript filepath diff --git a/examples/index.html b/examples/index.html index 3247c9a06..556bfcde5 100644 --- a/examples/index.html +++ b/examples/index.html @@ -5,6 +5,66 @@ + diff --git a/examples/index.js b/examples/index.js index dcda6a63b..2ea8c88a3 100644 --- a/examples/index.js +++ b/examples/index.js @@ -6,62 +6,3 @@ // imported here. From the repository root, run: // spago bundle-module -m

--to output.js import("../output.js").then(m => m.main()); - -// Set up Blockfrost API key prompt and UI around it. -// This code is only needed for CTL itself. -const oldBlockfrostKey = localStorage.getItem("BLOCKFROST_API_KEY"); - -const addSpacer = () => { - const spacer = document.createElement("span"); - spacer.textContent = " "; - document.body.appendChild(spacer); -}; - -const addHtml = html => { - const div = document.createElement("div"); - div.innerHTML = html; - document.body.appendChild(div); -}; - -addHtml(`

Blockfrost setup

`); - -if (oldBlockfrostKey !== null) { - const keyIsSetEl = document.createElement("span"); - keyIsSetEl.innerHTML = - '✅
Blockfrost key is set.'; - document.body.appendChild(keyIsSetEl); - - addSpacer(); - - const setBFKeyButton = document.createElement("button"); - setBFKeyButton.textContent = "Unset"; - setBFKeyButton.onclick = () => { - localStorage.removeItem("BLOCKFROST_API_KEY"); - window.location = "/"; - }; - document.body.appendChild(setBFKeyButton); -} else { - const keyIsNotSetEl = document.createElement("span"); - keyIsNotSetEl.innerHTML = - '❌ Blockfrost key is not set.'; - document.body.appendChild(keyIsNotSetEl); - - addSpacer(); - - const setBFKeyButton = document.createElement("button"); - setBFKeyButton.textContent = "Set Blockfrost API key"; - setBFKeyButton.onclick = () => { - const key = prompt("Enter your Blockfrost API key"); - if (key !== null) { - localStorage.setItem("BLOCKFROST_API_KEY", key); - window.location = "/"; - } - }; - document.body.appendChild(setBFKeyButton); -} - -addHtml(`
To set the Blockfrost API key permanently, close the browser and run: -
-    npm run e2e-pack-settings
-  
- The key will be saved to your settings archive. Sharing the archive file after that implies that the key can be leaked.
`); diff --git a/package-lock.json b/package-lock.json index 6dad1eafd..eb4c6d8c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -63,6 +63,16 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, + "node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + }, + "node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", @@ -430,9 +440,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -458,19 +468,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jspm/core": { @@ -486,33 +496,23 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", - "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", + "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser/node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" - }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", - "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", + "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" - }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", @@ -527,20 +527,20 @@ } }, "node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/secp256k1": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", - "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", "funding": [ { "type": "individual", @@ -549,18 +549,18 @@ ] }, "node_modules/@textlint/ast-node-types": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", - "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", + "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", "dev": true }, "node_modules/@textlint/markdown-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", - "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", + "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.6.1", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "remark-footnotes": "^3.0.0", @@ -571,29 +571,6 @@ "unified": "^9.2.2" } }, - "node_modules/@textlint/markdown-to-ast/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@textlint/markdown-to-ast/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -623,9 +600,9 @@ } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -633,9 +610,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -643,9 +620,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -659,26 +636,27 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/html-minifier-terser": { @@ -687,28 +665,34 @@ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", "dev": true, "dependencies": { - "@types/unist": "*" + "@types/unist": "^2" } }, "node_modules/@types/mime": { @@ -718,9 +702,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "version": "20.4.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.9.tgz", + "integrity": "sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==", "devOptional": true }, "node_modules/@types/qs": { @@ -741,6 +725,16 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -751,12 +745,13 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/http-errors": "*", + "@types/mime": "*", "@types/node": "*" } }, @@ -770,9 +765,9 @@ } }, "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", "dev": true }, "node_modules/@types/ws": { @@ -1052,27 +1047,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1107,9 +1081,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -1168,9 +1142,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -1344,6 +1318,19 @@ "ieee754": "^1.1.13" } }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", @@ -1356,9 +1343,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -1369,7 +1356,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -1388,6 +1375,36 @@ "node": ">= 0.8" } }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour-service": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", @@ -1497,6 +1514,20 @@ "safe-buffer": "^5.2.0" } }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -1507,9 +1538,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", - "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "funding": [ { @@ -1519,13 +1550,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001358", - "electron-to-chromium": "^1.4.164", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.0" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -1629,9 +1664,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001358", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true, "funding": [ { @@ -1641,6 +1676,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -1736,9 +1775,9 @@ } }, "node_modules/clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -1762,9 +1801,9 @@ } }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { @@ -1806,6 +1845,21 @@ "node": ">= 0.8.0" } }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1851,9 +1905,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { "node": ">= 0.6" @@ -1996,12 +2050,19 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/default-gateway": { @@ -2026,9 +2087,9 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", @@ -2051,9 +2112,9 @@ } }, "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -2077,9 +2138,9 @@ "dev": true }, "node_modules/devtools-protocol": { - "version": "0.0.1011705", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", - "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" }, "node_modules/diffie-hellman": { "version": "5.0.3", @@ -2133,37 +2194,6 @@ "doctoc": "doctoc.js" } }, - "node_modules/doctoc/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/doctoc/node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -2187,6 +2217,15 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domain-browser": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", @@ -2257,9 +2296,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.167", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "version": "1.4.490", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", + "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", "dev": true }, "node_modules/elliptic": { @@ -2320,10 +2359,13 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -2340,66 +2382,12 @@ "node": ">=4" } }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", @@ -2605,16 +2593,28 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", "cookie-signature": "1.0.6", @@ -2632,7 +2632,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -2653,6 +2653,36 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2678,41 +2708,6 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2726,9 +2721,9 @@ "dev": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", - "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "engines": { "node": ">= 4.9.1" @@ -2806,6 +2801,21 @@ "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2819,9 +2829,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -2880,9 +2890,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", "dev": true }, "node_modules/fs.realpath": { @@ -2910,73 +2920,33 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "pump": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { @@ -3016,10 +2986,22 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/handle-thing": { @@ -3040,15 +3022,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3070,6 +3043,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -3111,6 +3096,20 @@ "node": ">=4" } }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -3154,9 +3153,9 @@ } }, "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -3184,10 +3183,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-minifier-terser": { "version": "6.1.0", @@ -3234,9 +3243,9 @@ } }, "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -3247,9 +3256,9 @@ ], "dependencies": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, "node_modules/http-deceiver": { @@ -3275,9 +3284,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy": { @@ -3318,6 +3327,18 @@ } } }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -3336,27 +3357,6 @@ "node": ">= 6" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3440,20 +3440,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -3464,9 +3450,9 @@ } }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true, "engines": { "node": ">= 10" @@ -3512,18 +3498,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3536,22 +3510,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -3576,9 +3534,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -3588,9 +3546,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -3599,21 +3557,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-decimal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", @@ -3701,18 +3644,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3722,31 +3653,13 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/is-plain-object": { @@ -3761,34 +3674,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3801,47 +3686,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -3850,18 +3701,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -4186,12 +4025,12 @@ } }, "node_modules/memfs": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", - "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -4344,29 +4183,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/micromark/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -4465,10 +4281,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -4476,10 +4295,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -4538,25 +4356,6 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -4567,9 +4366,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -4615,26 +4414,10 @@ "webpack": ">=5" } }, - "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-path": { @@ -4671,9 +4454,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4699,27 +4482,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, + "dev": true, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { @@ -4773,9 +4538,9 @@ } }, "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -5090,22 +4855,22 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/puppeteer-core": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", - "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.5.0.tgz", + "integrity": "sha512-5Q8EmF++MARczJD1JcRehVePlctxGG2TFHSxdCV8NqPOk44/cMySmZw2nETn+lwUOyp0L9afosMFTnT4KgmWgw==", "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1011705", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", @@ -5120,27 +4885,6 @@ "node": ">=14.1.0" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/puppeteer-core/node_modules/ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", @@ -5162,9 +4906,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -5176,16 +4920,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", @@ -5248,16 +4982,19 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/readdirp": { @@ -5289,23 +5026,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -5383,6 +5103,34 @@ "strip-ansi": "^6.0.1" } }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -5408,12 +5156,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5563,6 +5311,21 @@ "node": ">= 0.8.0" } }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5596,6 +5359,15 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -5626,6 +5398,12 @@ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -5803,52 +5581,20 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -5868,6 +5614,20 @@ "readable-stream": "^3.5.0" } }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/stream-http": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", @@ -5880,40 +5640,26 @@ "xtend": "^4.0.2" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 6" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "safe-buffer": "~5.2.0" } }, "node_modules/strip-ansi": { @@ -5999,10 +5745,23 @@ "node": ">=6" } }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -6101,6 +5860,11 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/traverse": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", @@ -6121,9 +5885,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true }, "node_modules/tty-browserify": { @@ -6157,21 +5921,6 @@ "node": ">= 0.6" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -6228,15 +5977,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/uniqid": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", @@ -6289,9 +6029,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", - "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -6301,6 +6041,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -6308,7 +6052,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -6330,32 +6074,31 @@ } }, "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", "dev": true, "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.0" } }, "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } }, @@ -6455,6 +6198,11 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "node_modules/webpack": { "version": "5.88.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", @@ -6580,9 +6328,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -6614,15 +6362,15 @@ "dev": true }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -6692,9 +6440,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -6726,15 +6474,15 @@ "dev": true }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -6766,9 +6514,9 @@ } }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -6810,6 +6558,15 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6825,34 +6582,17 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -6862,9 +6602,9 @@ } }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/wrappy": { @@ -6946,6 +6686,16 @@ "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz", "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, + "@emurgo/cardano-serialization-lib-browser": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + }, + "@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", + "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + }, "@esbuild/android-arm": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", @@ -7112,9 +6862,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, "@jridgewell/set-array": { @@ -7134,19 +6884,19 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@jspm/core": { @@ -7162,35 +6912,21 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", - "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", + "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - }, - "dependencies": { - "@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" - } } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", - "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", + "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - }, - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" - } } }, "@mlabs-haskell/csl-gc-wrapper": { @@ -7207,28 +6943,28 @@ } }, "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" }, "@noble/secp256k1": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", - "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==" + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" }, "@textlint/ast-node-types": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", - "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", + "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", "dev": true }, "@textlint/markdown-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", - "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", + "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.6.1", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "remark-footnotes": "^3.0.0", @@ -7237,23 +6973,6 @@ "remark-parse": "^9.0.0", "traverse": "^0.6.7", "unified": "^9.2.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@types/body-parser": { @@ -7285,9 +7004,9 @@ } }, "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", "dev": true, "requires": { "@types/express-serve-static-core": "*", @@ -7295,9 +7014,9 @@ } }, "@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "requires": { "@types/estree": "*", @@ -7305,9 +7024,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -7321,26 +7040,27 @@ "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/html-minifier-terser": { @@ -7349,28 +7069,34 @@ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", "dev": true, "requires": { "@types/node": "*" } }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", "dev": true, "requires": { - "@types/unist": "*" + "@types/unist": "^2" } }, "@types/mime": { @@ -7380,9 +7106,9 @@ "dev": true }, "@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "version": "20.4.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.9.tgz", + "integrity": "sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==", "devOptional": true }, "@types/qs": { @@ -7403,6 +7129,16 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -7413,12 +7149,13 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/http-errors": "*", + "@types/mime": "*", "@types/node": "*" } }, @@ -7432,9 +7169,9 @@ } }, "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", "dev": true }, "@types/ws": { @@ -7672,21 +7409,6 @@ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "ajv": { @@ -7711,9 +7433,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -7759,9 +7481,9 @@ "dev": true }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -7886,6 +7608,16 @@ "base64-js": "^1.3.1", "ieee754": "^1.1.13" } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -7901,9 +7633,9 @@ "dev": true }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -7914,7 +7646,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -7925,6 +7657,30 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -8032,6 +7788,19 @@ "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "browserify-zlib": { @@ -8044,15 +7813,15 @@ } }, "browserslist": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", - "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001358", - "electron-to-chromium": "^1.4.164", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.0" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" } }, "buffer": { @@ -8123,9 +7892,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001358", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true }, "ccount": { @@ -8190,9 +7959,9 @@ } }, "clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -8210,9 +7979,9 @@ } }, "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { @@ -8245,6 +8014,21 @@ "vary": "~1.1.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -8286,9 +8070,9 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "cookie": { @@ -8412,12 +8196,11 @@ "dev": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, "default-gateway": { @@ -8436,9 +8219,9 @@ "dev": true }, "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "requires": { "has-property-descriptors": "^1.0.0", @@ -8452,9 +8235,9 @@ "dev": true }, "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -8474,9 +8257,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1011705", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", - "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" }, "diffie-hellman": { "version": "5.0.3", @@ -8524,26 +8307,6 @@ "minimist": "^1.2.6", "underscore": "^1.13.2", "update-section": "^0.3.3" - }, - "dependencies": { - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - } } }, "dom-converter": { @@ -8564,6 +8327,14 @@ "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } } }, "domain-browser": { @@ -8615,9 +8386,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.167", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "version": "1.4.490", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", + "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", "dev": true }, "elliptic": { @@ -8674,9 +8445,9 @@ } }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true }, "envinfo": { @@ -8685,54 +8456,12 @@ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, "es-module-lexer": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", @@ -8885,17 +8614,25 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -8914,7 +8651,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -8931,6 +8668,30 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -8949,29 +8710,6 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "fast-deep-equal": { @@ -8987,9 +8725,9 @@ "dev": true }, "fastest-levenshtein": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", - "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, "fault": { @@ -9046,6 +8784,23 @@ "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, "find-up": { @@ -9058,9 +8813,9 @@ } }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "for-each": { @@ -9096,9 +8851,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", "dev": true }, "fs.realpath": { @@ -9119,49 +8874,24 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" } }, "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "pump": "^3.0.0" } }, "glob": { @@ -9192,10 +8922,19 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "handle-thing": { @@ -9213,12 +8952,6 @@ "function-bind": "^1.1.1" } }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9234,6 +8967,12 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -9258,6 +8997,19 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "hash.js": { @@ -9300,9 +9052,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -9332,9 +9084,9 @@ } }, "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, "html-minifier-terser": { @@ -9366,15 +9118,15 @@ } }, "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "requires": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, "http-deceiver": { @@ -9397,9 +9149,9 @@ } }, "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { @@ -9424,6 +9176,14 @@ "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + } } }, "https-browserify": { @@ -9439,21 +9199,6 @@ "requires": { "agent-base": "6", "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "human-signals": { @@ -9501,21 +9246,10 @@ "wrappy": "1" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "interpret": { "version": "3.1.1", @@ -9524,9 +9258,9 @@ "dev": true }, "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true }, "is-alphabetical": { @@ -9555,15 +9289,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -9573,16 +9298,6 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -9590,29 +9305,20 @@ "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { "has": "^1.0.3" } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-decimal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", @@ -9665,31 +9371,16 @@ "define-properties": "^1.1.3" } }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-plain-object": { @@ -9701,69 +9392,19 @@ "isobject": "^3.0.1" } }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, "is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "which-typed-array": "^1.1.11" } }, "is-wsl": { @@ -10014,12 +9655,12 @@ "dev": true }, "memfs": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", - "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "requires": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" } }, "merge-descriptors": { @@ -10048,23 +9689,6 @@ "requires": { "debug": "^4.0.0", "parse-entities": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "micromark-extension-footnote": { @@ -10217,9 +9841,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "mkdirp-classic": { @@ -10228,10 +9852,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "7.2.5", @@ -10271,27 +9894,6 @@ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } } }, "node-forge": { @@ -10301,9 +9903,9 @@ "dev": true }, "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" }, "node-polyfill-webpack-plugin": { "version": "2.0.1", @@ -10336,27 +9938,12 @@ "url": "^0.11.0", "util": "^0.12.4", "vm-browserify": "^1.1.2" - }, - "dependencies": { - "readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } } }, "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -10384,9 +9971,9 @@ } }, "object-inspect": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "object-is": { @@ -10405,18 +9992,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -10456,9 +10031,9 @@ } }, "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -10716,19 +10291,19 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "puppeteer-core": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", - "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.5.0.tgz", + "integrity": "sha512-5Q8EmF++MARczJD1JcRehVePlctxGG2TFHSxdCV8NqPOk44/cMySmZw2nETn+lwUOyp0L9afosMFTnT4KgmWgw==", "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1011705", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", @@ -10740,19 +10315,6 @@ "ws": "8.8.0" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", @@ -10762,20 +10324,14 @@ } }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "requires": { "side-channel": "^1.0.4" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", @@ -10828,13 +10384,16 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } }, "readdirp": { @@ -10860,17 +10419,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -10927,6 +10475,26 @@ "htmlparser2": "^6.1.0", "lodash": "^4.17.21", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } } }, "repeat-string": { @@ -10948,12 +10516,12 @@ "dev": true }, "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "requires": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -11055,6 +10623,23 @@ "statuses": "2.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -11087,6 +10672,15 @@ "parseurl": "~1.3.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -11111,6 +10705,12 @@ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -11244,23 +10844,6 @@ "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "spdy-transport": { @@ -11277,20 +10860,16 @@ "wbuf": "^1.7.3" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { - "ms": "2.1.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -11308,6 +10887,19 @@ "requires": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "stream-http": { @@ -11320,6 +10912,19 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "string_decoder": { @@ -11330,28 +10935,6 @@ "safe-buffer": "~5.2.0" } }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -11409,12 +10992,24 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -11479,6 +11074,11 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "traverse": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", @@ -11492,9 +11092,9 @@ "dev": true }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true }, "tty-browserify": { @@ -11519,18 +11119,6 @@ "mime-types": "~2.1.24" } }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -11569,14 +11157,6 @@ "is-plain-obj": "^2.0.0", "trough": "^1.0.0", "vfile": "^4.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } } }, "uniqid": { @@ -11616,9 +11196,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", - "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -11641,34 +11221,33 @@ } }, "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", "dev": true, "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.0" }, "dependencies": { "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true } } }, "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } }, @@ -11748,6 +11327,11 @@ "minimalistic-assert": "^1.0.0" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "webpack": { "version": "5.88.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", @@ -11823,9 +11407,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -11850,15 +11434,15 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } @@ -11902,9 +11486,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -11929,15 +11513,15 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } }, "ws": { @@ -11950,9 +11534,9 @@ } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -11982,6 +11566,15 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -11991,37 +11584,23 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "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-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" } }, "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "wrappy": { diff --git a/package.json b/package.json index 2fb7fd727..aa6ebcf26 100755 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "unit-test": "spago run --main Test.Ctl.Unit", "plutip-test": "spago run --main Test.Ctl.Plutip", "staking-test": "spago run --main Test.Ctl.Plutip.Staking", - "e2e-serve": "spago bundle-module -m Ctl.Examples.ByUrl --to output.js && BROWSER_RUNTIME=1 webpack-dev-server --progress", - "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'e2e-test run'", - "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'e2e-test run --no-headless'", - "e2e-browser": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test browser'", - "e2e-pack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test pack'", - "e2e-unpack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'e2e-test unpack'", + "e2e-serve": "spago bundle-module -m Ctl.Examples.ByUrl --to output.js && make webpack-serve", + "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", + "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run --no-headless'", + "e2e-browser": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'browser'", + "e2e-pack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'pack'", + "e2e-unpack-settings": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'unpack'", "esbuild-bundle": "make esbuild-bundle", "esbuild-serve": "make esbuild-serve", "webpack-bundle": "make webpack-bundle", @@ -36,8 +36,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/packages.dhall b/packages.dhall index e2e7a9fcd..e6d85cbe5 100644 --- a/packages.dhall +++ b/packages.dhall @@ -233,7 +233,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" + , version = "db0d3c12348da576b28a18782df4ae5d7cc44408" } , noble-secp256k1 = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index fde48e59d..e7d589dab 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1363,11 +1363,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + version = "db0d3c12348da576b28a18782df4ae5d7cc44408"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; - sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + rev = "db0d3c12348da576b28a18782df4ae5d7cc44408"; + sha256 = "1ck1g9mrm8kclmzkrg9hbm97gbvjbk0dcqnzby0c38pc2dqa7xwf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index 077500fe5..ca6f2e542 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -6,7 +6,6 @@ export const buildOptions = { outdir: "dist/esbuild", define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - SCRIPTS_DIR: '"scripts"', }, plugins: [ polyfillNode({ diff --git a/templates/ctl-scaffold/index.html b/templates/ctl-scaffold/index.html index 443f25804..b8c10982c 100644 --- a/templates/ctl-scaffold/index.html +++ b/templates/ctl-scaffold/index.html @@ -5,6 +5,67 @@ + + diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index d25107c71..a3ce0e63a 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -33,13 +33,15 @@ }, "devDependencies": { "buffer": "6.0.3", + "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.0", - "webpack": "5.67.0", - "webpack-cli": "4.10", - "webpack-dev-server": "4.7.4" + "html-webpack-plugin": "5.5.3", + "node-polyfill-webpack-plugin": "2.0.1", + "webpack": "5.88.1", + "webpack-cli": "5.1.4", + "webpack-dev-server": "4.15.1" } }, "node_modules/@discoveryjs/json-ext": { @@ -62,9 +64,9 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", - "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { "version": "11.4.0", @@ -424,9 +426,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -438,9 +440,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -456,9 +458,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -466,19 +468,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jspm/core": { @@ -487,19 +489,25 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", - "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", + "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", - "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", + "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -519,20 +527,20 @@ } }, "node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/secp256k1": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", - "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", "funding": [ { "type": "individual", @@ -540,39 +548,27 @@ } ] }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } + "node_modules/@textlint/ast-node-types": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", + "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", + "dev": true }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@textlint/markdown-to-ast": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", + "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@textlint/ast-node-types": "^12.6.1", + "debug": "^4.3.4", + "mdast-util-gfm-autolink-literal": "^0.1.3", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.7", + "unified": "^9.2.2" } }, "node_modules/@types/body-parser": { @@ -604,9 +600,9 @@ } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -614,9 +610,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -624,9 +620,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -634,32 +630,33 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/html-minifier-terser": { @@ -668,21 +665,36 @@ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -690,9 +702,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "version": "20.4.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.9.tgz", + "integrity": "sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==", "devOptional": true }, "node_modules/@types/qs": { @@ -713,6 +725,16 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -723,12 +745,13 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/http-errors": "*", + "@types/mime": "*", "@types/node": "*" } }, @@ -741,10 +764,16 @@ "@types/node": "*" } }, + "node_modules/@types/unist": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", + "dev": true + }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "dependencies": { "@types/node": "*" @@ -760,180 +789,188 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -953,6 +990,18 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -967,9 +1016,9 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -979,9 +1028,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -998,40 +1047,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1066,9 +1081,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -1096,6 +1111,15 @@ "ajv": "^6.9.1" } }, + "node_modules/anchor-markdown-header": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", + "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", + "dev": true, + "dependencies": { + "emoji-regex": "~10.1.0" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -1118,9 +1142,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -1146,22 +1170,56 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", "dev": true, "dependencies": { - "lodash": "^4.17.14" + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/balanced-match": { @@ -1191,7 +1249,7 @@ "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "node_modules/big-integer": { @@ -1260,15 +1318,34 @@ "ieee754": "^1.1.13" } }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -1279,7 +1356,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -1298,24 +1375,52 @@ "node": ">= 0.8" } }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/brace-expansion": { @@ -1339,10 +1444,103 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "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" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", - "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "funding": [ { @@ -1352,13 +1550,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001358", - "electron-to-chromium": "^1.4.164", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.0" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -1405,10 +1607,10 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "node_modules/bufferutil": { @@ -1423,10 +1625,16 @@ "node": ">=6.14.2" } }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "engines": { "node": ">= 0.8" @@ -1456,9 +1664,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001358", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true, "funding": [ { @@ -1468,34 +1676,78 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/chownr": { @@ -1512,10 +1764,20 @@ "node": ">=6.0" } }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -1524,15 +1786,6 @@ "node": ">= 10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1548,9 +1801,9 @@ } }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { @@ -1592,6 +1845,21 @@ "node": ">= 0.8.0" } }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1604,14 +1872,26 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { "node": ">=0.8" } }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1625,9 +1905,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { "node": ">= 0.6" @@ -1645,7 +1925,7 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "node_modules/core-util-is": { @@ -1654,6 +1934,49 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "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" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -1676,6 +1999,28 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -1705,29 +2050,19 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "ms": "2.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/default-gateway": { @@ -1752,9 +2087,9 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", @@ -1767,28 +2102,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1798,6 +2111,16 @@ "node": ">= 0.8" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -1815,22 +2138,27 @@ "dev": true }, "node_modules/devtools-protocol": { - "version": "0.0.1011705", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", - "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -1838,22 +2166,32 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "node_modules/doctoc": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", + "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@textlint/markdown-to-ast": "^12.1.1", + "anchor-markdown-header": "^0.6.0", + "htmlparser2": "^7.2.0", + "minimist": "^1.2.6", + "underscore": "^1.13.2", + "update-section": "^0.3.3" + }, + "bin": { + "doctoc": "doctoc.js" } }, "node_modules/dom-converter": { @@ -1879,6 +2217,27 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -1937,9 +2296,36 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.167", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "version": "1.4.490", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", + "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "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" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", "dev": true }, "node_modules/encodeurl": { @@ -1960,9 +2346,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1973,18 +2359,21 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -1994,9 +2383,15 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", "dev": true }, "node_modules/esbuild": { @@ -2077,6 +2472,18 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -2129,6 +2536,15 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -2144,6 +2560,16 @@ "node": ">=0.8.x" } }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -2167,15 +2593,27 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -2194,7 +2632,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -2215,82 +2653,67 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "ms": "2.0.0" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=6.0" + "node": ">=0.6" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dependencies": { - "pump": "^3.0.0" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=8" + "node": ">= 10.17.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2298,21 +2721,25 @@ "dev": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", - "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "engines": { "node": ">= 4.9.1" } }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/faye-websocket": { @@ -2347,6 +2774,15 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -2365,6 +2801,21 @@ "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2378,9 +2829,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -2397,6 +2848,24 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2421,9 +2890,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", "dev": true }, "node_modules/fs.realpath": { @@ -2451,36 +2920,30 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2523,30 +2986,22 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "get-intrinsic": "^1.1.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/handle-thing": { @@ -2588,6 +3043,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -2615,6 +3082,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2624,6 +3129,17 @@ "he": "bin/he" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -2637,9 +3153,9 @@ } }, "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -2667,10 +3183,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-minifier-terser": { "version": "6.1.0", @@ -2694,9 +3220,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -2717,9 +3243,9 @@ } }, "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -2730,9 +3256,9 @@ ], "dependencies": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, "node_modules/http-deceiver": { @@ -2758,9 +3284,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy": { @@ -2801,6 +3327,24 @@ } } }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2813,27 +3357,6 @@ "node": ">= 6" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -2874,15 +3397,6 @@ } ] }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -2912,15 +3426,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2936,29 +3441,47 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true, "engines": { "node": ">= 10" } }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -2987,26 +3510,34 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { "node": ">= 0.4" }, @@ -3014,6 +3545,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -3038,6 +3591,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3050,43 +3618,48 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, - "engines": { - "node": ">=0.12.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/is-plain-object": { @@ -3101,22 +3674,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3129,6 +3686,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -3176,10 +3748,10 @@ "node": ">= 10.13.0" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "node_modules/json-schema-traverse": { @@ -3205,6 +3777,16 @@ "node": ">=0.10.0" } }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -3231,6 +3813,16 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -3240,6 +3832,189 @@ "tslib": "^2.0.3" } }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "dependencies": { + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3250,12 +4025,12 @@ } }, "node_modules/memfs": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", - "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -3273,22 +4048,139 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "dependencies": { + "fault": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", "dev": true, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/micromatch": { @@ -3304,6 +4196,25 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -3352,6 +4263,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3364,21 +4281,12 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp-classic": { @@ -3387,30 +4295,23 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3455,25 +4356,6 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -3484,19 +4366,58 @@ } }, "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "dev": true, + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.22.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^4.0.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, "node_modules/node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-path": { @@ -3533,9 +4454,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3617,9 +4538,9 @@ } }, "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -3633,6 +4554,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -3658,21 +4585,6 @@ "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", @@ -3694,6 +4606,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -3704,6 +4622,37 @@ "tslib": "^2.0.3" } }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3723,6 +4672,12 @@ "tslib": "^2.0.3" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3760,13 +4715,20 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, "engines": { - "node": ">=8" + "node": ">=0.12" } }, "node_modules/pend": { @@ -3803,35 +4765,6 @@ "node": ">=8" } }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -3842,6 +4775,15 @@ "renderkid": "^3.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3883,6 +4825,26 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -3893,22 +4855,22 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/puppeteer-core": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", - "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.5.0.tgz", + "integrity": "sha512-5Q8EmF++MARczJD1JcRehVePlctxGG2TFHSxdCV8NqPOk44/cMySmZw2nETn+lwUOyp0L9afosMFTnT4KgmWgw==", "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1011705", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", @@ -3923,27 +4885,6 @@ "node": ">=14.1.0" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/puppeteer-core/node_modules/ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", @@ -3965,9 +4906,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -3979,25 +4920,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "engines": { + "node": ">=0.4.x" + } }, "node_modules/randombytes": { "version": "2.1.0", @@ -4008,6 +4938,16 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4042,16 +4982,19 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/readdirp": { @@ -4067,15 +5010,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/reconnecting-websocket": { @@ -4083,30 +5026,68 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "dev": true, + "dependencies": { + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", "dev": true, - "engines": { - "node": ">= 0.10" + "dependencies": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/renderkid": { @@ -4122,6 +5103,43 @@ "strip-ansi": "^6.0.1" } }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -4138,12 +5156,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4184,16 +5202,6 @@ "node": ">= 4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4208,27 +5216,14 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "node_modules/safe-buffer": { @@ -4257,9 +5252,9 @@ "dev": true }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -4281,9 +5276,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -4316,6 +5311,21 @@ "node": ">= 0.8.0" } }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4323,9 +5333,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -4349,6 +5359,15 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -4379,6 +5398,12 @@ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -4409,12 +5434,31 @@ "node": ">= 0.8.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -4448,6 +5492,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -4468,15 +5521,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -4537,59 +5581,77 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">= 0.8" + "node": ">= 6" } }, "node_modules/string_decoder": { @@ -4683,14 +5745,27 @@ "node": ">=6" } }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -4702,16 +5777,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -4752,6 +5827,18 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4773,12 +5860,54 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -4824,11 +5953,72 @@ "ieee754": "^1.1.13" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/uniqid": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -4839,9 +6029,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", - "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -4851,6 +6041,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -4858,12 +6052,18 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, + "node_modules/update-section": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", + "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", + "dev": true + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4873,6 +6073,35 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4902,19 +6131,55 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/vary": { + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vm-browserify": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -4933,35 +6198,40 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -4981,44 +6251,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -5028,12 +6296,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/webpack-dev-middleware": { @@ -5060,9 +6328,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5094,15 +6362,15 @@ "dev": true }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -5113,41 +6381,41 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", + "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.1.1", "serve-index": "^1.9.1", - "sockjs": "^0.3.21", + "sockjs": "^0.3.24", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -5155,19 +6423,26 @@ "engines": { "node": ">= 12.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } } }, "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5192,18 +6467,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -5211,15 +6474,15 @@ "dev": true }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -5229,32 +6492,17 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -5266,9 +6514,9 @@ } }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -5310,6 +6558,15 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5325,16 +6582,35 @@ "node": ">= 8" } }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.4.0", @@ -5364,6 +6640,15 @@ "node": ">= 6" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -5372,6 +6657,16 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } }, "dependencies": { @@ -5392,9 +6687,9 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.2.1.tgz", - "integrity": "sha512-J9Pmeta7y1GYnMCxtb3GnGCRw6zk1wiQ8EdCYQRn/Yqa/ss1zoBjd41euVi02Eb58aLuOJS81nNU+BcMLGXvUg==" + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", + "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" }, "@emurgo/cardano-serialization-lib-nodejs": { "version": "11.4.0", @@ -5556,9 +6851,9 @@ "optional": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -5567,9 +6862,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, "@jridgewell/set-array": { @@ -5579,9 +6874,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -5589,19 +6884,19 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@jspm/core": { @@ -5610,19 +6905,25 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.2.tgz", - "integrity": "sha512-hkfXjMy+GD4YMCM3ReXmlaZnWpMufx5NXoyYoyGvEKgQ3kHsArKirBf0YOuhSINyS8emOerXh/0mXPCgz1l3mw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", + "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.2.tgz", - "integrity": "sha512-HD75q8yyhfrrI4zeb2gkoO3wcq0EaVIwiAbyhVQWuniUPgQ6mOr2Lz31vw7YSyY1jksVU69eXngdstgErY6/yw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", + "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -5642,39 +6943,36 @@ } }, "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" }, "@noble/secp256k1": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz", - "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "@textlint/ast-node-types": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", + "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", "dev": true }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "@textlint/markdown-to-ast": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", + "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@textlint/ast-node-types": "^12.6.1", + "debug": "^4.3.4", + "mdast-util-gfm-autolink-literal": "^0.1.3", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.7", + "unified": "^9.2.2" } }, "@types/body-parser": { @@ -5706,9 +7004,9 @@ } }, "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", "dev": true, "requires": { "@types/express-serve-static-core": "*", @@ -5716,9 +7014,9 @@ } }, "@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "requires": { "@types/estree": "*", @@ -5726,9 +7024,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -5736,32 +7034,33 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/html-minifier-terser": { @@ -5770,21 +7069,36 @@ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", "dev": true, "requires": { "@types/node": "*" } }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dev": true, + "requires": { + "@types/unist": "^2" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -5792,9 +7106,9 @@ "dev": true }, "@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "version": "20.4.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.9.tgz", + "integrity": "sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==", "devOptional": true }, "@types/qs": { @@ -5815,6 +7129,16 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -5825,12 +7149,13 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/http-errors": "*", + "@types/mime": "*", "@types/node": "*" } }, @@ -5843,10 +7168,16 @@ "@types/node": "*" } }, + "@types/unist": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", + "dev": true + }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "requires": { "@types/node": "*" @@ -5862,171 +7193,169 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -6042,6 +7371,15 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -6053,15 +7391,15 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, @@ -6071,31 +7409,6 @@ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" } }, "ajv": { @@ -6120,9 +7433,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6146,6 +7459,15 @@ "dev": true, "requires": {} }, + "anchor-markdown-header": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", + "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", + "dev": true, + "requires": { + "emoji-regex": "~10.1.0" + } + }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -6159,9 +7481,9 @@ "dev": true }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -6184,21 +7506,50 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", "dev": true, "requires": { - "lodash": "^4.17.14" + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -6212,7 +7563,7 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "big-integer": { @@ -6257,6 +7608,16 @@ "base64-js": "^1.3.1", "ieee754": "^1.1.13" } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -6265,10 +7626,16 @@ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -6279,7 +7646,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -6290,27 +7657,49 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -6331,16 +7720,108 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz", - "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001358", - "electron-to-chromium": "^1.4.164", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.0" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" } }, "buffer": { @@ -6364,10 +7845,10 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "bufferutil": { @@ -6378,10 +7859,16 @@ "node-gyp-build": "^4.3.0" } }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "call-bind": { @@ -6405,9 +7892,33 @@ } }, "caniuse-lite": { - "version": "1.0.30001358", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz", - "integrity": "sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "dev": true + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, "chokidar": { @@ -6437,21 +7948,25 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "requires": { "source-map": "~0.6.0" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -6464,9 +7979,9 @@ } }, "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { @@ -6499,6 +8014,21 @@ "vary": "~1.1.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6513,9 +8043,21 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, "content-disposition": { @@ -6528,9 +8070,9 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "cookie": { @@ -6542,7 +8084,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "core-util-is": { @@ -6551,6 +8093,51 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "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-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -6570,6 +8157,25 @@ "which": "^2.0.1" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -6590,26 +8196,11 @@ "dev": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "ms": "2.1.2" } }, "default-gateway": { @@ -6628,37 +8219,31 @@ "dev": true }, "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -6672,17 +8257,27 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1011705", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1011705.tgz", - "integrity": "sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==" + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "path-type": "^4.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "dns-equal": { @@ -6692,22 +8287,26 @@ "dev": true }, "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "@leichtgewicht/ip-codec": "^2.0.1" } }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "doctoc": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", + "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", "dev": true, "requires": { - "buffer-indexof": "^1.0.0" + "@textlint/markdown-to-ast": "^12.1.1", + "anchor-markdown-header": "^0.6.0", + "htmlparser2": "^7.2.0", + "minimist": "^1.2.6", + "underscore": "^1.13.2", + "update-section": "^0.3.3" } }, "dom-converter": { @@ -6728,8 +8327,22 @@ "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } } }, + "domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true + }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -6773,9 +8386,38 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.167", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz", - "integrity": "sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q==", + "version": "1.4.490", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", + "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", "dev": true }, "encodeurl": { @@ -6793,9 +8435,9 @@ } }, "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -6803,21 +8445,27 @@ } }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true }, "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", "dev": true }, "esbuild": { @@ -6878,6 +8526,12 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -6917,6 +8571,12 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -6929,6 +8589,16 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -6944,17 +8614,25 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -6973,7 +8651,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -6990,9 +8668,39 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -7002,29 +8710,6 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "fast-deep-equal": { @@ -7033,19 +8718,6 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -7053,18 +8725,18 @@ "dev": true }, "fastest-levenshtein": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.14.tgz", - "integrity": "sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", "dev": true, "requires": { - "reusify": "^1.0.4" + "format": "^0.2.0" } }, "faye-websocket": { @@ -7093,6 +8765,12 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "dev": true + }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -7106,6 +8784,23 @@ "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, "find-up": { @@ -7118,9 +8813,24 @@ } }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true }, "forwarded": { @@ -7141,9 +8851,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", "dev": true }, "fs.realpath": { @@ -7164,28 +8874,25 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" } }, "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } }, "glob": { "version": "7.2.3", @@ -7215,24 +8922,19 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "get-intrinsic": "^1.1.3" } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "handle-thing": { @@ -7265,6 +8967,12 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -7280,12 +8988,57 @@ "has-symbols": "^1.0.2" } }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -7299,9 +9052,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -7331,9 +9084,9 @@ } }, "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, "html-minifier-terser": { @@ -7352,9 +9105,9 @@ } }, "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -7365,15 +9118,15 @@ } }, "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "requires": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, "http-deceiver": { @@ -7396,9 +9149,9 @@ } }, "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { @@ -7423,8 +9176,22 @@ "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + } } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -7432,21 +9199,6 @@ "requires": { "agent-base": "6", "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "human-signals": { @@ -7469,12 +9221,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -7491,12 +9237,6 @@ "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7512,23 +9252,33 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -7548,23 +9298,32 @@ "binary-extensions": "^2.0.0" } }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { "has": "^1.0.3" } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true }, "is-docker": { "version": "2.2.1", @@ -7578,6 +9337,15 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7587,28 +9355,32 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-plain-object": { @@ -7620,22 +9392,21 @@ "isobject": "^3.0.1" } }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -7674,10 +9445,10 @@ "supports-color": "^8.0.0" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema-traverse": { @@ -7697,6 +9468,16 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -7717,6 +9498,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -7726,6 +9513,141 @@ "tslib": "^2.0.3" } }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "requires": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + } + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "requires": { + "micromark-extension-frontmatter": "^0.2.0" + } + }, + "mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "requires": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + } + }, + "mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + } + }, + "mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } + }, + "mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "requires": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + } + }, + "mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "~0.6.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7733,12 +9655,12 @@ "dev": true }, "memfs": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", - "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "requires": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" } }, "merge-descriptors": { @@ -7753,18 +9675,96 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "requires": { + "fault": "^1.0.0" + } + }, + "micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "requires": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + } + }, + "micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "requires": { + "micromark": "~2.11.3" + } + }, + "micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "dev": true + }, + "micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -7775,6 +9775,24 @@ "picomatch": "^2.3.1" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -7808,6 +9826,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7817,47 +9841,31 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -7886,27 +9894,6 @@ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } } }, "node-forge": { @@ -7916,14 +9903,47 @@ "dev": true }, "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" + }, + "node-polyfill-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "dev": true, + "requires": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.22.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^4.0.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + } }, "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -7951,9 +9971,9 @@ } }, "object-inspect": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "object-is": { @@ -8011,9 +10031,9 @@ } }, "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -8021,6 +10041,12 @@ "is-wsl": "^2.2.0" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -8037,15 +10063,6 @@ "p-limit": "^2.2.0" } }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", @@ -8061,6 +10078,12 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -8071,6 +10094,33 @@ "tslib": "^2.0.3" } }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -8087,6 +10137,12 @@ "tslib": "^2.0.3" } }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8115,11 +10171,18 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } }, "pend": { "version": "1.2.0", @@ -8143,35 +10206,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "find-up": "^4.0.0" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } + "find-up": "^4.0.0" } }, "pretty-error": { @@ -8184,6 +10219,12 @@ "renderkid": "^3.0.0" } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8218,6 +10259,28 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -8228,19 +10291,19 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "puppeteer-core": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.3.2.tgz", - "integrity": "sha512-Fmca9UzXmJkRrvGBgUmrffGD2BlulUTfsVefV1+vqfNm4PnlZ/U1bfD6X8XQ0nftyyg520tmSKd81yH3Z2tszg==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-15.5.0.tgz", + "integrity": "sha512-5Q8EmF++MARczJD1JcRehVePlctxGG2TFHSxdCV8NqPOk44/cMySmZw2nETn+lwUOyp0L9afosMFTnT4KgmWgw==", "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1011705", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", @@ -8252,19 +10315,6 @@ "ws": "8.8.0" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", @@ -8274,18 +10324,18 @@ } }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "requires": { "side-channel": "^1.0.4" } }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true }, "randombytes": { @@ -8297,6 +10347,16 @@ "safe-buffer": "^5.1.0" } }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8324,13 +10384,16 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } }, "readdirp": { @@ -8343,12 +10406,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "reconnecting-websocket": { @@ -8356,23 +10419,51 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, + "remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", + "dev": true, + "requires": { + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" + } + }, + "remark-frontmatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "dev": true, + "requires": { + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" + } + }, + "remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "dev": true, + "requires": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + } + }, + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.0" + } + }, "renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -8384,8 +10475,34 @@ "htmlparser2": "^6.1.0", "lodash": "^4.17.21", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } } }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -8399,12 +10516,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -8430,12 +10547,6 @@ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8444,13 +10555,14 @@ "glob": "^7.1.3" } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "queue-microtask": "^1.2.2" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "safe-buffer": { @@ -8465,9 +10577,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -8482,9 +10594,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -8511,6 +10623,23 @@ "statuses": "2.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8520,9 +10649,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -8543,6 +10672,15 @@ "parseurl": "~1.3.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -8567,6 +10705,12 @@ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -8593,12 +10737,28 @@ "send": "0.18.0" } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -8623,6 +10783,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -8640,12 +10806,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -8684,23 +10844,6 @@ "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "spdy-transport": { @@ -8717,20 +10860,16 @@ "wbuf": "^1.7.3" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { - "ms": "2.1.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -8740,6 +10879,54 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8805,16 +10992,28 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -8828,16 +11027,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" } }, "through": { @@ -8851,6 +11050,15 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8866,10 +11074,39 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true }, "type-is": { @@ -8902,11 +11139,56 @@ } } }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, "uniqid": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -8914,15 +11196,21 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz", - "integrity": "sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" } }, + "update-section": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", + "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -8932,6 +11220,37 @@ "punycode": "^2.1.0" } }, + "url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -8961,10 +11280,38 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -8980,62 +11327,68 @@ "minimalistic-assert": "^1.0.0" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } @@ -9054,9 +11407,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -9081,61 +11434,61 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } }, "webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", + "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.1.1", "serve-index": "^1.9.1", - "sockjs": "^0.3.21", + "sockjs": "^0.3.24", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -9153,12 +11506,6 @@ "fast-deep-equal": "^3.1.3" } }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -9166,39 +11513,30 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" + "ajv-keywords": "^5.1.0" } }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "requires": {} } } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -9228,6 +11566,15 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9237,16 +11584,29 @@ "isexe": "^2.0.0" } }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { "version": "8.4.0", @@ -9259,6 +11619,12 @@ "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -9267,6 +11633,12 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } } diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index ee21a7b72..107691ae8 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,8 +27,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.2", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -49,13 +49,15 @@ }, "devDependencies": { "buffer": "6.0.3", + "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.0", - "webpack": "5.67.0", - "webpack-cli": "4.10", - "webpack-dev-server": "4.7.4" + "html-webpack-plugin": "5.5.3", + "node-polyfill-webpack-plugin": "2.0.1", + "webpack": "5.88.1", + "webpack-cli": "5.1.4", + "webpack-dev-server": "4.15.1" }, "prettier": { "arrowParens": "avoid" diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 7b8dccb2f..61e40db6a 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -218,7 +218,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" + , version = "db0d3c12348da576b28a18782df4ae5d7cc44408" } , bignumber = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index ae7055f70..17e1e791a 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -1375,11 +1375,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + version = "db0d3c12348da576b28a18782df4ae5d7cc44408"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; - sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + rev = "db0d3c12348da576b28a18782df4ae5d7cc44408"; + sha256 = "1ck1g9mrm8kclmzkrg9hbm97gbvjbk0dcqnzby0c38pc2dqa7xwf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/webpack.config.js b/templates/ctl-scaffold/webpack.config.js index ae6edde65..bc391a252 100644 --- a/templates/ctl-scaffold/webpack.config.js +++ b/templates/ctl-scaffold/webpack.config.js @@ -22,6 +22,9 @@ module.exports = { stats: { errorDetails: true }, devServer: { + client: { + overlay: false, + }, port: 4008, proxy: { "/kupo": { diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index b39a43cb3..e2f9c11e7 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -15,7 +15,6 @@ import Contract.TextEnvelope import Control.Monad.Error.Class (class MonadError) import Control.Monad.Trans.Class (lift) import Control.Parallel (parTraverse) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) @@ -27,6 +26,8 @@ import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object as Object import Mote (group, test) +import Node.Encoding (Encoding(UTF8)) +import Node.FS.Aff (readTextFile) import Test.Spec.Assertions (shouldEqual) scriptFilenames :: Object String @@ -95,6 +96,9 @@ suite = group "Applying params to scripts test" $ do ("Apply " <> argsName <> " to " <> scriptName) $ compareApplied lang scriptName (args /\ argsName) +loadScript :: String -> Aff String +loadScript = readTextFile UTF8 <<< append "./fixtures/scripts/" + compareApplied :: forall (m :: Type -> Type) . Monad m diff --git a/test/Deserialization.purs b/test/Deserialization.purs index f56e0f3d4..8f51d601a 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -9,7 +9,6 @@ import Contract.TextEnvelope , decodeTextEnvelope ) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) -import Ctl.Examples.Helpers.LoadScript (loadScript) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T import Ctl.Internal.Cardano.Types.Transaction (Vkeywitness) @@ -49,7 +48,6 @@ import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) import Effect (Effect) import Effect.Aff (Aff) -import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) import Mote (group, skip, test) @@ -248,8 +246,15 @@ suite = do test "fixture #4" $ witnessSetRoundTrip witnessSetFixture4 group "TextEnvelope decoding" do test "Decoding TestEnvelope with some other type" do - otherTypeTextEnvelope <- liftAff $ loadScript - "other-type-text-envelope.plutus" + let + otherTypeTextEnvelope = + """ + { + "cborHex": "484701000022120011", + "description": "other-type-text-envelope", + "type": "SomeOtherType" + } + """ TextEnvelope envelope <- liftMaybe (error "Unexpected parsing error") $ decodeTextEnvelope otherTypeTextEnvelope envelope.type_ `shouldEqual` (Other "SomeOtherType") diff --git a/webpack.config.cjs b/webpack.config.cjs index 2923bd761..7495185ac 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -23,8 +23,8 @@ module.exports = env => { stats: { errorDetails: true }, devServer: { - static: { - directory: path.join(__dirname, "fixtures"), + client: { + overlay: false }, port: 4008, proxy: { @@ -86,7 +86,6 @@ module.exports = env => { plugins: [ new webpack.DefinePlugin({ BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - SCRIPTS_DIR: '"scripts"' }), new NodePolyfillPlugin(), new webpack.LoaderOptionsPlugin({ From 32d8e75fe8bbfd32cd74eb86b6b1a8952584b418 Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Thu, 17 Aug 2023 00:22:50 +0100 Subject: [PATCH 279/478] Add support for generic CIP30 wallets by name --- CHANGELOG.md | 1 + src/Contract/Wallet.purs | 4 +++- src/Internal/Contract/Sign.purs | 5 +++-- src/Internal/Wallet.purs | 11 ++++++++++- src/Internal/Wallet/Cip30.js | 24 ++++++++++++++++++------ src/Internal/Wallet/Cip30Mock.purs | 28 +++++++++++++++++++++++++--- src/Internal/Wallet/Spec.purs | 4 ++++ test/Plutip/Contract.purs | 4 +++- 8 files changed, 67 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..b545d96c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) - New `mustSendChangeWithDatum` balancer constraint that adds datum to all change outputs ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) +- Support for generic CIP-30 wallets by name ([#1524](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1524)) ### Changed diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index e6cdd7e1b..5497a9e59 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -58,7 +58,7 @@ import Ctl.Internal.Plutus.Conversion ) import Ctl.Internal.Plutus.Conversion.Address (toPlutusAddressWithNetworkTag) import Ctl.Internal.Wallet - ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) + ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet, GenericCip30) , WalletExtension ( NamiWallet , GeroWallet @@ -67,6 +67,7 @@ import Ctl.Internal.Wallet , LodeWallet , LaceWallet , NuFiWallet + , GenericCip30Wallet ) , apiVersion , icon @@ -107,6 +108,7 @@ import Ctl.Internal.Wallet.Spec , ConnectToLace , ConnectToEternl , ConnectToNuFi + , ConnectToGenericCip30 ) ) as X import Data.Array (head) diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index c8aa2e630..5755290a8 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -11,7 +11,7 @@ import Ctl.Internal.Cardano.Types.Transaction as Transaction import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) import Ctl.Internal.Wallet - ( Wallet(KeyWallet, Lode, Eternl, Flint, Gero, Nami, NuFi, Lace) + ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, GenericCip30, KeyWallet) , callCip30Wallet ) import Data.Array (fromFoldable) @@ -45,7 +45,8 @@ signTransaction tx = do liftAff $ callCip30Wallet eternl \nw -> flip nw.signTx tx Lode lode -> liftAff $ callCip30Wallet lode \nw -> flip nw.signTx tx NuFi nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx - Lace nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx + Lace lace -> liftAff $ callCip30Wallet lace \w -> flip w.signTx tx + GenericCip30 cip30 -> liftAff $ callCip30Wallet cip30 \w -> flip w.signTx tx KeyWallet kw -> liftAff do witnessSet <- (unwrap kw).signTx tx pure $ Just (tx # _witnessSet <>~ witnessSet) diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 8d868f8e3..1d39af01f 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -1,7 +1,7 @@ module Ctl.Internal.Wallet ( module KeyWallet , module Cip30Wallet - , Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet) + , Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, GenericCip30, KeyWallet) , WalletExtension ( NamiWallet , LodeWallet @@ -10,6 +10,7 @@ module Ctl.Internal.Wallet , EternlWallet , NuFiWallet , LaceWallet + , GenericCip30Wallet ) , isEternlAvailable , isGeroAvailable @@ -84,6 +85,7 @@ data Wallet | Lode Cip30Wallet | NuFi Cip30Wallet | Lace Cip30Wallet + | GenericCip30 Cip30Wallet | KeyWallet KeyWallet data WalletExtension @@ -94,6 +96,7 @@ data WalletExtension | LodeWallet | LaceWallet | NuFiWallet + | GenericCip30Wallet String mkKeyWallet :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Wallet mkKeyWallet payKey mbStakeKey = KeyWallet $ privateKeysToKeyWallet @@ -119,6 +122,8 @@ mkWalletAff walletExtension = LodeWallet -> _mkLodeWalletAff NuFiWallet -> NuFi <$> mkCip30WalletAff (_enableWallet walletName) LaceWallet -> Lace <$> mkCip30WalletAff (_enableWallet walletName) + GenericCip30Wallet name' -> + GenericCip30 <$> mkCip30WalletAff (_enableWallet name') where walletName = walletExtensionToName walletExtension @@ -232,6 +237,7 @@ cip30Wallet = case _ of Lode c30 -> Just c30 NuFi c30 -> Just c30 Lace c30 -> Just c30 + GenericCip30 c30 -> Just c30 KeyWallet _ -> Nothing walletExtensionToName :: WalletExtension -> String @@ -243,6 +249,7 @@ walletExtensionToName = case _ of LodeWallet -> "LodeWallet" NuFiWallet -> "nufi" LaceWallet -> "lace" + GenericCip30Wallet name' -> name' walletToWalletExtension :: Wallet -> Maybe WalletExtension walletToWalletExtension = case _ of @@ -253,6 +260,7 @@ walletToWalletExtension = case _ of Lode _ -> Just LodeWallet NuFi _ -> Just NuFiWallet Lace _ -> Just LaceWallet + GenericCip30 _ -> Nothing KeyWallet _ -> Nothing isEnabled :: WalletExtension -> Aff Boolean @@ -311,6 +319,7 @@ actionBasedOnWallet walletAction keyWalletAction = Lode wallet -> liftAff $ callCip30Wallet wallet walletAction NuFi wallet -> liftAff $ callCip30Wallet wallet walletAction Lace wallet -> liftAff $ callCip30Wallet wallet walletAction + GenericCip30 wallet -> liftAff $ callCip30Wallet wallet walletAction KeyWallet kw -> keyWalletAction kw callCip30Wallet diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index 7414ae307..ad274ce3d 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -6,15 +6,27 @@ exports._getUtxos = maybe => conn => () => conn.getUtxos().then(res => (res === null ? maybe.nothing : maybe.just(res))); exports._getCollateral = maybe => conn => () => - conn.experimental - .getCollateral() - .then(utxos => - utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing - ); + /* Notes regarding the quirks of various wallets: + + Yoroi will throw an error if no amount argument is provided, and will + break if the following expression is written as + (conn.getCollateral || conn.experimental.getCollateral)("5000000") due to + JavaScript object binding + + Typhon will throw an error if the amount argument is not a string + + Nami only provides `getCollateral` under the experimental API + */ + (typeof conn.getCollateral === "function" + ? conn.getCollateral("5000000") + : conn.experimental.getCollateral("5000000") + ).then(utxos => + utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing + ); exports._getBalance = conn => () => conn.getBalance(); -exports._getAddresses = conn => conn.getUsedAddresses; +exports._getAddresses = conn => () => conn.getUsedAddresses(); exports._getUnusedAddresses = conn => () => conn.getUnusedAddresses(); diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 01b803ec0..d2310e76c 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -1,6 +1,13 @@ module Ctl.Internal.Wallet.Cip30Mock ( withCip30Mock - , WalletMock(MockFlint, MockGero, MockNami, MockLode, MockNuFi) + , WalletMock + ( MockFlint + , MockGero + , MockNami + , MockLode + , MockNuFi + , MockGenericCip30 + ) ) where import Prelude @@ -40,7 +47,14 @@ import Ctl.Internal.Types.RewardAddress ) import Ctl.Internal.Wallet ( Wallet - , WalletExtension(LodeWallet, NamiWallet, GeroWallet, FlintWallet, NuFiWallet) + , WalletExtension + ( LodeWallet + , NamiWallet + , GeroWallet + , FlintWallet + , NuFiWallet + , GenericCip30Wallet + ) , mkWalletAff ) import Ctl.Internal.Wallet.Key @@ -66,7 +80,13 @@ import Effect.Class (liftEffect) import Effect.Exception (error) import Effect.Unsafe (unsafePerformEffect) -data WalletMock = MockFlint | MockGero | MockNami | MockLode | MockNuFi +data WalletMock + = MockFlint + | MockGero + | MockNami + | MockLode + | MockNuFi + | MockGenericCip30 String -- | Construct a CIP-30 wallet mock that exposes `KeyWallet` functionality -- | behind a CIP-30 interface and uses Ogmios to submit Txs. @@ -103,6 +123,7 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do MockNami -> mkWalletAff NamiWallet MockLode -> mkWalletAff LodeWallet MockNuFi -> mkWalletAff NuFiWallet + MockGenericCip30 name -> mkWalletAff (GenericCip30Wallet name) mockString :: String mockString = case mock of @@ -111,6 +132,7 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do MockNami -> "nami" MockLode -> "LodeWallet" MockNuFi -> "nufi" + MockGenericCip30 name -> name type Cip30Mock = { getNetworkId :: Effect (Promise Int) diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index e8bdab7a3..8cb539eac 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -9,6 +9,7 @@ module Ctl.Internal.Wallet.Spec , ConnectToLode , ConnectToNuFi , ConnectToLace + , ConnectToGenericCip30 ) , Cip1852DerivationPath , StakeKeyPresence(WithStakeKey, WithoutStakeKey) @@ -32,6 +33,7 @@ import Ctl.Internal.Wallet , LodeWallet , NuFiWallet , LaceWallet + , GenericCip30Wallet ) , mkKeyWallet , mkWalletAff @@ -110,6 +112,7 @@ data WalletSpec | ConnectToLode | ConnectToNuFi | ConnectToLace + | ConnectToGenericCip30 String derive instance Generic WalletSpec _ @@ -148,6 +151,7 @@ mkWalletBySpec = case _ of ConnectToLode -> mkWalletAff LodeWallet ConnectToNuFi -> mkWalletAff NuFiWallet ConnectToLace -> mkWalletAff LaceWallet + ConnectToGenericCip30 name -> mkWalletAff (GenericCip30Wallet name) -- | Create a wallet given a mnemonic phrase, account index, address index and -- | stake key presence flag. diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 605d8a9ae..a8c046e8b 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -154,7 +154,7 @@ import Ctl.Internal.Wallet ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) ) import Ctl.Internal.Wallet.Cip30Mock - ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi) + ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30) , withCip30Mock ) import Data.Array (head, (!!)) @@ -1928,6 +1928,8 @@ suite = do withWallets distribution \alice -> do withCip30Mock alice MockNami do Cip30.contract + withCip30Mock alice (MockGenericCip30 "nami") do + Cip30.contract test "ECDSA example" do let distribution = withStakeKey privateStakeKey From 7139e1e4ba5a072374bffa7ef538a9533cec56ed Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Sep 2023 16:58:56 +0400 Subject: [PATCH 280/478] WIP --- Makefile | 6 ++---- esbuild/serve.js | 6 ++++-- nix/default.nix | 18 +++++++----------- package-lock.json | 28 ++++++++++++++-------------- package.json | 6 +++--- templates/ctl-scaffold/package.json | 1 - 6 files changed, 30 insertions(+), 35 deletions(-) diff --git a/Makefile b/Makefile index e985f148d..6bd9d7678 100644 --- a/Makefile +++ b/Makefile @@ -15,10 +15,8 @@ esbuild-bundle: && cp -rf fixtures dist/esbuild \ && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} -esbuild-serve: - @spago build \ - && cp -rf fixtures dist/esbuild \ - && BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} +esbuild-serve: esbuild-bundle + BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} webpack-bundle: @spago build \ diff --git a/esbuild/serve.js b/esbuild/serve.js index 8b4220c43..6c8e965e9 100755 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -2,8 +2,10 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; const ctx = await esbuild.context(buildOptions); -await ctx.serve({ +const config = { host: "127.0.0.1", port: 4008, servedir: "dist/esbuild", -}); +}; +console.log('serving:', config); +await ctx.serve(config); diff --git a/nix/default.nix b/nix/default.nix index a3e381898..1c13ba135 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -136,7 +136,7 @@ let ]; shellHook = '' export NODE_PATH="${nodeModules}/lib/node_modules" - ln -sfn $NODE_PATH node_modules + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString packageLockOnly "export NPM_CONFIG_PACKAGE_LOCK_ONLY=true"} '' @@ -178,7 +178,7 @@ let unpackPhase = '' export HOME="$TMP" export NODE_PATH="${nodeModules}/lib/node_modules" - ln -sfn $NODE_PATH node_modules + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" cp -r $src . install-spago-style @@ -230,7 +230,7 @@ let # (idea taken from `plutus-playground-client`) '' cp -r ${project}/* . - ln -sfn $NODE_PATH node_modules + ln -sfn $NODE_PATH node_modules ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.main())' touch $out ''; @@ -361,8 +361,8 @@ let done; mkdir project - cp -r ${project}/* project - ln -sfn $NODE_PATH node_modules + cp -r ${project}/* project + ln -sfn $NODE_PATH node_modules ${nodejs}/bin/node --enable-source-maps -e 'import("./project/output/${testMain}/index.js").then(m => m.main())' e2e-test run mkdir $out '' @@ -374,14 +374,10 @@ let # Can be used to override the name given to the resulting derivation name ? "${projectName}-bundle-" + (if browserRuntime then "web" else "nodejs") - # The Webpack `entrypoint` - , entrypoint ? "index.js" # The main Purescript module , main ? "Main" # If this bundle is being produced for a browser environment or not , browserRuntime ? true - # Path to the Webpack config to use - , webpackConfig ? "webpack.config.js" # The name of the bundled JS module that `spago bundle-module` will produce , bundledModuleName ? "output.js" # Generated `node_modules` in the Nix store. Can be passed to have better @@ -405,7 +401,7 @@ let '' export HOME="$TMP" export NODE_PATH="${nodeModules}/lib/node_modules" - ln -sfn $NODE_PATH node_modules + ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} cp -r ${project}/* . @@ -491,7 +487,7 @@ let } '' export NODE_PATH="${pursDocsSearchNpm.nodeDependencies}/lib/node_modules" - ln -sfn $NODE_PATH node_modules + ln -sfn $NODE_PATH node_modules export PATH="${pursDocsSearchNpm.nodeDependencies}/bin:$PATH" cp -r ${buildPursDocs { }}/{generated-docs,output,src} . install-spago-style diff --git a/package-lock.json b/package-lock.json index eb4c6d8c1..cdde7c3c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.4", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.4", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -496,18 +496,18 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", - "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.4.tgz", + "integrity": "sha512-ZN74Uv9r3978Q/r/bRt4bCa5PeFUcf8qasc8bZf9JLWCpvG2Mgy1rBgb4PlxJpPIFJDU7GdDR2R9fyw334WsIg==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", - "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.4.tgz", + "integrity": "sha512-645lSxq5i3jxfGT0gX7/LT3Uz425l0HeJ1gfZzvuhVSPkuLai+xyrUHnf7KOzT1zyRFIyNBaGkm7z+6yKNhBnA==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -6912,18 +6912,18 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", - "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.4.tgz", + "integrity": "sha512-ZN74Uv9r3978Q/r/bRt4bCa5PeFUcf8qasc8bZf9JLWCpvG2Mgy1rBgb4PlxJpPIFJDU7GdDR2R9fyw334WsIg==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", - "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.4.tgz", + "integrity": "sha512-645lSxq5i3jxfGT0gX7/LT3Uz425l0HeJ1gfZzvuhVSPkuLai+xyrUHnf7KOzT1zyRFIyNBaGkm7z+6yKNhBnA==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" diff --git a/package.json b/package.json index aa6ebcf26..81c0162c6 100755 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "unit-test": "spago run --main Test.Ctl.Unit", "plutip-test": "spago run --main Test.Ctl.Plutip", "staking-test": "spago run --main Test.Ctl.Plutip.Staking", - "e2e-serve": "spago bundle-module -m Ctl.Examples.ByUrl --to output.js && make webpack-serve", + "e2e-serve": "make esbuild-serve", "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run --no-headless'", "e2e-browser": "source ./test/e2e.env && spago run --main Test.Ctl.E2E -a 'browser'", @@ -36,8 +36,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.4", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.4", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 107691ae8..a1b19fcdd 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -49,7 +49,6 @@ }, "devDependencies": { "buffer": "6.0.3", - "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", From b0a3cb25bf97a9610591e5946fe7507737a8eb83 Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Fri, 15 Sep 2023 17:44:09 +0200 Subject: [PATCH 281/478] Update several packages (plutip, nixpkgs, haskell.nix, hackage.nix, easy-ps, iohk.nix, CHaP) --- flake.lock | 5315 ++++++++++++----------------- flake.nix | 68 +- plutip-server/cabal.project | 128 +- plutip-server/default.nix | 117 +- plutip-server/src/Api/Handlers.hs | 2 +- plutip-server/src/Types.hs | 4 +- 6 files changed, 2401 insertions(+), 3233 deletions(-) diff --git a/flake.lock b/flake.lock index c5bad3c6d..43870cdb1 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1678160279, - "narHash": "sha256-IKbD0uqteVoo4KRcYh/QrLQ/HQJXwgCQS2Mq7grhSdM=", + "lastModified": 1694768913, + "narHash": "sha256-c+C/6gcZCD8TcX+08WhLudOEO0QQu6GXdy1GO6ZA190=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e20bffc8ac331810efa671a1bb49932595fa21f6", + "rev": "0f233c529212e0bacff8b7ba6eb9f39aa799ef0f", "type": "github" }, "original": { @@ -18,6 +18,23 @@ } }, "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { "flake": false, "locked": { "lastModified": 1669917887, @@ -34,7 +51,7 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { "lastModified": 1666726035, @@ -51,7 +68,7 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { "flake": false, "locked": { "lastModified": 1666726035, @@ -68,14 +85,14 @@ "type": "github" } }, - "CHaP_5": { + "CHaP_6": { "flake": false, "locked": { - "lastModified": 1672829743, - "narHash": "sha256-lM3s0UQDxfipHbEFhmW2d5QcmKIPVsLT2ai6RnHAP84=", + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "551630b2c90ed9107079ab402534ed3b56db6f04", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", "type": "github" }, "original": { @@ -165,70 +182,6 @@ "type": "github" } }, - "HTTP_14": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_15": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_16": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_17": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -359,7 +312,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1641576265, @@ -377,8 +330,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1641404293, @@ -396,8 +349,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_5" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -415,8 +368,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_13", - "nixpkgs": "nixpkgs_34" + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -434,7 +387,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -527,7 +480,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_33" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -595,7 +548,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_28" + "nixpkgs": "nixpkgs_35" }, "locked": { "lastModified": 1646360966, @@ -711,24 +664,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank", + "blank": "blank_2", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_4", - "hydra": "hydra_2", - "n2c": "n2c", - "nix": "nix_4", - "nixpkgs": "nixpkgs_22", + "hydra": "hydra_3", + "n2c": "n2c_2", + "nix": "nix_5", + "nixpkgs": "nixpkgs_29", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std", + "std": "std_2", "terranix": "terranix_2", - "utils": "utils_10" + "utils": "utils_12" }, "locked": { "lastModified": 1661790449, @@ -806,20 +759,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_2", + "blank": "blank_3", "deploy": "deploy", "fenix": "fenix_2", - "hydra": "hydra", - "nix": "nix", - "nixpkgs": "nixpkgs_8", - "nixpkgs-unstable": "nixpkgs-unstable", + "hydra": "hydra_2", + "nix": "nix_2", + "nixpkgs": "nixpkgs_15", + "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib", + "ops-lib": "ops-lib_2", "ragenix": "ragenix", "terranix": "terranix", - "utils": "utils_5", + "utils": "utils_7", "vulnix": "vulnix" }, "locked": { @@ -840,20 +793,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy_3", "fenix": "fenix_6", - "hydra": "hydra_3", - "nix": "nix_8", - "nixpkgs": "nixpkgs_37", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "hydra": "hydra_4", + "nix": "nix_9", + "nixpkgs": "nixpkgs_44", + "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_4", "ragenix": "ragenix_4", "terranix": "terranix_3", - "utils": "utils_19", + "utils": "utils_21", "vulnix": "vulnix_2" }, "locked": { @@ -975,93 +928,91 @@ "type": "github" } }, + "blank_8": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1684305087, - "narHash": "sha256-8MvK2AxG3bGWkxWutsCWRk9MYxf/FdQu/DkAvemjqHM=", + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", "owner": "blockfrost", "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", "type": "github" }, "original": { "owner": "blockfrost", + "ref": "v1.7.0", "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", - "type": "github" - } - }, - "byron-chain": { - "flake": false, - "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-32": { + "blst": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_10": { + "blst_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_11": { + "byron-chain": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-32_12": { + "cabal-32": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1078,24 +1029,7 @@ "type": "github" } }, - "cabal-32_13": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-32_14": { + "cabal-32_10": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1112,7 +1046,7 @@ "type": "github" } }, - "cabal-32_15": { + "cabal-32_11": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1129,7 +1063,7 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-32_12": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1146,7 +1080,7 @@ "type": "github" } }, - "cabal-32_17": { + "cabal-32_13": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1269,10 +1203,10 @@ "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1302,11 +1236,11 @@ "cabal-34": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1336,11 +1270,11 @@ "cabal-34_11": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1622475795, + "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", "type": "github" }, "original": { @@ -1370,11 +1304,11 @@ "cabal-34_13": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1384,14 +1318,14 @@ "type": "github" } }, - "cabal-34_14": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1401,14 +1335,14 @@ "type": "github" } }, - "cabal-34_15": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1418,7 +1352,7 @@ "type": "github" } }, - "cabal-34_16": { + "cabal-34_4": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1435,7 +1369,7 @@ "type": "github" } }, - "cabal-34_17": { + "cabal-34_5": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1452,14 +1386,14 @@ "type": "github" } }, - "cabal-34_2": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1469,58 +1403,7 @@ "type": "github" } }, - "cabal-34_3": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_4": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_5": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_6": { + "cabal-34_7": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1537,7 +1420,7 @@ "type": "github" } }, - "cabal-34_7": { + "cabal-34_8": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1554,23 +1437,6 @@ "type": "github" } }, - "cabal-34_8": { - "flake": false, - "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, "cabal-34_9": { "flake": false, "locked": { @@ -1591,11 +1457,11 @@ "cabal-36": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1606,57 +1472,6 @@ } }, "cabal-36_10": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_11": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_12": { - "flake": false, - "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_13": { "flake": false, "locked": { "lastModified": 1640163203, @@ -1673,7 +1488,7 @@ "type": "github" } }, - "cabal-36_14": { + "cabal-36_11": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1690,7 +1505,7 @@ "type": "github" } }, - "cabal-36_15": { + "cabal-36_12": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1778,11 +1593,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1812,11 +1627,11 @@ "cabal-36_8": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1847,7 +1662,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_23", "ragenix": "ragenix_2" }, "locked": { @@ -1868,7 +1683,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_45", + "nixpkgs": "nixpkgs_52", "ragenix": "ragenix_5" }, "locked": { @@ -1885,31 +1700,44 @@ "type": "github" } }, - "cardano-addresses": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils", + "haskellNix": [ + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "tullia": [ + "cardano-node", + "tullia" + ] + }, "locked": { - "lastModified": 1664466771, - "narHash": "sha256-m8oidcV9LWU0S+NBw4wH1JdKZVict1EbKBZ6kfdEEf4=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", + "repo": "cardano-automation", "type": "github" } }, "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1671845278, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "36a75a920de312519c3a9086061daccb997f9cd0", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { @@ -1985,7 +1813,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_65" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1642701714, @@ -2004,7 +1832,7 @@ }, "cardano-mainnet-mirror_2": { "inputs": { - "nixpkgs": "nixpkgs_67" + "nixpkgs": "nixpkgs_71" }, "locked": { "lastModified": 1642701714, @@ -2022,25 +1850,6 @@ } }, "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_68" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-mainnet-mirror_4": { "inputs": { "nixpkgs": "nixpkgs_73" }, @@ -2059,9 +1868,9 @@ "type": "github" } }, - "cardano-mainnet-mirror_5": { + "cardano-mainnet-mirror_4": { "inputs": { - "nixpkgs": "nixpkgs_75" + "nixpkgs": "nixpkgs_74" }, "locked": { "lastModified": 1642701714, @@ -2078,47 +1887,57 @@ "type": "github" } }, - "cardano-mainnet-mirror_6": { + "cardano-node": { "inputs": { - "nixpkgs": "nixpkgs_76" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" + "CHaP": "CHaP_2", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake", + "flake-compat": "flake-compat", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_2" }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-node": { - "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "1.35.3", + "ref": "8.1.1", "repo": "cardano-node", "type": "github" } }, "cardano-node-snapshot": { "inputs": { - "customConfig": "customConfig_5", - "haskellNix": "haskellNix_5", - "iohkNix": "iohkNix_5", + "customConfig": "customConfig_6", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "membench": "membench_2", "nixpkgs": [ "ogmios", @@ -2129,7 +1948,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_22" + "utils": "utils_24" }, "locked": { "lastModified": 1644954571, @@ -2146,56 +1965,41 @@ "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_9", - "haskellNix": "haskellNix_9", - "iohkNix": "iohkNix_9", - "membench": "membench_4", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_27" - }, + "cardano-node_2": { + "flake": false, "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "1.35.3", "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", "type": "github" } }, - "cardano-node_2": { + "cardano-node_3": { "inputs": { - "CHaP": "CHaP_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "CHaP": "CHaP_4", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", "cardano-node-workbench": [ "ogmios", "blank" ], - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_9", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix_3", + "customConfig": "customConfig_4", + "flake-compat": "flake-compat_13", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_4", "hostNixpkgs": [ "ogmios", "cardano-node", "nixpkgs" ], - "iohkNix": "iohkNix_3", + "iohkNix": "iohkNix_4", "nixTools": "nixTools", "nixpkgs": [ "ogmios", @@ -2210,7 +2014,7 @@ "node-process": "node-process", "node-snapshot": "node-snapshot", "plutus-apps": "plutus-apps", - "utils": "utils_25" + "utils": "utils_27" }, "locked": { "lastModified": 1667644902, @@ -2227,71 +2031,6 @@ "type": "github" } }, - "cardano-node_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_7", - "flake-compat": "flake-compat_14", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_7", - "hostNixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_7", - "nixTools": "nixTools_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_30" - }, - "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", - "type": "github" - } - }, - "cardano-node_4": { - "flake": false, - "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", - "type": "github" - } - }, "cardano-shell": { "flake": false, "locked": { @@ -2372,70 +2111,6 @@ "type": "github" } }, - "cardano-shell_14": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_15": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_16": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_17": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, "cardano-shell_2": { "flake": false, "locked": { @@ -2566,19 +2241,19 @@ }, "cardano-wallet": { "inputs": { - "customConfig": "customConfig", + "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_20", - "haskellNix": "haskellNix", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", + "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix", + "iohkNix": "iohkNix_2", "nixpkgs": [ "db-sync", "cardano-world", @@ -2602,23 +2277,6 @@ "type": "github" } }, - "cardano-wallet_2": { - "flake": false, - "locked": { - "lastModified": 1671029634, - "narHash": "sha256-lz3bi711qORionkcfduC+AXGP6Ii+uWiVHRmRZmvfb8=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", - "type": "github" - } - }, "cardano-world": { "inputs": { "bitte": "bitte", @@ -2630,16 +2288,16 @@ ], "cardano-explorer-app": "cardano-explorer-app", "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node", + "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_9", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_2", + "n2c": "n2c_3", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_56", + "nixpkgs": "nixpkgs_63", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -2647,8 +2305,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_2", - "tullia": "tullia" + "std": "std_3", + "tullia": "tullia_2" }, "locked": { "lastModified": 1662508244, @@ -2668,16 +2326,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_7", + "devshell": "devshell_8", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", - "nix": "nix_7", + "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_39", "poetry2nix": "poetry2nix", - "utils": "utils_14" + "utils": "utils_16" }, "locked": { "lastModified": 1647522107, @@ -2708,7 +2366,7 @@ "type": "github" } }, - "customConfig_10": { + "customConfig_2": { "locked": { "lastModified": 1630400035, "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", @@ -2723,7 +2381,7 @@ "type": "github" } }, - "customConfig_2": { + "customConfig_3": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -2735,21 +2393,6 @@ "type": "path" } }, - "customConfig_3": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, "customConfig_4": { "locked": { "lastModified": 1630400035, @@ -2810,40 +2453,10 @@ "type": "github" } }, - "customConfig_8": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_9": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants" + "yants": "yants_2" }, "locked": { "lastModified": 1648237091, @@ -2880,7 +2493,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_3" + "yants": "yants_4" }, "locked": { "lastModified": 1655854240, @@ -2899,16 +2512,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_2", - "flake-compat": "flake-compat_7", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_10", + "haskellNix": "haskellNix_3", + "iohkNix": "iohkNix_3", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_21" + "utils": "utils_23" }, "locked": { "lastModified": 1670313550, @@ -2928,7 +2541,7 @@ "deploy": { "inputs": { "fenix": "fenix", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_4", "nixpkgs": [ "db-sync", "cardano-world", @@ -2939,7 +2552,7 @@ "fenix", "nixpkgs" ], - "utils": "utils" + "utils": "utils_3" }, "locked": { "lastModified": 1638318651, @@ -2958,7 +2571,7 @@ "deploy_2": { "inputs": { "fenix": "fenix_3", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -2967,7 +2580,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_7" + "utils": "utils_9" }, "locked": { "lastModified": 1638318651, @@ -2986,7 +2599,7 @@ "deploy_3": { "inputs": { "fenix": "fenix_5", - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -2996,7 +2609,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_15" + "utils": "utils_17" }, "locked": { "lastModified": 1638318651, @@ -3013,12 +2626,26 @@ } }, "devshell": { + "inputs": { + "flake-utils": [ + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -3043,6 +2670,21 @@ } }, "devshell_11": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_12": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3057,7 +2699,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3072,7 +2714,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -3087,7 +2729,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "inputs": { "flake-utils": [ "db-sync", @@ -3116,9 +2758,9 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "inputs": { - "flake-utils": "flake-utils_26", + "flake-utils": "flake-utils_31", "nixpkgs": [ "db-sync", "cardano-world", @@ -3141,7 +2783,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "inputs": { "flake-utils": [ "ogmios", @@ -3172,7 +2814,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_18": { "inputs": { "flake-utils": [ "ogmios-nixos", @@ -3204,6 +2846,21 @@ } }, "devshell_2": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3218,7 +2875,7 @@ "type": "github" } }, - "devshell_3": { + "devshell_4": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -3233,7 +2890,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_5": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3248,7 +2905,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_6": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3263,7 +2920,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_7": { "inputs": { "flake-utils": [ "db-sync", @@ -3294,10 +2951,10 @@ "type": "github" } }, - "devshell_7": { + "devshell_8": { "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_29" + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" }, "locked": { "lastModified": 1644227066, @@ -3313,7 +2970,7 @@ "type": "github" } }, - "devshell_8": { + "devshell_9": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3328,22 +2985,36 @@ "type": "github" } }, - "devshell_9": { + "dmerge": { + "inputs": { + "nixlib": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "dmerge": { + "dmerge_2": { "inputs": { "nixlib": [ "db-sync", @@ -3374,7 +3045,7 @@ "type": "github" } }, - "dmerge_2": { + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -3403,7 +3074,7 @@ "type": "github" } }, - "dmerge_3": { + "dmerge_4": { "inputs": { "nixlib": [ "ogmios", @@ -3434,7 +3105,7 @@ "type": "github" } }, - "dmerge_4": { + "dmerge_5": { "inputs": { "nixlib": [ "ogmios-nixos", @@ -3467,9 +3138,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_9", "inclusive": "inclusive_6", - "nix": "nix_6", + "nix": "nix_7", "nixpkgs": [ "db-sync", "cardano-world", @@ -3477,7 +3148,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_11" + "utils": "utils_13" }, "locked": { "lastModified": 1644418487, @@ -3496,25 +3167,40 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", + "lastModified": 1689933391, + "narHash": "sha256-jUuy2OzmxegEn0KT3u1uf87eGGA33+of9HodIqS3PLY=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "rev": "5dcea83eecb56241ed72e3631d47e87bb11e45b9", "type": "github" }, "original": { "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", + "type": "github" + } + }, + "em": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", "type": "github" } }, "ema": { "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_47", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -3553,7 +3239,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_57", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -3570,9 +3256,24 @@ "type": "github" } }, + "empty-flake": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_13", "rust-analyzer-src": "rust-analyzer-src" }, "locked": { @@ -3617,7 +3318,7 @@ }, "fenix_3": { "inputs": { - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_26", "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { @@ -3660,7 +3361,7 @@ }, "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_35", + "nixpkgs": "nixpkgs_42", "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { @@ -3705,15 +3406,16 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -3721,15 +3423,16 @@ "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -3737,11 +3440,11 @@ "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -3753,15 +3456,16 @@ "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -3769,15 +3473,16 @@ "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -3785,16 +3490,15 @@ "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -3802,11 +3506,11 @@ "flake-compat_15": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", "type": "github" }, "original": { @@ -3850,11 +3554,11 @@ "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -3863,46 +3567,47 @@ "type": "github" } }, - "flake-compat_2": { + "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } }, - "flake-compat_3": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } }, - "flake-compat_4": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -3911,23 +3616,23 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_6": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1650374568, @@ -3943,31 +3648,30 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_8": { + "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -3976,26 +3680,73 @@ "type": "github" } }, - "flake-compat_9": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_49" + "nixpkgs": "nixpkgs_56" }, "locked": { "lastModified": 1655570068, @@ -4013,11 +3764,11 @@ }, "flake-utils": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -4028,11 +3779,11 @@ }, "flake-utils_10": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4043,11 +3794,11 @@ }, "flake-utils_11": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4058,11 +3809,11 @@ }, "flake-utils_12": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4073,11 +3824,11 @@ }, "flake-utils_13": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -4088,11 +3839,11 @@ }, "flake-utils_14": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -4103,11 +3854,11 @@ }, "flake-utils_15": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -4133,11 +3884,11 @@ }, "flake-utils_17": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { @@ -4148,11 +3899,11 @@ }, "flake-utils_18": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4163,42 +3914,42 @@ }, "flake-utils_19": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, "flake-utils_20": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -4224,11 +3975,11 @@ }, "flake-utils_22": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -4239,11 +3990,11 @@ }, "flake-utils_23": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { @@ -4254,26 +4005,27 @@ }, "flake-utils_24": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_25": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4284,11 +4036,11 @@ }, "flake-utils_26": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4314,11 +4066,11 @@ }, "flake-utils_28": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4329,11 +4081,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -4344,11 +4096,11 @@ }, "flake-utils_3": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4359,11 +4111,11 @@ }, "flake-utils_30": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4374,11 +4126,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -4389,11 +4141,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4404,11 +4156,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4434,11 +4186,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4449,11 +4201,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4464,11 +4216,11 @@ }, "flake-utils_37": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -4494,11 +4246,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4509,11 +4261,11 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4524,11 +4276,11 @@ }, "flake-utils_40": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4539,11 +4291,11 @@ }, "flake-utils_41": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4612,13 +4364,13 @@ "type": "github" } }, - "flake-utils_46": { + "flake-utils_5": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4627,13 +4379,13 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_6": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4642,7 +4394,7 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_7": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -4657,7 +4409,7 @@ "type": "github" } }, - "flake-utils_7": { + "flake-utils_8": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -4672,21 +4424,6 @@ "type": "github" } }, - "flake-utils_8": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_9": { "locked": { "lastModified": 1634851050, @@ -4720,7 +4457,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -4729,7 +4466,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_12" + "utils": "utils_14" }, "locked": { "lastModified": 1642008295, @@ -4830,7 +4567,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_14": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4847,7 +4584,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_15": { + "ghc-8.6.5-iohk_3": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4864,7 +4601,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_16": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4881,7 +4618,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_17": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4898,7 +4635,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "ghc-8.6.5-iohk_6": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4915,7 +4652,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4932,7 +4669,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "ghc-8.6.5-iohk_8": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4949,7 +4686,7 @@ "type": "github" } }, - "ghc-8.6.5-iohk_5": { + "ghc-8.6.5-iohk_9": { "flake": false, "locked": { "lastModified": 1600920045, @@ -4966,78 +4703,66 @@ "type": "github" } }, - "ghc-8.6.5-iohk_6": { + "ghc980": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "lastModified": 1692910316, + "narHash": "sha256-Qv8I3GzzIIN32RTEKI38BW5nO1f7j6Xm+dDeDUyYZWo=", + "ref": "ghc-9.8", + "rev": "249aa8193e4c5c1ee46ce29b39d2fffa57de7904", + "revCount": 61566, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc-8.6.5-iohk_7": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "lastModified": 1693974777, + "narHash": "sha256-r+uFw44X9XVPdDtxylfBuFL+l+5q5cX+vDVT7SCTHB8=", + "ref": "hkm/bump-Cabal", + "rev": "b2bddd0b8214ac1db6239cc25f7c0aabeb2ebb70", + "revCount": 61879, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/ghc" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_5", + "utils": "utils" }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_9": { - "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "gomod2nix": { + "gomod2nix_2": { "inputs": { - "nixpkgs": "nixpkgs_70", - "utils": "utils_26" + "nixpkgs": "nixpkgs_76", + "utils": "utils_28" }, "locked": { "lastModified": 1655245309, @@ -5053,10 +4778,10 @@ "type": "github" } }, - "gomod2nix_2": { + "gomod2nix_3": { "inputs": { - "nixpkgs": "nixpkgs_78", - "utils": "utils_31" + "nixpkgs": "nixpkgs_80", + "utils": "utils_29" }, "locked": { "lastModified": 1655245309, @@ -5088,62 +4813,14 @@ "type": "github" } }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { + "hackage-nix": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1694737374, + "narHash": "sha256-JCnrqgKHhv5Jc7mu1TBAvQG483oHhKICdkb+2ywxwPE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "e3b58bcdc9d0b67a9e9d475a939ec66556167642", "type": "github" }, "original": { @@ -5152,14 +4829,14 @@ "type": "github" } }, - "hackage_12": { + "hackageNix": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { @@ -5168,14 +4845,14 @@ "type": "github" } }, - "hackage_13": { + "hackageNix_2": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1665882657, + "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", "type": "github" }, "original": { @@ -5184,7 +4861,7 @@ "type": "github" } }, - "hackage_14": { + "hackage_10": { "flake": false, "locked": { "lastModified": 1667783503, @@ -5200,22 +4877,6 @@ "type": "github" } }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, "hackage_2": { "flake": false, "locked": { @@ -5267,11 +4928,11 @@ "hackage_5": { "flake": false, "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { @@ -5283,11 +4944,11 @@ "hackage_6": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1643073363, + "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", "type": "github" }, "original": { @@ -5315,11 +4976,11 @@ "hackage_8": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1639098768, + "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", "type": "github" }, "original": { @@ -5331,11 +4992,11 @@ "hackage_9": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1669857312, + "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", "type": "github" }, "original": { @@ -5361,15 +5022,15 @@ }, "haskell-nix": { "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", + "hpc-coveralls": "hpc-coveralls_2", "nix-tools": "nix-tools", "nixpkgs": [ "db-sync", @@ -5379,9 +5040,9 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", "nixpkgs-unstable": [ "db-sync", "cardano-world", @@ -5389,8 +5050,8 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" }, "locked": { "lastModified": 1646097976, @@ -5408,20 +5069,20 @@ }, "haskell-nix_2": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_22", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", "cardano-world", "hackage" ], - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", @@ -5429,13 +5090,13 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" }, "locked": { "lastModified": 1659439444, @@ -5453,66 +5114,75 @@ }, "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_5", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_12", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "ghc980": "ghc980", + "ghc99": "ghc99", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "iserv-proxy": "iserv-proxy_2", "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" }, "locked": { - "lastModified": 1674575951, - "narHash": "sha256-m1uLB0tMV3nO3O//09gNGmlxlnfwMgAQnM+MliVhofU=", - "owner": "mlabs-haskell", + "lastModified": 1694773367, + "narHash": "sha256-bDIQ9FRE+jc5CN65QfLTk0JgjKJgl5fAEISV0X5XkKU=", + "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "1eaffea8eee8bc446fbc869288dab9a08f742c06", + "rev": "ef09c9687d2f66bd8f5e226acaaf3f85af9b24cc", "type": "github" }, "original": { - "owner": "mlabs-haskell", + "owner": "input-output-hk", "repo": "haskell.nix", "type": "github" } }, "haskell-nix_4": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "nix-tools": "nix-tools_6", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_5", "nixpkgs": [ "kupo-nixos", "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" }, "locked": { "lastModified": 1654219238, @@ -5531,31 +5201,31 @@ }, "haskell-nix_5": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_10", - "iserv-proxy": "iserv-proxy", + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_12", + "flake-compat": "flake-compat_16", + "flake-utils": "flake-utils_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "hackage": "hackage_9", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_11", + "iserv-proxy": "iserv-proxy_3", "nixpkgs": [ "ogmios", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_12", + "tullia": "tullia_3" }, "locked": { "lastModified": 1670464865, @@ -5573,29 +5243,29 @@ }, "haskell-nix_6": { "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_16", + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_13", + "flake-compat": "flake-compat_19", "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_14", - "hpc-coveralls": "hpc-coveralls_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "hackage": "hackage_10", + "hpc-coveralls": "hpc-coveralls_13", "hydra": "hydra_12", "nixpkgs": [ "ogmios-nixos", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16", - "tullia": "tullia_3" + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_13", + "tullia": "tullia_4" }, "locked": { "lastModified": 1667783630, @@ -5611,57 +5281,63 @@ "type": "github" } }, - "haskell-nix_7": { + "haskellNix": { "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_17", - "flake-utils": "flake-utils_46", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "hackage": "hackage_15", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_13", - "nix-tools": "nix-tools_14", + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", "nixpkgs": [ - "plutip", - "haskell-nix", - "nixpkgs-unstable" + "cardano-node", + "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_17" + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" }, "locked": { - "lastModified": 1653486569, - "narHash": "sha256-342b0LPX6kaBuEX8KZV40FwCCFre1lCtjdTQIDEt9kw=", - "owner": "mlabs-haskell", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "220f8a9cd166e726aea62843bdafa7ecded3375c", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { - "owner": "mlabs-haskell", + "owner": "input-output-hk", "repo": "haskell.nix", "type": "github" } }, - "haskellNix": { + "haskellNix_2": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_21", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_4", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", "nix-tools": "nix-tools_2", "nixpkgs": [ "db-sync", @@ -5669,12 +5345,12 @@ "cardano-wallet", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" }, "locked": { "lastModified": 1655369909, @@ -5690,69 +5366,30 @@ "type": "github" } }, - "haskellNix_10": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cardano-shell": "cardano-shell_15", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "hackage": "hackage_13", - "hpc-coveralls": "hpc-coveralls_15", - "nix-tools": "nix-tools_13", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { + "haskellNix_3": { "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", "nix-tools": "nix-tools_4", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" }, "locked": { "lastModified": 1650936156, @@ -5768,50 +5405,6 @@ "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_30", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "haskellNix_4": { "inputs": { "HTTP": "HTTP_8", @@ -5819,30 +5412,35 @@ "cabal-34": "cabal-34_8", "cabal-36": "cabal-36_8", "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_31", + "flake-compat": "flake-compat_14", + "flake-utils": "flake-utils_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_7", + "hackage": [ + "ogmios", + "cardano-node", + "hackageNix" + ], "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_7", + "hydra": "hydra_10", "nixpkgs": [ "ogmios", "cardano-node", - "node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_8", "nixpkgs-2105": "nixpkgs-2105_8", "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_4", "nixpkgs-unstable": "nixpkgs-unstable_10", "old-ghc-nix": "old-ghc-nix_8", "stackage": "stackage_8" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1665882789, + "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "9af167fb4343539ca99465057262f289b44f55da", "type": "github" }, "original": { @@ -5858,17 +5456,15 @@ "cabal-34": "cabal-34_9", "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_8", + "hackage": "hackage_6", "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_8", + "nix-tools": "nix-tools_6", "nixpkgs": [ "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_9", @@ -5897,17 +5493,19 @@ "HTTP": "HTTP_10", "cabal-32": "cabal-32_10", "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_36", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_9", + "hackage": "hackage_7", "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_9", + "nix-tools": "nix-tools_7", "nixpkgs": [ "ogmios", "cardano-node", "node-snapshot", - "plutus-example", + "membench", + "cardano-node-snapshot", "nixpkgs" ], "nixpkgs-2003": "nixpkgs-2003_10", @@ -5917,88 +5515,6 @@ "old-ghc-nix": "old-ghc-nix_10", "stackage": "stackage_10" }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_7": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_38", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": [ - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_11", - "nix-tools": "nix-tools_10", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_8": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_39", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "hackage": "hackage_11", - "hpc-coveralls": "hpc-coveralls_13", - "nix-tools": "nix-tools_11", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_13" - }, "locked": { "lastModified": 1643073543, "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", @@ -6013,39 +5529,37 @@ "type": "github" } }, - "haskellNix_9": { + "haskellNix_7": { "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_40", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "hackage": "hackage_12", - "hpc-coveralls": "hpc-coveralls_14", - "nix-tools": "nix-tools_12", + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": "hackage_8", + "hpc-coveralls": "hpc-coveralls_11", + "nix-tools": "nix-tools_8", "nixpkgs": [ - "ogmios-nixos", + "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", + "plutus-example", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_14" + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_11" }, "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", + "lastModified": 1639098904, + "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", + "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", "type": "github" }, "original": { @@ -6054,71 +5568,75 @@ "type": "github" } }, - "hpc-coveralls": { + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_10": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_11": { + "hls-2.0": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_12": { + "hls-2.2": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_13": { + "hpc-coveralls": { "flake": false, "locked": { "lastModified": 1607498076, @@ -6134,7 +5652,7 @@ "type": "github" } }, - "hpc-coveralls_14": { + "hpc-coveralls_10": { "flake": false, "locked": { "lastModified": 1607498076, @@ -6150,7 +5668,7 @@ "type": "github" } }, - "hpc-coveralls_15": { + "hpc-coveralls_11": { "flake": false, "locked": { "lastModified": 1607498076, @@ -6166,7 +5684,7 @@ "type": "github" } }, - "hpc-coveralls_16": { + "hpc-coveralls_12": { "flake": false, "locked": { "lastModified": 1607498076, @@ -6182,7 +5700,7 @@ "type": "github" } }, - "hpc-coveralls_17": { + "hpc-coveralls_13": { "flake": false, "locked": { "lastModified": 1607498076, @@ -6326,55 +5844,28 @@ "type": "github" } }, - "hw-aeson": { - "flake": false, - "locked": { - "lastModified": 1660218478, - "narHash": "sha256-t4QLmGf5ytzjS0ynn6xON61J+fvBF8vf/+zsBzmw/rM=", - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", - "type": "github" - }, - "original": { - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", - "type": "github" - } - }, "hydra": { "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], + "nix": "nix", "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", + "cardano-node", + "haskellNix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" + "id": "hydra", + "type": "indirect" } }, "hydra_10": { @@ -6382,7 +5873,8 @@ "nix": "nix_17", "nixpkgs": [ "ogmios", - "haskell-nix", + "cardano-node", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -6405,9 +5897,8 @@ "inputs": { "nix": "nix_18", "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "haskellNix", + "ogmios", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -6450,31 +5941,41 @@ "type": "indirect" } }, - "hydra_13": { + "hydra_2": { "inputs": { - "nix": "nix_20", + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], "nixpkgs": [ - "plutip", - "haskell-nix", - "hydra", - "nix", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", "nixpkgs" ] }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" } }, - "hydra_2": { + "hydra_3": { "inputs": { "nix": [ "db-sync", @@ -6504,7 +6005,7 @@ "type": "github" } }, - "hydra_3": { + "hydra_4": { "inputs": { "nix": [ "db-sync", @@ -6536,9 +6037,9 @@ "type": "github" } }, - "hydra_4": { + "hydra_5": { "inputs": { - "nix": "nix_11", + "nix": "nix_12", "nixpkgs": [ "db-sync", "cardano-world", @@ -6562,9 +6063,9 @@ "type": "indirect" } }, - "hydra_5": { + "hydra_6": { "inputs": { - "nix": "nix_12", + "nix": "nix_13", "nixpkgs": [ "db-sync", "cardano-world", @@ -6587,9 +6088,9 @@ "type": "indirect" } }, - "hydra_6": { + "hydra_7": { "inputs": { - "nix": "nix_13", + "nix": "nix_14", "nixpkgs": [ "db-sync", "haskellNix", @@ -6611,9 +6112,9 @@ "type": "indirect" } }, - "hydra_7": { + "hydra_8": { "inputs": { - "nix": "nix_14", + "nix": "nix_15", "nixpkgs": [ "haskell-nix", "hydra", @@ -6622,11 +6123,11 @@ ] }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", "owner": "NixOS", "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { @@ -6634,9 +6135,9 @@ "type": "indirect" } }, - "hydra_8": { + "hydra_9": { "inputs": { - "nix": "nix_15", + "nix": "nix_16", "nixpkgs": [ "kupo-nixos", "haskell-nix", @@ -6658,29 +6159,27 @@ "type": "indirect" } }, - "hydra_9": { + "incl": { "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "ogmios", + "nixlib": [ "cardano-node", - "haskellNix", - "hydra", - "nix", + "tullia", + "std", "nixpkgs" ] }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "divnix", + "repo": "incl", + "type": "github" } }, "inclusive": { @@ -6883,10 +6382,10 @@ }, "iogo": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_4", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_15", - "utils": "utils_6" + "nixpkgs": "nixpkgs_22", + "utils": "utils_8" }, "locked": { "lastModified": 1652212694, @@ -6904,10 +6403,10 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_14", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_44", - "utils": "utils_20" + "nixpkgs": "nixpkgs_51", + "utils": "utils_22" }, "locked": { "lastModified": 1658302707, @@ -6945,16 +6444,21 @@ "type": "github" } }, - "iohk-nix-environments": { + "iohk-nix_2": { "inputs": { - "nixpkgs": "nixpkgs_63" + "blst": "blst_2", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" }, "locked": { - "lastModified": 1677230996, - "narHash": "sha256-L/PDahK725s1k+sg6MOtVG6sBiKEmgHhRjaequBRbXI=", + "lastModified": 1693968598, + "narHash": "sha256-2wFadXHMgNYrF7N6jndfp3Ywm2G0r+QTPifrlzugkjo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "82e833b60c47bf0f352443879af1766712e9ca6f", + "rev": "7d738e59d276336d1e02447e27b0373164d3bc88", "type": "github" }, "original": { @@ -6963,7 +6467,7 @@ "type": "github" } }, - "iohk-nix_2": { + "iohk-nix_3": { "inputs": { "nixpkgs": [ "kupo-nixos", @@ -6986,7 +6490,7 @@ "type": "github" } }, - "iohk-nix_3": { + "iohk-nix_4": { "inputs": { "nixpkgs": [ "ogmios", @@ -7007,7 +6511,7 @@ "type": "github" } }, - "iohk-nix_4": { + "iohk-nix_5": { "inputs": { "nixpkgs": [ "ogmios-nixos", @@ -7029,61 +6533,22 @@ "type": "github" } }, - "iohk-nix_5": { - "flake": false, - "locked": { - "lastModified": 1672846257, - "narHash": "sha256-khuzjVfyNCVcsV5cHRyyb2OgWLbYLKSJlrVDNmc2Tv4=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "ca3d466ed36011bcc14290c6d36c503eb03eb71b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, "iohkNix": { "inputs": { + "blst": "blst", "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_10": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", "cardano-node", - "node-snapshot", - "plutus-example", "nixpkgs" - ] + ], + "secp256k1": "secp256k1", + "sodium": "sodium" }, "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { @@ -7096,15 +6561,17 @@ "inputs": { "nixpkgs": [ "db-sync", + "cardano-world", + "cardano-wallet", "nixpkgs" ] }, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { @@ -7116,8 +6583,7 @@ "iohkNix_3": { "inputs": { "nixpkgs": [ - "ogmios", - "cardano-node", + "db-sync", "nixpkgs" ] }, @@ -7140,16 +6606,15 @@ "nixpkgs": [ "ogmios", "cardano-node", - "node-snapshot", "nixpkgs" ] }, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", "type": "github" }, "original": { @@ -7164,63 +6629,15 @@ "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", "nixpkgs" ] }, "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "lastModified": 1631778944, + "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", "type": "github" }, "original": { @@ -7229,12 +6646,14 @@ "type": "github" } }, - "iohkNix_8": { + "iohkNix_6": { "inputs": { "nixpkgs": [ - "ogmios-nixos", + "ogmios", "cardano-node", "node-snapshot", + "membench", + "cardano-node-snapshot", "nixpkgs" ] }, @@ -7252,23 +6671,22 @@ "type": "github" } }, - "iohkNix_9": { + "iohkNix_7": { "inputs": { "nixpkgs": [ - "ogmios-nixos", + "ogmios", "cardano-node", "node-snapshot", - "membench", - "cardano-node-snapshot", + "plutus-example", "nixpkgs" ] }, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "lastModified": 1633964277, + "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", "type": "github" }, "original": { @@ -7278,6 +6696,40 @@ } }, "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { "flake": false, "locked": { "lastModified": 1639165170, @@ -7313,7 +6765,7 @@ "kupo-nixos": { "inputs": { "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_2", + "iohk-nix": "iohk-nix_3", "kupo": [ "kupo" ], @@ -7357,11 +6809,11 @@ "lowdown-src_10": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -7515,22 +6967,6 @@ } }, "lowdown-src_2": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_20": { "flake": false, "locked": { "lastModified": 1633514407, @@ -7549,11 +6985,11 @@ "lowdown-src_3": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -7645,11 +7081,11 @@ "lowdown-src_9": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -7724,7 +7160,7 @@ }, "membench": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", "cardano-node-measured": [ "ogmios", "cardano-node", @@ -7760,7 +7196,7 @@ }, "membench_2": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", "cardano-node-measured": [ "ogmios", "cardano-node", @@ -7806,94 +7242,39 @@ "type": "github" } }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, - "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" - } - }, - "membench_4": { + "n2c": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios-nixos", + "flake-utils": [ "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" + "tullia", + "std", + "flake-utils" ], "nixpkgs": [ - "ogmios-nixos", "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "tullia", + "std", "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" + ] }, "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "n2c": { + "n2c_2": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_20" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1650568002, @@ -7909,10 +7290,10 @@ "type": "github" } }, - "n2c_2": { + "n2c_3": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1655533513, @@ -7928,9 +7309,9 @@ "type": "github" } }, - "n2c_3": { + "n2c_4": { "inputs": { - "flake-utils": "flake-utils_37", + "flake-utils": "flake-utils_41", "nixpkgs": [ "ogmios", "haskell-nix", @@ -7953,7 +7334,7 @@ "type": "github" } }, - "n2c_4": { + "n2c_5": { "inputs": { "flake-utils": "flake-utils_45", "nixpkgs": [ @@ -7981,27 +7362,27 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_3", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", + "owner": "NixOS", + "ref": "2.11.0", "repo": "nix", "type": "github" } }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": [ "db-sync", "cardano-world", @@ -8016,7 +7397,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_13" + "utils": "utils_15" }, "locked": { "lastModified": 1644317729, @@ -8052,24 +7433,21 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_3", "flake-utils": [ - "ogmios", - "haskell-nix", + "cardano-node", "tullia", "nix2container", "flake-utils" ], "gomod2nix": "gomod2nix", "nixpkgs": [ - "ogmios", - "haskell-nix", + "cardano-node", "tullia", "nixpkgs" ], "nixpkgs-lib": [ - "ogmios", - "haskell-nix", + "cardano-node", "tullia", "nixpkgs" ] @@ -8092,7 +7470,7 @@ "inputs": { "flake-compat": "flake-compat_17", "flake-utils": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", "nix2container", @@ -8100,120 +7478,78 @@ ], "gomod2nix": "gomod2nix_2", "nixpkgs": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", "nixpkgs" ], "nixpkgs-lib": [ - "ogmios-nixos", + "ogmios", "haskell-nix", "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-tools": { - "flake": false, - "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_10": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_11": { - "flake": false, - "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", - "type": "github" + "nixpkgs" + ] }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_12": { - "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "nix-tools_13": { - "flake": false, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ogmios-nixos", + "haskell-nix", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "nix-tools_14": { + "nix-tools": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { @@ -8289,11 +7625,11 @@ "nix-tools_6": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1636018067, + "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", "type": "github" }, "original": { @@ -8334,26 +7670,48 @@ "type": "github" } }, - "nix-tools_9": { - "flake": false, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nix2container": { + "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1653427219, @@ -8370,10 +7728,10 @@ "type": "github" } }, - "nix2container_2": { + "nix2container_4": { "inputs": { - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_71" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_77" }, "locked": { "lastModified": 1658567952, @@ -8389,10 +7747,10 @@ "type": "github" } }, - "nix2container_3": { + "nix2container_5": { "inputs": { "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_79" + "nixpkgs": "nixpkgs_81" }, "locked": { "lastModified": 1658567952, @@ -8424,38 +7782,21 @@ "type": "github" } }, - "nixTools_2": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_40", - "nixpkgs-regression": "nixpkgs-regression_8" + "nixpkgs": "nixpkgs_45" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "repo": "nix", "type": "github" } @@ -8463,20 +7804,19 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_47", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", + "owner": "nixos", "repo": "nix", "type": "github" } @@ -8484,7 +7824,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_54", + "nixpkgs": "nixpkgs_59", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -8526,7 +7866,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_62", + "nixpkgs": "nixpkgs_68", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -8547,20 +7887,20 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_64", + "nixpkgs": "nixpkgs_69", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", + "ref": "2.11.0", "repo": "nix", "type": "github" } @@ -8568,7 +7908,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_66", + "nixpkgs": "nixpkgs_70", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -8589,7 +7929,7 @@ "nix_17": { "inputs": { "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_72", "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { @@ -8610,7 +7950,7 @@ "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_74", + "nixpkgs": "nixpkgs_75", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -8631,7 +7971,7 @@ "nix_19": { "inputs": { "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_77", + "nixpkgs": "nixpkgs_79", "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { @@ -8652,48 +7992,48 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", "repo": "nix", "type": "github" } }, - "nix_20": { + "nix_3": { "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_81", - "nixpkgs-regression": "nixpkgs-regression_18" + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_16" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", "repo": "nix", "type": "github" } }, - "nix_3": { + "nix_4": { "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_11", - "nixpkgs-regression": "nixpkgs-regression_2" + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_18", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { "lastModified": 1645189081, @@ -8709,11 +8049,11 @@ "type": "github" } }, - "nix_4": { + "nix_5": { "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_21", - "nixpkgs-regression": "nixpkgs-regression_3" + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_28", + "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { "lastModified": 1652510778, @@ -8730,11 +8070,11 @@ "type": "github" } }, - "nix_5": { + "nix_6": { "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_23", - "nixpkgs-regression": "nixpkgs-regression_4" + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { "lastModified": 1645189081, @@ -8750,11 +8090,11 @@ "type": "github" } }, - "nix_6": { + "nix_7": { "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_37", + "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { "lastModified": 1644413094, @@ -8771,11 +8111,11 @@ "type": "github" } }, - "nix_7": { + "nix_8": { "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_31", - "nixpkgs-regression": "nixpkgs-regression_6" + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_38", + "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { "lastModified": 1645437800, @@ -8792,11 +8132,11 @@ "type": "github" } }, - "nix_8": { + "nix_9": { "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_36", - "nixpkgs-regression": "nixpkgs-regression_7" + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { "lastModified": 1646164353, @@ -8813,49 +8153,33 @@ "type": "github" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_38" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, "nixago": { "inputs": { "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", + "cardano-node", + "tullia", "std", "flake-utils" ], - "nixago-exts": "nixago-exts", + "nixago-exts": [ + "cardano-node", + "tullia", + "std", + "blank" + ], "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", + "cardano-node", + "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { @@ -8899,13 +8223,15 @@ "flake-utils": [ "db-sync", "cardano-world", + "bitte", "std", "flake-utils" ], - "nixago-exts": "nixago-exts_2", + "nixago-exts": "nixago-exts", "nixpkgs": [ "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -8925,6 +8251,36 @@ } }, "nixago_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { "inputs": { "flake-utils": [ "ogmios", @@ -8962,7 +8318,7 @@ "type": "github" } }, - "nixago_4": { + "nixago_5": { "inputs": { "flake-utils": [ "ogmios-nixos", @@ -9047,16 +8403,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1676253841, - "narHash": "sha256-jhuI8Mmky8VCD45OoJEuF6HdPLFBwNrHA0ljjZ/zkfw=", + "lastModified": 1694778746, + "narHash": "sha256-6T+tR0Ik/7hzYkVKJ32PqghuGwVZzLbicUZFcyC8Eus=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a45a8916243a7d27acc358f4fc18c4491f3eeca8", + "rev": "19969392ddb1182c46bd2dd3f183472a4f8cc904", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-22.11", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } @@ -9141,70 +8497,6 @@ "type": "github" } }, - "nixpkgs-2003_14": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_15": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_16": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -9334,38 +8626,6 @@ } }, "nixpkgs-2105": { - "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_10": { - "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -9381,39 +8641,7 @@ "type": "github" } }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { - "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_14": { + "nixpkgs-2105_10": { "locked": { "lastModified": 1640283157, "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", @@ -9429,7 +8657,7 @@ "type": "github" } }, - "nixpkgs-2105_15": { + "nixpkgs-2105_11": { "locked": { "lastModified": 1630481079, "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", @@ -9445,7 +8673,7 @@ "type": "github" } }, - "nixpkgs-2105_16": { + "nixpkgs-2105_12": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -9461,13 +8689,13 @@ "type": "github" } }, - "nixpkgs-2105_17": { + "nixpkgs-2105_13": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -9479,11 +8707,11 @@ }, "nixpkgs-2105_2": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -9494,54 +8722,6 @@ } }, "nixpkgs-2105_3": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_4": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_5": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_6": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -9557,13 +8737,13 @@ "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { @@ -9573,13 +8753,13 @@ "type": "github" } }, - "nixpkgs-2105_8": { - "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -9589,13 +8769,13 @@ "type": "github" } }, - "nixpkgs-2105_9": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -9605,61 +8785,61 @@ "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_10": { + "nixpkgs-2105_8": { "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_11": { + "nixpkgs-2105_9": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1640283157, + "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_12": { + "nixpkgs-2111": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9669,7 +8849,7 @@ "type": "github" } }, - "nixpkgs-2111_13": { + "nixpkgs-2111_10": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -9685,13 +8865,13 @@ "type": "github" } }, - "nixpkgs-2111_14": { + "nixpkgs-2111_11": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1638410074, + "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", "type": "github" }, "original": { @@ -9701,13 +8881,13 @@ "type": "github" } }, - "nixpkgs-2111_15": { + "nixpkgs-2111_12": { "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9717,7 +8897,7 @@ "type": "github" } }, - "nixpkgs-2111_16": { + "nixpkgs-2111_13": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -9733,13 +8913,13 @@ "type": "github" } }, - "nixpkgs-2111_17": { + "nixpkgs-2111_2": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -9749,7 +8929,7 @@ "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs-2111_3": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -9765,7 +8945,7 @@ "type": "github" } }, - "nixpkgs-2111_3": { + "nixpkgs-2111_4": { "locked": { "lastModified": 1656782578, "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", @@ -9781,7 +8961,7 @@ "type": "github" } }, - "nixpkgs-2111_4": { + "nixpkgs-2111_5": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -9797,13 +8977,13 @@ "type": "github" } }, - "nixpkgs-2111_5": { + "nixpkgs-2111_6": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9813,7 +8993,7 @@ "type": "github" } }, - "nixpkgs-2111_6": { + "nixpkgs-2111_7": { "locked": { "lastModified": 1648744337, "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", @@ -9829,7 +9009,7 @@ "type": "github" } }, - "nixpkgs-2111_7": { + "nixpkgs-2111_8": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -9845,7 +9025,7 @@ "type": "github" } }, - "nixpkgs-2111_8": { + "nixpkgs-2111_9": { "locked": { "lastModified": 1640283207, "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", @@ -9861,23 +9041,23 @@ "type": "github" } }, - "nixpkgs-2111_9": { + "nixpkgs-2205": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs-2205_2": { "locked": { "lastModified": 1657876628, "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", @@ -9893,7 +9073,23 @@ "type": "github" } }, - "nixpkgs-2205_2": { + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { "locked": { "lastModified": 1663981975, "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", @@ -9909,7 +9105,7 @@ "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs-2205_5": { "locked": { "lastModified": 1663981975, "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", @@ -9925,7 +9121,7 @@ "type": "github" } }, - "nixpkgs-2205_4": { + "nixpkgs-2205_6": { "locked": { "lastModified": 1663981975, "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", @@ -9942,6 +9138,38 @@ } }, "nixpkgs-2211": { + "locked": { + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_2": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_3": { "locked": { "lastModified": 1669997163, "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", @@ -9957,6 +9185,22 @@ "type": "github" } }, + "nixpkgs-2305": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-docker": { "locked": { "lastModified": 1652739558, @@ -9983,9 +9227,10 @@ "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", + "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "type": "github" } }, "nixpkgs-regression_10": { @@ -10043,9 +9288,10 @@ "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", + "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "type": "github" } }, "nixpkgs-regression_14": { @@ -10108,21 +9354,6 @@ "type": "indirect" } }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, "nixpkgs-regression_2": { "locked": { "lastModified": 1643052045, @@ -10245,15 +9476,15 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -10261,11 +9492,11 @@ }, "nixpkgs-unstable_10": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { @@ -10292,54 +9523,6 @@ } }, "nixpkgs-unstable_12": { - "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_13": { - "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_14": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_15": { "locked": { "lastModified": 1641285291, "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", @@ -10355,13 +9538,13 @@ "type": "github" } }, - "nixpkgs-unstable_16": { + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1635295995, + "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", "type": "github" }, "original": { @@ -10371,13 +9554,13 @@ "type": "github" } }, - "nixpkgs-unstable_17": { + "nixpkgs-unstable_14": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", "type": "github" }, "original": { @@ -10387,7 +9570,7 @@ "type": "github" } }, - "nixpkgs-unstable_18": { + "nixpkgs-unstable_15": { "locked": { "lastModified": 1663905476, "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", @@ -10403,23 +9586,23 @@ "type": "github" } }, - "nixpkgs-unstable_19": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs-unstable_3": { "locked": { "lastModified": 1656338871, "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", @@ -10435,7 +9618,7 @@ "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs-unstable_4": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -10451,7 +9634,7 @@ "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs-unstable_5": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -10467,7 +9650,7 @@ "type": "github" } }, - "nixpkgs-unstable_5": { + "nixpkgs-unstable_6": { "locked": { "lastModified": 1657888067, "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", @@ -10483,7 +9666,7 @@ "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs-unstable_7": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -10499,13 +9682,13 @@ "type": "github" } }, - "nixpkgs-unstable_7": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { @@ -10515,7 +9698,7 @@ "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs-unstable_9": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -10531,13 +9714,13 @@ "type": "github" } }, - "nixpkgs-unstable_9": { + "nixpkgs_10": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { @@ -10547,7 +9730,99 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs_11": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_17": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -10563,7 +9838,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -10578,7 +9853,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_19": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -10594,7 +9869,21 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_2": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -10610,7 +9899,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_21": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -10626,7 +9915,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_22": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -10642,7 +9931,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_23": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -10658,7 +9947,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_24": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -10674,7 +9963,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_25": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -10689,7 +9978,7 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -10705,21 +9994,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_20": { + "nixpkgs_27": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -10734,7 +10009,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_28": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -10749,7 +10024,7 @@ "type": "indirect" } }, - "nixpkgs_22": { + "nixpkgs_29": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -10765,7 +10040,23 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_3": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -10780,7 +10071,7 @@ "type": "indirect" } }, - "nixpkgs_24": { + "nixpkgs_31": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -10796,7 +10087,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_32": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -10812,7 +10103,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_33": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -10828,7 +10119,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_34": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -10844,7 +10135,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_35": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -10860,7 +10151,7 @@ "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_36": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -10876,23 +10167,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_37": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -10907,7 +10182,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_38": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -10922,7 +10197,7 @@ "type": "indirect" } }, - "nixpkgs_32": { + "nixpkgs_39": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -10938,7 +10213,22 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_4": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -10952,7 +10242,7 @@ "type": "indirect" } }, - "nixpkgs_34": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -10968,7 +10258,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_42": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -10984,7 +10274,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -10999,7 +10289,7 @@ "type": "indirect" } }, - "nixpkgs_37": { + "nixpkgs_44": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -11015,7 +10305,7 @@ "type": "github" } }, - "nixpkgs_38": { + "nixpkgs_45": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -11030,7 +10320,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_46": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -11046,21 +10336,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_40": { + "nixpkgs_47": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11075,7 +10351,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_48": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -11091,7 +10367,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_49": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -11107,7 +10383,23 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_5": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11123,7 +10415,7 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_51": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -11139,7 +10431,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_52": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -11155,7 +10447,7 @@ "type": "github" } }, - "nixpkgs_46": { + "nixpkgs_53": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11171,7 +10463,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_54": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -11187,7 +10479,7 @@ "type": "github" } }, - "nixpkgs_48": { + "nixpkgs_55": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -11201,7 +10493,7 @@ "type": "indirect" } }, - "nixpkgs_49": { + "nixpkgs_56": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -11217,23 +10509,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_57": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -11247,7 +10523,7 @@ "type": "indirect" } }, - "nixpkgs_51": { + "nixpkgs_58": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -11261,7 +10537,7 @@ "type": "indirect" } }, - "nixpkgs_52": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11276,7 +10552,22 @@ "type": "indirect" } }, - "nixpkgs_53": { + "nixpkgs_6": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -11291,7 +10582,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11306,7 +10597,7 @@ "type": "indirect" } }, - "nixpkgs_55": { + "nixpkgs_62": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11321,7 +10612,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_63": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -11337,7 +10628,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_64": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -11353,7 +10644,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_65": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -11368,7 +10659,7 @@ "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_66": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -11384,23 +10675,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_67": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -11416,7 +10691,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11431,36 +10706,39 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_69": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_7": { "locked": { - "lastModified": 1677021523, - "narHash": "sha256-0EhZjJ3rq8ZTTJ6Trrf/9hYtnIry0OsyY2NKoQoOS5Q=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "5a5adc2ad7009851d7d0fc26311e42a93b171d2e", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_70": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11475,7 +10753,7 @@ "type": "indirect" } }, - "nixpkgs_65": { + "nixpkgs_71": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11489,7 +10767,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_72": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11504,7 +10782,7 @@ "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_73": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11518,7 +10796,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_74": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -11532,22 +10810,7 @@ "type": "indirect" } }, - "nixpkgs_69": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_7": { + "nixpkgs_75": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11562,7 +10825,7 @@ "type": "indirect" } }, - "nixpkgs_70": { + "nixpkgs_76": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -11578,7 +10841,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_77": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11593,7 +10856,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_78": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11609,21 +10872,7 @@ "type": "github" } }, - "nixpkgs_73": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_74": { + "nixpkgs_79": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11638,50 +10887,23 @@ "type": "indirect" } }, - "nixpkgs_75": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_76": { + "nixpkgs_8": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_77": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_80": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -11697,38 +10919,22 @@ "type": "github" } }, - "nixpkgs_79": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", + "nixpkgs_81": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs_82": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -11744,33 +10950,17 @@ "type": "github" } }, - "nixpkgs_81": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, "nixpkgs_9": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-20.09-small", "type": "indirect" } }, @@ -11790,27 +10980,11 @@ "type": "github" } }, - "node-process_2": { - "flake": false, - "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "type": "github" - } - }, "node-snapshot": { "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", + "customConfig": "customConfig_5", + "haskellNix": "haskellNix_5", + "iohkNix": "iohkNix_5", "membench": "membench", "nixpkgs": [ "ogmios", @@ -11820,38 +10994,7 @@ "nixpkgs-2105" ], "plutus-example": "plutus-example", - "utils": "utils_24" - }, - "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", - "type": "github" - } - }, - "node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", - "membench": "membench_3", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example_2", - "utils": "utils_29" + "utils": "utils_26" }, "locked": { "lastModified": 1645120669, @@ -11870,9 +11013,9 @@ }, "nomad": { "inputs": { - "nix": "nix_2", - "nixpkgs": "nixpkgs_10", - "utils": "utils_2" + "nix": "nix_3", + "nixpkgs": "nixpkgs_17", + "utils": "utils_4" }, "locked": { "lastModified": 1648128770, @@ -11891,11 +11034,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell", + "devshell": "devshell_2", "inclusive": "inclusive", - "nix": "nix_3", - "nixpkgs": "nixpkgs_12", - "utils": "utils_3" + "nix": "nix_4", + "nixpkgs": "nixpkgs_19", + "utils": "utils_5" }, "locked": { "lastModified": 1648029666, @@ -11913,11 +11056,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_4", - "nix": "nix_5", - "nixpkgs": "nixpkgs_24", - "utils": "utils_8" + "nix": "nix_6", + "nixpkgs": "nixpkgs_31", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -11935,11 +11078,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": "inclusive_9", - "nix": "nix_10", - "nixpkgs": "nixpkgs_41", - "utils": "utils_17" + "nix": "nix_11", + "nixpkgs": "nixpkgs_48", + "utils": "utils_19" }, "locked": { "lastModified": 1648029666, @@ -11957,10 +11100,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_13", - "utils": "utils_4" + "nixpkgs": "nixpkgs_20", + "utils": "utils_6" }, "locked": { "lastModified": 1649836589, @@ -11978,10 +11121,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_25", - "utils": "utils_9" + "nixpkgs": "nixpkgs_32", + "utils": "utils_11" }, "locked": { "lastModified": 1658244176, @@ -11999,10 +11142,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_42", - "utils": "utils_18" + "nixpkgs": "nixpkgs_49", + "utils": "utils_20" }, "locked": { "lastModified": 1649836589, @@ -12020,9 +11163,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_9", - "nixpkgs": "nixpkgs_39", - "utils": "utils_16" + "nix": "nix_10", + "nixpkgs": "nixpkgs_46", + "utils": "utils_18" }, "locked": { "lastModified": 1648128770, @@ -12039,6 +11182,21 @@ "type": "github" } }, + "nosys": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, "ogmios": { "flake": false, "locked": { @@ -12058,13 +11216,15 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_4", - "blank": "blank_6", + "CHaP": "CHaP_5", + "blank": "blank_7", "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_3", - "flake-compat": "flake-compat_15", + "cardano-node": [ + "cardano-node" + ], + "flake-compat": "flake-compat_18", "haskell-nix": "haskell-nix_6", - "iohk-nix": "iohk-nix_4", + "iohk-nix": "iohk-nix_5", "nixpkgs": [ "ogmios-nixos", "haskell-nix", @@ -12087,13 +11247,13 @@ }, "ogmios_2": { "inputs": { - "CHaP": "CHaP_2", - "blank": "blank_4", + "CHaP": "CHaP_3", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_11", + "cardano-node": "cardano-node_3", + "flake-compat": "flake-compat_15", "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_3", + "iohk-nix": "iohk-nix_4", "nixpkgs": [ "ogmios", "haskell-nix", @@ -12200,74 +11360,6 @@ "type": "github" } }, - "old-ghc-nix_14": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_15": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_16": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_17": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -12407,11 +11499,11 @@ "ops-lib": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { @@ -12452,39 +11544,23 @@ "type": "github" } }, - "ouroboros-network": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_2": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "ouroboros-network", + "repo": "ops-lib", "type": "github" } }, - "ouroboros-network_3": { + "ouroboros-network": { "flake": false, "locked": { "lastModified": 1643385024, @@ -12500,7 +11576,7 @@ "type": "github" } }, - "ouroboros-network_4": { + "ouroboros-network_2": { "flake": false, "locked": { "lastModified": 1643385024, @@ -12518,32 +11594,36 @@ }, "plutip": { "inputs": { - "CHaP": "CHaP_5", - "cardano-addresses": "cardano-addresses", - "cardano-node": "cardano-node_4", - "cardano-wallet": "cardano-wallet_2", - "flake-compat": "flake-compat_18", - "haskell-nix": "haskell-nix_7", - "hw-aeson": "hw-aeson", - "iohk-nix": "iohk-nix_5", + "CHaP": "CHaP_6", + "cardano-node": [ + "cardano-node" + ], + "flake-compat": "flake-compat_21", + "hackage-nix": [ + "hackage-nix" + ], + "haskell-nix": [ + "haskell-nix" + ], + "iohk-nix": [ + "iohk-nix" + ], "nixpkgs": [ - "plutip", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" ] }, "locked": { - "lastModified": 1682621645, - "narHash": "sha256-JXvTEmGzLDPfzLJxw+jvtOTR9fyIWlqm5a7IjRLBtGQ=", + "lastModified": 1694789675, + "narHash": "sha256-PrtF2lNSEZdoaTGXIgIFv7qT7TooaWWvF71V4ILrzXs=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", + "rev": "d060231ebf20383cbdc854a4664fd66a5815aedc", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", + "rev": "d060231ebf20383cbdc854a4664fd66a5815aedc", "type": "github" } }, @@ -12563,27 +11643,11 @@ "type": "github" } }, - "plutus-apps_2": { - "flake": false, - "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, "plutus-example": { "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", + "customConfig": "customConfig_7", + "haskellNix": "haskellNix_7", + "iohkNix": "iohkNix_7", "nixpkgs": [ "ogmios", "cardano-node", @@ -12592,37 +11656,7 @@ "haskellNix", "nixpkgs-2105" ], - "utils": "utils_23" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - } - }, - "plutus-example_2": { - "inputs": { - "customConfig": "customConfig_10", - "haskellNix": "haskellNix_10", - "iohkNix": "iohkNix_10", - "nixpkgs": [ - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_28" + "utils": "utils_25" }, "locked": { "lastModified": 1640022647, @@ -12641,7 +11675,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_12", + "flake-utils": "flake-utils_17", "nixpkgs": [ "db-sync", "cardano-world", @@ -12667,8 +11701,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_48" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1639823344, @@ -12687,8 +11721,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_14", + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", "rust-overlay": "rust-overlay" }, "locked": { @@ -12708,8 +11742,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_17", + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -12729,8 +11763,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_26", + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -12750,8 +11784,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_14", - "nixpkgs": "nixpkgs_43", + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -12771,8 +11805,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_16", - "nixpkgs": "nixpkgs_46", + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -12794,32 +11828,22 @@ "CHaP": "CHaP", "blockfrost": "blockfrost", "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ogmios-nixos", - "cardano-node" - ], + "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_8", + "flake-compat": "flake-compat_11", + "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", - "iohk-nix": [ - "plutip", - "iohk-nix" - ], - "iohk-nix-environments": "iohk-nix-environments", + "iohk-nix": "iohk-nix_2", "kupo": "kupo", "kupo-nixos": "kupo-nixos", "nixpkgs": [ - "ogmios", - "nixpkgs" + "haskell-nix", + "nixpkgs-unstable" ], "ogmios": "ogmios_2", "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip", - "plutip-nixpkgs": [ - "plutip", - "nixpkgs" - ] + "plutip": "plutip" } }, "rust-analyzer-src": { @@ -13087,62 +12111,82 @@ "type": "github" } }, - "stackage": { + "secp256k1": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_10": { + "secp256k1_2": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "sodium": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_11": { + "sodium_2": { "flake": false, "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_12": { + "stackage": { "flake": false, "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -13151,7 +12195,7 @@ "type": "github" } }, - "stackage_13": { + "stackage_10": { "flake": false, "locked": { "lastModified": 1643073493, @@ -13167,14 +12211,14 @@ "type": "github" } }, - "stackage_14": { + "stackage_11": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1639012797, + "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", "type": "github" }, "original": { @@ -13183,14 +12227,14 @@ "type": "github" } }, - "stackage_15": { + "stackage_12": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1669857425, + "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", "type": "github" }, "original": { @@ -13199,7 +12243,7 @@ "type": "github" } }, - "stackage_16": { + "stackage_13": { "flake": false, "locked": { "lastModified": 1667610757, @@ -13215,14 +12259,14 @@ "type": "github" } }, - "stackage_17": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -13231,7 +12275,7 @@ "type": "github" } }, - "stackage_2": { + "stackage_3": { "flake": false, "locked": { "lastModified": 1655255731, @@ -13247,7 +12291,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_4": { "flake": false, "locked": { "lastModified": 1659402917, @@ -13263,7 +12307,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_5": { "flake": false, "locked": { "lastModified": 1650936094, @@ -13279,14 +12323,14 @@ "type": "github" } }, - "stackage_5": { + "stackage_6": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1694736555, + "narHash": "sha256-fur/l4VfU9z4sexgFdwjHdM1eO8cVjwNhGG77O6dbM8=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "d75be51a420f2bc976e7af0b2a52271842fc0e10", "type": "github" }, "original": { @@ -13295,7 +12339,7 @@ "type": "github" } }, - "stackage_6": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1654219171, @@ -13311,7 +12355,7 @@ "type": "github" } }, - "stackage_7": { + "stackage_8": { "flake": false, "locked": { "lastModified": 1665537461, @@ -13327,7 +12371,7 @@ "type": "github" } }, - "stackage_8": { + "stackage_9": { "flake": false, "locked": { "lastModified": 1643073493, @@ -13343,31 +12387,60 @@ "type": "github" } }, - "stackage_9": { - "flake": false, + "std": { + "inputs": { + "arion": [ + "cardano-node", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_5", + "incl": "incl", + "makes": [ + "cardano-node", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", + "yants": "yants" + }, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "std": { + "std_2": { "inputs": { - "devshell": "devshell_6", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", + "devshell": "devshell_7", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_13", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago", - "nixpkgs": "nixpkgs_27", - "yants": "yants_2" + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" }, "locked": { "lastModified": 1661370377, @@ -13383,15 +12456,15 @@ "type": "github" } }, - "std_2": { + "std_3": { "inputs": { - "devshell": "devshell_14", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_24", + "devshell": "devshell_15", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_57", - "yants": "yants_4" + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", + "yants": "yants_5" }, "locked": { "lastModified": 1661367957, @@ -13407,11 +12480,11 @@ "type": "github" } }, - "std_3": { + "std_4": { "inputs": { - "devshell": "devshell_15", - "nixpkgs": "nixpkgs_60", - "yants": "yants_5" + "devshell": "devshell_16", + "nixpkgs": "nixpkgs_67", + "yants": "yants_6" }, "locked": { "lastModified": 1652784712, @@ -13427,12 +12500,12 @@ "type": "github" } }, - "std_4": { + "std_5": { "inputs": { - "blank": "blank_5", - "devshell": "devshell_16", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_36", + "blank": "blank_6", + "devshell": "devshell_17", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_40", "makes": [ "ogmios", "haskell-nix", @@ -13448,10 +12521,10 @@ "std", "blank" ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_72", - "yants": "yants_6" + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_78", + "yants": "yants_7" }, "locked": { "lastModified": 1665513321, @@ -13466,12 +12539,12 @@ "repo": "std", "type": "github" } - }, - "std_5": { - "inputs": { - "blank": "blank_7", - "devshell": "devshell_17", - "dmerge": "dmerge_4", + }, + "std_6": { + "inputs": { + "blank": "blank_8", + "devshell": "devshell_18", + "dmerge": "dmerge_5", "flake-utils": "flake-utils_44", "makes": [ "ogmios-nixos", @@ -13488,10 +12561,10 @@ "std", "blank" ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_80", - "yants": "yants_7" + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_82", + "yants": "yants_8" }, "locked": { "lastModified": 1665513321, @@ -13689,8 +12762,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_51" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -13711,7 +12784,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_9", "nixpkgs": [ "db-sync", "cardano-world", @@ -13785,7 +12858,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_14", "nixpkgs": [ "db-sync", "cardano-world", @@ -13812,7 +12885,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_20", "nixpkgs": [ "db-sync", "cardano-world", @@ -13838,9 +12911,30 @@ }, "tullia": { "inputs": { - "nix2container": "nix2container", - "nixpkgs": "nixpkgs_59", - "std": "std_3" + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", + "std": "std" + }, + "locked": { + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_2": { + "inputs": { + "nix2container": "nix2container_3", + "nixpkgs": "nixpkgs_66", + "std": "std_4" }, "locked": { "lastModified": 1657811465, @@ -13856,16 +12950,16 @@ "type": "github" } }, - "tullia_2": { + "tullia_3": { "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_4", "nixpkgs": [ "ogmios", "haskell-nix", "nixpkgs" ], - "std": "std_4" + "std": "std_5" }, "locked": { "lastModified": 1668711738, @@ -13881,16 +12975,16 @@ "type": "github" } }, - "tullia_3": { + "tullia_4": { "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_3", + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_5", "nixpkgs": [ "ogmios-nixos", "haskell-nix", "nixpkgs" ], - "std": "std_5" + "std": "std_6" }, "locked": { "lastModified": 1666200256, @@ -13908,11 +13002,11 @@ }, "utils": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -13922,6 +13016,36 @@ } }, "utils_10": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -13936,7 +13060,7 @@ "type": "github" } }, - "utils_11": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -13951,7 +13075,7 @@ "type": "github" } }, - "utils_12": { + "utils_14": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -13966,7 +13090,7 @@ "type": "github" } }, - "utils_13": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -13981,7 +13105,7 @@ "type": "github" } }, - "utils_14": { + "utils_16": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -13996,7 +13120,7 @@ "type": "github" } }, - "utils_15": { + "utils_17": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -14011,7 +13135,7 @@ "type": "github" } }, - "utils_16": { + "utils_18": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -14026,22 +13150,7 @@ "type": "github" } }, - "utils_17": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_18": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14056,28 +13165,13 @@ "type": "github" } }, - "utils_19": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_2": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -14118,15 +13212,15 @@ }, "utils_22": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } @@ -14163,11 +13257,11 @@ }, "utils_25": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14178,11 +13272,11 @@ }, "utils_26": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -14208,11 +13302,11 @@ }, "utils_28": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -14223,11 +13317,11 @@ }, "utils_29": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -14238,26 +13332,11 @@ }, "utils_3": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_30": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -14266,13 +13345,13 @@ "type": "github" } }, - "utils_31": { + "utils_4": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -14281,7 +13360,7 @@ "type": "github" } }, - "utils_4": { + "utils_5": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14296,21 +13375,6 @@ "type": "github" } }, - "utils_5": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_6": { "locked": { "lastModified": 1633020561, @@ -14328,11 +13392,11 @@ }, "utils_7": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14358,15 +13422,15 @@ }, "utils_9": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } @@ -14407,7 +13471,30 @@ }, "yants": { "inputs": { - "nixpkgs": "nixpkgs_18" + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_2": { + "inputs": { + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -14423,7 +13510,7 @@ "type": "github" } }, - "yants_2": { + "yants_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -14447,9 +13534,9 @@ "type": "github" } }, - "yants_3": { + "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -14465,7 +13552,7 @@ "type": "github" } }, - "yants_4": { + "yants_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -14488,7 +13575,7 @@ "type": "github" } }, - "yants_5": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -14512,7 +13599,7 @@ "type": "github" } }, - "yants_6": { + "yants_7": { "inputs": { "nixpkgs": [ "ogmios", @@ -14536,7 +13623,7 @@ "type": "github" } }, - "yants_7": { + "yants_8": { "inputs": { "nixpkgs": [ "ogmios-nixos", diff --git a/flake.nix b/flake.nix index 0617a244e..47855b3ba 100644 --- a/flake.nix +++ b/flake.nix @@ -1,10 +1,33 @@ { description = "cardano-transaction-lib"; - nixConfig.bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; + nixConfig = { + extra-substituters = [ "https://cache.iog.io" ]; + extra-trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ]; + + bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; + }; + inputs = { - nixpkgs.follows = "ogmios/nixpkgs"; + nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; + hackage-nix = { + url = "github:input-output-hk/hackage.nix"; + flake = false; + }; + haskell-nix = { + url = "github:input-output-hk/haskell.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.hackage.follows = "hackage-nix"; + }; + CHaP = { + url = "github:input-output-hk/cardano-haskell-packages?ref=repo"; + flake = false; + }; + iohk-nix = { + url = "github:input-output-hk/iohk-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; flake-compat = { url = "github:edolstra/flake-compat"; @@ -19,14 +42,13 @@ url = "github:CardanoSolutions/kupo/v2.2.0"; flake = false; }; + cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; # ogmios nixos module (remove and replace with the above after merging and updating) - ogmios-nixos.url = "github:mlabs-haskell/ogmios"; - - cardano-node.follows = "ogmios-nixos/cardano-node"; - # for new environments like preview and preprod. TODO: remove this when cardano-node is updated - iohk-nix-environments.url = "github:input-output-hk/iohk-nix"; - cardano-node.inputs.iohkNix.follows = "iohk-nix-environments"; + ogmios-nixos = { + url = "github:mlabs-haskell/ogmios"; + inputs.cardano-node.follows = "cardano-node"; + }; # Repository with network parameters cardano-configurations = { @@ -35,25 +57,23 @@ flake = false; }; easy-purescript-nix = { - url = "github:justinwoo/easy-purescript-nix/da7acb2662961fd355f0a01a25bd32bf33577fa8"; + url = "github:justinwoo/easy-purescript-nix"; flake = false; }; - # TODO use a tag for blockfrost as soon as they tag a recent commit (we need it as a flake) - blockfrost.url = "github:blockfrost/blockfrost-backend-ryo/113ddfc2dbea9beba3a428aa274965237f31b858"; + blockfrost.url = "github:blockfrost/blockfrost-backend-ryo/v1.7.0"; db-sync.url = "github:input-output-hk/cardano-db-sync/13.1.0.0"; # Plutip server related inputs - plutip.url = "github:mlabs-haskell/plutip/1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158"; - plutip-nixpkgs.follows = "plutip/nixpkgs"; - haskell-nix.url = "github:mlabs-haskell/haskell.nix"; - iohk-nix = { - follows = "plutip/iohk-nix"; - flake = false; - }; - CHaP = { - url = "github:input-output-hk/cardano-haskell-packages?ref=repo"; - flake = false; + plutip = { + url = "github:mlabs-haskell/plutip/d060231ebf20383cbdc854a4664fd66a5815aedc"; + inputs = { + nixpkgs.follows = "nixpkgs"; + iohk-nix.follows = "iohk-nix"; + haskell-nix.follows = "haskell-nix"; + hackage-nix.follows = "hackage-nix"; + cardano-node.follows = "cardano-node"; + }; }; }; @@ -206,17 +226,17 @@ plutipServerFor = system: let - pkgs = import inputs.plutip-nixpkgs { + pkgs = import inputs.nixpkgs { inherit system; overlays = [ inputs.haskell-nix.overlay - (import "${inputs.iohk-nix}/overlays/crypto") + inputs.iohk-nix.overlays.crypto ]; }; in import ./plutip-server { inherit pkgs; - inherit (inputs) plutip CHaP iohk-nix; + inherit (inputs) plutip CHaP cardano-node; inherit (pkgs) system; src = ./plutip-server; }; diff --git a/plutip-server/cabal.project b/plutip-server/cabal.project index 43c5ee6f5..8f005a366 100644 --- a/plutip-server/cabal.project +++ b/plutip-server/cabal.project @@ -9,41 +9,111 @@ repository cardano-haskell-packages c00aae8461a256275598500ea0e187588c35a5d5d7454fb57eac18d9edb86a56 d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee -index-state: 2022-05-25T00:00:00Z -index-state: cardano-haskell-packages 2022-10-25T20:00:00Z +-- Align index-states with cardano-wallet +index-state: 2023-06-06T00:00:00Z + +index-state: + , hackage.haskell.org 2023-06-06T00:00:00Z + , cardano-haskell-packages 2023-06-05T06:39:32Z packages: ./. tests: true benchmarks: true test-show-details: direct +constraints: + -- TH Name shadowing warnings nconstraints: + bimap >= 0.4.0 + , openapi3 >= 3.2.0 + , libsystemd-journal >= 1.4.4 + , systemd >= 2.3.0 + -- dependency of systemd-2.3.0 + , network >= 3.1.1.1 + -- choose versions that work with base >= 4.12 + , hjsonpointer >= 1.5.0 + , hjsonschema >= 1.10.0 + , Cabal >= 3.4.0.0 + , async-timer >= 0.2.0.0 + , unliftio-core >= 0.2.0.1 + , generic-arbitrary >= 0.2.2 + , iohk-monitoring >= 0.1.11 + + -- lower versions of katip won't build with the Win32-2.12.0.1 + -- which is shipped with the ghc-9.2.8 + , katip >= 0.8.7.4 + + -- Cardano Node dependencies: + , cardano-api ^>=8.2 + , cardano-slotting >= 0.1 + , ouroboros-network ^>= 0.8.1.0 + , persistent == 2.13.3.3 + +package cardano-wallet + optimization: False +package cardano-wallet-core + optimization: False +package cardano-wallet-cli + optimization: False +package cardano-wallet-launcher + optimization: False +package cardano-wallet-core-integration + optimization: False allow-newer: - *:aeson - , size-based:template-haskell + hjsonschema:* + , hjsonpointer:* + , *:aeson + , *:hashable + , async-timer:unliftio-core + , ekg:* + , ntp-client:* + , libsystemd-journal:base -constraints: --- cardano-node == 1.35.4 - , aeson >= 2 - - , hedgehog >= 1.1 - - , cardano-prelude == 0.1.0.0 - , base-deriving-via == 0.1.0.0 - , cardano-binary == 1.5.0 - , cardano-binary-test == 1.3.0 - , cardano-crypto-class == 2.0.0.0.1 - , cardano-crypto-praos == 2.0.0.0.1 - , cardano-crypto-tests == 2.0.0.0.1 - , cardano-slotting == 0.1.0.0 - , measures == 0.1.0.0 - , orphans-deriving-via == 0.1.0.0 - , strict-containers == 0.1.0.0 - , plutus-core == 1.0.0.1 - , plutus-ledger-api == 1.0.0.1 - , plutus-tx == 1.0.0.0 - , plutus-tx-plugin == 1.0.0.0 - , prettyprinter-configurable == 0.1.0.0 - , plutus-ghc-stub == 8.6.5 - , word-array == 0.1.0.0 - , word-array == 0.1.0.0 +source-repository-package + type: git + location: https://github.com/cardano-foundation/cardano-wallet + tag: ae6e90b99ff14eda88769211218aaae2b0fe528b + --sha256: 060r6z9sy9r1jr8iinlyirprw4k3s54malp9sz732vl7byh6vylf + subdir: + lib/application-extras + lib/balance-tx + lib/crypto-hash-extra + lib/coin-selection + lib/delta-store + lib/delta-table + lib/delta-types + lib/iohk-monitoring-extra + lib/launcher + lib/local-cluster + lib/numeric + lib/primitive + lib/read + lib/temporary-extra + lib/test-utils + lib/text-class + lib/wai-middleware-logging + lib/wallet-benchmarks + lib/wallet + lib/wallet-e2e + +source-repository-package + type: git + location: https://github.com/input-output-hk/cardano-addresses + tag: 44d5a9eb3505b6bfbf281d40fa88531c3253b771 + --sha256: 16rja48ryfjw3531kf15w0h3cdmscqgs8l1z1i2mvahq1vlhr2y6 + subdir: command-line + core + +source-repository-package + type: git + location: https://github.com/cardano-foundation/cardano-wallet-client.git + tag: 353412ca621dc28af53e4a19795338b19bab1b7b + --sha256: 04q58c82wy6x9nkwqbvcxbv6s61fx08h5kf62sb511aqp08id4bb + subdir: generated + + +source-repository-package + type: git + location: https://github.com/mlabs-haskell/plutip.git + tag: d060231ebf20383cbdc854a4664fd66a5815aedc + --sha256: 0yydxf1f0mdx2ypnas987bnr7fmz0l1255rid5l9f4ajagd4bfry diff --git a/plutip-server/default.nix b/plutip-server/default.nix index 14432c188..f6bcc4a10 100644 --- a/plutip-server/default.nix +++ b/plutip-server/default.nix @@ -1,68 +1,59 @@ -{ pkgs, system, src, plutip, iohk-nix, CHaP }: +{ pkgs, system, src, plutip, CHaP, cardano-node }: let - haskellModules = plutip.haskellModules ++ [ - ({ config, pkgs, ... }: { - packages.plutip-server.components.exes.plutip-server = { - pkgconfig = [ [ pkgs.makeWrapper ] ]; - postInstall = with pkgs; '' - wrapProgram $out/bin/plutip-server \ - --prefix PATH : "${lib.makeBinPath [ - config.hsPkgs.cardano-cli.components.exes.cardano-cli - config.hsPkgs.cardano-node.components.exes.cardano-node - ]}" - ''; - }; - }) - ]; - extraSources = plutip.extraSources ++ [ - { - src = plutip; - subdirs = [ "." ]; - } - ]; - project = pkgs.haskell-nix.cabalProject { - name = "plutip-server"; - - inherit src; - - inputMap = { - "https://input-output-hk.github.io/cardano-haskell-packages" = CHaP; - }; - - compiler-nix-name = "ghc8107"; - - shell = { - withHoogle = true; - exactDeps = true; - - packages = ps: [ ps.plutip-server ]; - - tools.haskell-language-server = "latest"; - - nativeBuildInputs = with pkgs; [ - # Haskell Tools - haskellPackages.fourmolu - haskellPackages.cabal-install - haskellPackages.cabal-fmt - nixpkgs-fmt - hlint - entr - ghcid - git - fd + haskellModules = + plutip.haskellModules.${system} ++ [ + ({ config, pkgs, ... }: + let + nodeExes = cardano-node.packages.${system}; + in + { + packages.plutip-server.components.exes.plutip-server = { + pkgconfig = [ [ pkgs.makeWrapper ] ]; + postInstall = with pkgs; '' + wrapProgram $out/bin/plutip-server \ + --prefix PATH : "${lib.makeBinPath [ + nodeExes.cardano-node + nodeExes.cardano-cli + ]}" + ''; + }; + }) + ]; +in +pkgs.haskell-nix.cabalProject { + name = "plutip-server"; - # hls doesn't support preprocessors yet so this has to exist in PATH - haskellPackages.record-dot-preprocessor + inherit src; - # Cardano tools - project.hsPkgs.cardano-cli.components.exes.cardano-cli - project.hsPkgs.cardano-node.components.exes.cardano-node - ]; - }; + inputMap = { + "https://input-output-hk.github.io/cardano-haskell-packages" = CHaP; + }; - # inherit (bot-plutus-interface); - inherit extraSources; - modules = haskellModules; + compiler-nix-name = "ghc8107"; + + shell = { + withHoogle = true; + exactDeps = true; + + tools.haskell-language-server = "1.5.0.0"; # Newer versions failed to build + + nativeBuildInputs = with pkgs; [ + # Haskell Tools + haskellPackages.fourmolu + haskellPackages.cabal-install + haskellPackages.cabal-fmt + nixpkgs-fmt + hlint + entr + ghcid + git + fd + + # Cardano tools + cardano-node.packages.${system}.cardano-cli + cardano-node.packages.${system}.cardano-node + ]; }; -in -project + + modules = haskellModules; +} diff --git a/plutip-server/src/Api/Handlers.hs b/plutip-server/src/Api/Handlers.hs index 35553329d..33452b14a 100644 --- a/plutip-server/src/Api/Handlers.hs +++ b/plutip-server/src/Api/Handlers.hs @@ -92,7 +92,7 @@ startClusterHandler , keysDirectory = keysDir clusterEnv } where - getNodeSocketFile (runningNode -> RunningNode conn _ _ _) = nodeSocketFile conn + getNodeSocketFile (runningNode -> RunningNode conn _ _) = nodeSocketFile conn getNodeConfigFile = -- assumption is that node.config lies in the same directory as node.socket flip replaceFileName "node.config" . getNodeSocketFile diff --git a/plutip-server/src/Types.hs b/plutip-server/src/Types.hs index 9052ad170..9d7d5227c 100644 --- a/plutip-server/src/Types.hs +++ b/plutip-server/src/Types.hs @@ -41,10 +41,10 @@ import Control.Monad.Reader (MonadReader, ReaderT) import Data.Aeson (FromJSON, ToJSON, parseJSON) import Data.Kind (Type) import Data.Text (Text) -import Data.Time (NominalDiffTime) import GHC.Generics (Generic) import Network.Wai.Handler.Warp (Port) import Numeric.Natural (Natural) +import Plutip.Config (NominalDiffTimeMicro) import Plutip.Cluster (StopClusterRef) -- TVar is used for signaling by 'startCluster'/'stopCluster' (STM is used @@ -88,7 +88,7 @@ instance FromJSON Lovelace where data StartClusterRequest = StartClusterRequest { keysToGenerate :: [[Lovelace]] -- ^ Lovelace amounts for each UTXO of each wallet - , slotLength :: Maybe NominalDiffTime + , slotLength :: Maybe NominalDiffTimeMicro -- ^ Set the SlotLength. If set to Nothing use the default , epochSize :: Maybe EpochSize -- ^ Set the EpochSize. If set to Nothing use the default From 204596a69f6c795d5b929b550b759f301ea13521 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Sep 2023 21:16:30 +0400 Subject: [PATCH 282/478] Try to reproduce the problem in #1530 --- test/Plutip/Contract.purs | 46 +++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 605d8a9ae..5ceefa6da 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -16,9 +16,7 @@ import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos ) as BalanceTxConstraints -import Contract.BalanceTxConstraints - ( mustNotSpendUtxosWithOutRefs - ) +import Contract.BalanceTxConstraints (mustNotSpendUtxosWithOutRefs) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Log (logInfo') @@ -36,6 +34,7 @@ import Contract.PlutusData , getDatumByHash , getDatumsByHashes , getDatumsByHashesWithErrors + , unitDatum , unitRedeemer ) import Contract.Prelude (mconcat) @@ -72,6 +71,8 @@ import Contract.Transaction , TransactionHash(TransactionHash) , TransactionInput(TransactionInput) , TransactionOutput(TransactionOutput) + , _body + , _outputs , awaitTxConfirmed , balanceTx , balanceTxWithConstraints @@ -85,6 +86,7 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value @@ -157,11 +159,12 @@ import Ctl.Internal.Wallet.Cip30Mock ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi) , withCip30Mock ) -import Data.Array (head, (!!)) +import Data.Array (head, replicate, (!!)) +import Data.Array as Array import Data.BigInt as BigInt import Data.Either (Either(Left, Right), isLeft, isRight) import Data.Foldable (fold, foldM, length) -import Data.Lens (view) +import Data.Lens (to, view, (^.)) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, isJust) import Data.Newtype (unwrap, wrap) @@ -170,8 +173,9 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) +import Effect.Console as Console import Effect.Exception (throw) -import Mote (group, skip, test) +import Mote (group, only, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -202,7 +206,35 @@ suite = do void $ waitUntilSlot $ Slot $ BigNum.fromInt 160 void $ waitUntilSlot $ Slot $ BigNum.fromInt 161 void $ waitUntilSlot $ Slot $ BigNum.fromInt 241 - group "Regressions" do + only $ group "Regressions" do + only $ test "#1530 - too many change outputs" do + do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + validator <- AlwaysSucceeds.alwaysSucceedsScript + let vhash = validatorHash validator + let + constraints :: TxConstraints Unit Unit + constraints = fold $ replicate 20 + $ Constraints.mustPayToScript vhash unitDatum + Constraints.DatumWitness + $ Value.lovelaceValueOf + $ BigInt.fromInt 2_000_000 + + lookups :: Lookups.ScriptLookups PlutusData + lookups = mempty + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + balancedTx <- liftedE $ balanceTx unbalancedTx + let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs + liftEffect $ Console.log $ show (Array.length outputs) <> " " <> + show outputs + skip $ test "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" do From d98e053f08048a61cec83df4fd8d1a7a09c3bee6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 17 Sep 2023 14:40:16 +0400 Subject: [PATCH 283/478] Try reproducing #1530 with a token --- test/Plutip/Contract.purs | 50 ++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 5ceefa6da..624e2b2d2 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -217,23 +217,39 @@ suite = do ] withWallets distribution \alice -> do withKeyWallet alice do - validator <- AlwaysSucceeds.alwaysSucceedsScript - let vhash = validatorHash validator - let - constraints :: TxConstraints Unit Unit - constraints = fold $ replicate 20 - $ Constraints.mustPayToScript vhash unitDatum - Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups PlutusData - lookups = mempty - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx - let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs - liftEffect $ Console.log $ show (Array.length outputs) <> " " <> - show outputs + mp <- alwaysMintsPolicy + _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + tn <- mkTokenName "TheToken" + -- do + -- let + -- constraints :: Constraints.TxConstraints Void Void + -- constraints = Constraints.mustMintValue + -- $ Value.singleton cs tn + -- $ BigInt.fromInt 100 + + -- lookups :: Lookups.ScriptLookups Void + -- lookups = Lookups.mintingPolicy mp + + -- txHash <- submitTxFromConstraints lookups constraints + -- awaitTxConfirmed txHash + do + validator <- AlwaysSucceeds.alwaysSucceedsScript + let vhash = validatorHash validator + let + constraints :: TxConstraints Unit Unit + constraints = fold $ replicate 20 + $ Constraints.mustPayToScript vhash unitDatum + Constraints.DatumWitness + -- $ Value.singleton cs tn one + $ Value.lovelaceValueOf $ BigInt.fromInt 10000000 + + lookups :: Lookups.ScriptLookups PlutusData + lookups = mempty + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + balancedTx <- liftedE $ balanceTx unbalancedTx + let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs + liftEffect $ Console.log $ show (Array.length outputs) <> " " <> + show outputs skip $ test "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" From afb432b48d61d367c3857365365a613bb458a115 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 18 Sep 2023 17:57:48 +0400 Subject: [PATCH 284/478] Modify change generation algorithm to only consider outputs going back to the wallet when deciding on change UTxO distribution (#1530) --- examples/ChangeGeneration.purs | 57 +++++++++++++++++++++++++++ src/Internal/BalanceTx/BalanceTx.purs | 33 +++++++++++++--- src/Internal/BalanceTx/Types.purs | 18 +++++---- test/BalanceTx/ChangeGeneration.purs | 39 ++++++++++++++++++ test/Plutip.purs | 2 + test/Plutip/Contract.purs | 46 +-------------------- 6 files changed, 138 insertions(+), 57 deletions(-) create mode 100644 examples/ChangeGeneration.purs create mode 100644 test/BalanceTx/ChangeGeneration.purs diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs new file mode 100644 index 000000000..f9acd350d --- /dev/null +++ b/examples/ChangeGeneration.purs @@ -0,0 +1,57 @@ +module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where + +import Prelude + +import Contract.Monad (Contract, liftedE) +import Contract.PlutusData (PlutusData, unitDatum) +import Contract.ScriptLookups as Lookups +import Contract.Scripts (validatorHash) +import Contract.Transaction (_body, _outputs, balanceTx) +import Contract.TxConstraints (TxConstraints) +import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) +import Contract.Value as Value +import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) +import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds +import Data.Array (fold, replicate, zip) +import Data.Array (length) as Array +import Data.BigInt (fromInt) as BigInt +import Data.Lens (to, (^.)) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) +import Data.Tuple (Tuple(Tuple)) +import Test.Spec.Assertions (shouldEqual) + +-- | A contract that creates `outputsToScript` number of outputs at a script address, +-- | `outputsToSelf` outputs going to own address, and asserts that the number of change +-- | outputs is equal to `expectedOutputs`. +checkChangeOutputsDistribution :: Int -> Int -> Int -> Contract Unit +checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = + do + pkhs <- ownPaymentPubKeyHashes + skhs <- ownStakePubKeyHashes + validator <- AlwaysSucceeds.alwaysSucceedsScript + let + vhash = validatorHash validator + value = Value.lovelaceValueOf $ BigInt.fromInt 10000000 + + constraintsToSelf :: TxConstraints Unit Unit + constraintsToSelf = fold <<< fold $ replicate outputsToSelf + $ zip pkhs skhs <#> \(Tuple pkh mbSkh) -> case mbSkh of + Nothing -> Constraints.mustPayToPubKey pkh value + Just skh -> Constraints.mustPayToPubKeyAddress pkh skh value + + constraintsToScripts :: TxConstraints Unit Unit + constraintsToScripts = fold $ replicate outputsToScript + $ Constraints.mustPayToScript vhash unitDatum + Constraints.DatumWitness + value + + constraints = constraintsToSelf <> constraintsToScripts + + lookups :: Lookups.ScriptLookups PlutusData + lookups = mempty + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + balancedTx <- liftedE $ balanceTx unbalancedTx + let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs + Array.length outputs `shouldEqual` expectedOutputs diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 3564d007f..d6462dc5f 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -167,6 +167,7 @@ import Data.Map (Map) import Data.Map (empty, insert, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, maybe) import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Set (Set) import Data.Set as Set import Data.Traversable (for, traverse) import Data.Tuple (fst) @@ -443,7 +444,10 @@ runBalancer p = do runNextBalancerStep state@{ transaction } = do let txBody = transaction ^. _transaction <<< _body inputValue <- except $ getInputValue p.allUtxos txBody - changeOutputs <- makeChange p.changeAddress p.changeDatum inputValue + ownWalletAddresses <- asks _.ownAddresses + changeOutputs <- makeChange ownWalletAddresses p.changeAddress + p.changeDatum + inputValue p.certsFee txBody @@ -551,13 +555,20 @@ setTxChangeOutputs outputs tx = -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1396 makeChange - :: Address + :: Set Address + -> Address -> OutputDatum -> Value -> Coin -> TxBody -> BalanceTxM (Array TransactionOutput) -makeChange changeAddress changeDatum inputValue certsFee txBody = +makeChange + ownWalletAddresses + changeAddress + changeDatum + inputValue + certsFee + txBody = -- Always generate change when a transaction has no outputs to avoid issues -- with transaction confirmation: -- FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 @@ -576,6 +587,12 @@ makeChange changeAddress changeDatum inputValue certsFee txBody = -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1447 + -- | + -- | Differences from cardano-wallet: + -- | + -- | - We only consider outputs that go back to our wallet when deciding on + -- | the number of desired outputs for change generation. See + -- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530 changeValueOutputCoinPairs :: NonEmptyArray (Value /\ BigInt) changeValueOutputCoinPairs = outputCoins # NEArray.zip changeForAssets @@ -599,10 +616,16 @@ makeChange changeAddress changeDatum inputValue certsFee txBody = unbundle :: Value -> Value /\ BigInt unbundle (Value coin assets) = mkValue mempty assets /\ unwrap coin + -- find outputs belonging to one of the wallet's addresses. + ownAddressOutputs :: Array TransactionOutput + ownAddressOutputs = Array.filter + (unwrap >>> _.address >>> flip Set.member ownWalletAddresses) + txOutputs + changeForAssets :: NonEmptyArray Value changeForAssets = foldr - (NEArray.zipWith (<>) <<< makeChangeForAsset txOutputs) - (NEArray.replicate (length txOutputs) mempty) + (NEArray.zipWith (<>) <<< makeChangeForAsset ownAddressOutputs) + (NEArray.replicate (length ownAddressOutputs) mempty) excessAssets outputCoins :: NonEmptyArray BigInt diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index d7bf8bc76..89bc6833d 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -22,13 +22,13 @@ import Ctl.Internal.BalanceTx.Constraints ( BalanceTxConstraints , BalanceTxConstraintsBuilder ) -import Ctl.Internal.BalanceTx.Constraints - ( buildBalanceTxConstraints - ) as Constraints +import Ctl.Internal.BalanceTx.Constraints (buildBalanceTxConstraints) as Constraints import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), Transaction) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) +import Ctl.Internal.Contract.Wallet (getWalletAddresses) import Ctl.Internal.Serialization.Address (NetworkId) +import Ctl.Internal.Serialization.Address as Csl import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Scripts (Language) import Ctl.Internal.Wallet (Cip30Wallet, cip30Wallet) @@ -40,10 +40,11 @@ import Data.Map (filterKeys) as Map import Data.Maybe (Maybe) import Data.Newtype (class Newtype, over, unwrap) import Data.Set (Set) -import Data.Set (member) as Set +import Data.Set (fromFoldable, member) as Set import Data.Show.Generic (genericShow) -type BalanceTxMContext = { constraints :: BalanceTxConstraints } +type BalanceTxMContext = + { constraints :: BalanceTxConstraints, ownAddresses :: Set Csl.Address } type BalanceTxM (a :: Type) = ExceptT BalanceTxError (ReaderT BalanceTxMContext Contract) a @@ -78,8 +79,11 @@ withBalanceTxConstraints . BalanceTxConstraintsBuilder -> ReaderT BalanceTxMContext Contract a -> Contract a -withBalanceTxConstraints constraintsBuilder = - flip runReaderT { constraints } +withBalanceTxConstraints constraintsBuilder m = do + -- we can ignore failures due to reward addresses because reward addresses + -- do not receive transaction outputs from dApps + ownAddresses <- Set.fromFoldable <$> getWalletAddresses + flip runReaderT { constraints, ownAddresses } m where constraints :: BalanceTxConstraints constraints = Constraints.buildBalanceTxConstraints constraintsBuilder diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs new file mode 100644 index 000000000..9f6404846 --- /dev/null +++ b/test/BalanceTx/ChangeGeneration.purs @@ -0,0 +1,39 @@ +module Test.Ctl.BalanceTx.ChangeGeneration (suite) where + +import Prelude + +import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) +import Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Data.BigInt (fromInt) as BigInt +import Mote (group, test) + +suite :: TestPlanM ContractTest Unit +suite = do + group "BalanceTx.ChangeGeneration" do + group + "The number of change outputs must equal the number of normal outputs going to our own address" + do + test "no outputs to own address" do + mkChangeOutputs 10 0 11 + test "1 output to own address" do + mkChangeOutputs 10 1 12 + test "2 outputs to own address" do + mkChangeOutputs 10 2 14 + test "2 outputs to own address" do + mkChangeOutputs 10 3 16 + test "0 outputs to script address, 10 outputs to own address" do + mkChangeOutputs 0 10 20 + +mkChangeOutputs :: Int -> Int -> Int -> ContractTest +mkChangeOutputs outputsToScript outputsToSelf expectedOutputs = do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1000_000_000 + , BigInt.fromInt 2000_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + checkChangeOutputsDistribution outputsToScript outputsToSelf + expectedOutputs diff --git a/test/Plutip.purs b/test/Plutip.purs index 87e00f854..d80ff7408 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -30,6 +30,7 @@ import Effect.Aff ) import Mote (group, test) import Mote.Monad (mapTest) +import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert @@ -63,6 +64,7 @@ main = interruptOnSignal SIGINT =<< launchAff do flip mapTest QueryM.AffInterface.suite (noWallet <<< wrapQueryM) NetworkId.suite + ChangeGeneration.suite Contract.suite UtxoDistribution.suite testPlutipContracts config OgmiosMempool.suite diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 624e2b2d2..72519cc84 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -206,51 +206,7 @@ suite = do void $ waitUntilSlot $ Slot $ BigNum.fromInt 160 void $ waitUntilSlot $ Slot $ BigNum.fromInt 161 void $ waitUntilSlot $ Slot $ BigNum.fromInt 241 - only $ group "Regressions" do - only $ test "#1530 - too many change outputs" do - do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 - ] - withWallets distribution \alice -> do - withKeyWallet alice do - mp <- alwaysMintsPolicy - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy - tn <- mkTokenName "TheToken" - -- do - -- let - -- constraints :: Constraints.TxConstraints Void Void - -- constraints = Constraints.mustMintValue - -- $ Value.singleton cs tn - -- $ BigInt.fromInt 100 - - -- lookups :: Lookups.ScriptLookups Void - -- lookups = Lookups.mintingPolicy mp - - -- txHash <- submitTxFromConstraints lookups constraints - -- awaitTxConfirmed txHash - do - validator <- AlwaysSucceeds.alwaysSucceedsScript - let vhash = validatorHash validator - let - constraints :: TxConstraints Unit Unit - constraints = fold $ replicate 20 - $ Constraints.mustPayToScript vhash unitDatum - Constraints.DatumWitness - -- $ Value.singleton cs tn one - $ Value.lovelaceValueOf $ BigInt.fromInt 10000000 - - lookups :: Lookups.ScriptLookups PlutusData - lookups = mempty - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx - let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs - liftEffect $ Console.log $ show (Array.length outputs) <> " " <> - show outputs - + group "Regressions" do skip $ test "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" do From f0fcff709e80a837f13dd96ffa8811363870544d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 18 Sep 2023 19:22:10 +0400 Subject: [PATCH 285/478] Use 1ADA in ChangeGeneration example. Disable webpack-dev-server overlay --- examples/ChangeGeneration.purs | 2 +- webpack.config.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index f9acd350d..36eb58d7d 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -33,7 +33,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = validator <- AlwaysSucceeds.alwaysSucceedsScript let vhash = validatorHash validator - value = Value.lovelaceValueOf $ BigInt.fromInt 10000000 + value = Value.lovelaceValueOf $ BigInt.fromInt 1000000 constraintsToSelf :: TxConstraints Unit Unit constraintsToSelf = fold <<< fold $ replicate outputsToSelf diff --git a/webpack.config.js b/webpack.config.js index c99c50e06..c0208387b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -32,6 +32,9 @@ module.exports = { pathRewrite: { "^/kupo": "" }, }, }, + client: { + overlay: false + } }, // we can add more entrypoints as needed From daad2ae6e325ab251b013ab25516c00698d8267e Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Tue, 19 Sep 2023 10:56:36 +0200 Subject: [PATCH 286/478] Reformat JS files with new version of prettier --- examples/AlwaysMints.js | 2 +- examples/AlwaysSucceeds.js | 2 +- examples/ECDSA.js | 2 +- examples/ExUnits.js | 2 +- examples/IncludeDatum.js | 2 +- examples/Lose7Ada.js | 2 +- examples/MintsMultipleTokens.js | 2 +- examples/MultipleRedeemers.js | 2 +- examples/OneShotMinting.js | 2 +- examples/OtherTypeTextEnvelope.js | 4 +- examples/PlutusV2/InlineDatum.js | 4 +- examples/PlutusV2/OneShotMinting.js | 4 +- examples/PlutusV2/Scripts/AlwaysMints.js | 2 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 2 +- examples/Schnorr.js | 2 +- src/Internal/ApplyArgs.js | 2 +- src/Internal/Deserialization/Transaction.js | 26 ++++++------ src/Internal/Plutip/PortCheck.js | 2 +- src/Internal/Serialization.js | 32 +++++++------- src/Internal/Serialization/Address.js | 22 +++++----- src/Internal/Serialization/AuxiliaryData.js | 4 +- src/Internal/Test/E2E/Runner.js | 4 +- src/Internal/Types/ByteArray.js | 4 +- src/Internal/Wallet.js | 6 +-- src/Internal/Wallet/Bip32.js | 6 +-- src/Internal/Wallet/Cip30.js | 2 +- src/Internal/Wallet/Cip30/SignData.js | 10 ++--- src/Internal/Wallet/Cip30Mock.js | 2 +- test/ApplyArgs.js | 46 ++++++++++----------- test/Wallet/Cip30/SignData.js | 8 ++-- 30 files changed, 108 insertions(+), 104 deletions(-) diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js index 3ab8b58f3..44c240e70 100644 --- a/examples/AlwaysMints.js +++ b/examples/AlwaysMints.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-mints.plutus"), - "utf8" + "utf8", ); } exports.alwaysMints = script; diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js index 4ba6671b7..766dacd84 100644 --- a/examples/AlwaysSucceeds.js +++ b/examples/AlwaysSucceeds.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-succeeds.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/ECDSA.js b/examples/ECDSA.js index 5115d95ec..7cc001aeb 100644 --- a/examples/ECDSA.js +++ b/examples/ECDSA.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/validate-ecdsa.plutus"), - "utf8" + "utf8", ); } exports.validateECDSA = script; diff --git a/examples/ExUnits.js b/examples/ExUnits.js index b0d16cf90..d0e6e2c6c 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/exunits.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js index 5ce016be7..9ee2cb219 100644 --- a/examples/IncludeDatum.js +++ b/examples/IncludeDatum.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/include-datum.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js index f2e299ed7..647993a10 100644 --- a/examples/Lose7Ada.js +++ b/examples/Lose7Ada.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-fails.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js index 74ad17f73..868a121b1 100644 --- a/examples/MintsMultipleTokens.js +++ b/examples/MintsMultipleTokens.js @@ -12,7 +12,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const readScript = name => fs.readFileSync( path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), - "utf8" + "utf8", ); redeemerInt1 = readScript("redeemer1"); redeemerInt2 = readScript("redeemer2"); diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js index 7d8855f2b..2695606b4 100644 --- a/examples/MultipleRedeemers.js +++ b/examples/MultipleRedeemers.js @@ -12,7 +12,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const readScript = name => fs.readFileSync( path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), - "utf8" + "utf8", ); vredeemerInt1 = readScript("redeemer1-validator"); vredeemerInt2 = readScript("redeemer2-validator"); diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js index 583fda109..31cc4bc30 100644 --- a/examples/OneShotMinting.js +++ b/examples/OneShotMinting.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/one-shot-minting.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index 2affb4b24..1bd1efc7f 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/other-type-text-envelope.plutus" + "../../fixtures/scripts/other-type-text-envelope.plutus", ), - "utf8" + "utf8", ); } exports.otherTypeTextEnvelope = script; diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index 367b1170b..fcba52bb8 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/check-datum-is-inline.plutus" + "../../fixtures/scripts/check-datum-is-inline.plutus", ), - "utf8" + "utf8", ); } diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index d3c979a85..df8adeb0e 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/one-shot-minting-v2.plutus" + "../../fixtures/scripts/one-shot-minting-v2.plutus", ), - "utf8" + "utf8", ); } diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js index 170c59121..c54d93a72 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ b/examples/PlutusV2/Scripts/AlwaysMints.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-mints-v2.plutus"), - "utf8" + "utf8", ); } exports.alwaysMintsV2 = script; diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index a143119c9..419d05b1a 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-succeeds-v2.plutus"), - "utf8" + "utf8", ); } diff --git a/examples/Schnorr.js b/examples/Schnorr.js index 76d1ed204..3751dea90 100644 --- a/examples/Schnorr.js +++ b/examples/Schnorr.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/validate-schnorr.plutus"), - "utf8" + "utf8", ); } diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 1afe7de8d..bbb53a05e 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -29,7 +29,7 @@ exports.apply_params_to_script = left => right => args => script => { try { appliedScript = apply_args.apply_params_to_script_no_panic( argsBytes, - scriptBytes + scriptBytes, ); } catch (e) { return left("Error applying argument to script: ".concat(e.toString())); diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index e0f990c2e..1918acaf6 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -59,7 +59,7 @@ exports._txBodyUpdate = maybeGetter("update"); exports._txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); // validity_start_interval(): number | void; exports._txBodyValidityStartInterval = maybeGetter( - "validity_start_interval_bignum" + "validity_start_interval_bignum", ); // multiassets(): Mint | void; exports._txBodyMultiAssets = maybeGetter("multiassets"); @@ -98,7 +98,7 @@ exports._unpackWithdrawals = containerhelper => exports._unpackUpdate = containerhelper => update => { const pppus = containerhelper.unpackKeyIndexed( - update.proposed_protocol_parameter_updates() + update.proposed_protocol_parameter_updates(), ); return { epoch: update.epoch(), paramUpdates: pppus }; }; @@ -111,29 +111,29 @@ exports._convertCert = certConvHelper => cert => { switch (cert.kind()) { case lib.CertificateKind.StakeRegistration: return certConvHelper.stakeRegistration( - cert.as_stake_registration().stake_credential() + cert.as_stake_registration().stake_credential(), ); case lib.CertificateKind.StakeDeregistration: return certConvHelper.stakeDeregistration( - cert.as_stake_deregistration().stake_credential() + cert.as_stake_deregistration().stake_credential(), ); case lib.CertificateKind.StakeDelegation: return certConvHelper.stakeDelegation( - cert.as_stake_delegation().stake_credential() + cert.as_stake_delegation().stake_credential(), )(cert.as_stake_delegation().pool_keyhash()); case lib.CertificateKind.PoolRegistration: return certConvHelper.poolRegistration( - cert.as_pool_registration().pool_params() + cert.as_pool_registration().pool_params(), ); case lib.CertificateKind.PoolRetirement: return certConvHelper.poolRetirement( - cert.as_pool_retirement().pool_keyhash() + cert.as_pool_retirement().pool_keyhash(), )(cert.as_pool_retirement().epoch()); case lib.CertificateKind.GenesisKeyDelegation: return certConvHelper.genesisKeyDelegation( - cert.as_genesis_key_delegation().genesishash() + cert.as_genesis_key_delegation().genesishash(), )(cert.as_genesis_key_delegation().genesis_delegate_hash())( - cert.as_genesis_key_delegation().vrf_keyhash() + cert.as_genesis_key_delegation().vrf_keyhash(), ); case lib.CertificateKind.MoveInstantaneousRewardsCert: const mirCert = cert.as_move_instantaneous_rewards_cert(); @@ -141,11 +141,11 @@ exports._convertCert = certConvHelper => cert => { switch (mir.kind()) { case lib.MIRKind.ToOtherPot: return certConvHelper.moveInstantaneousRewardsToOtherPotCert( - mir.pot() + mir.pot(), )(mir.as_to_other_pot()); case lib.MIRKind.ToStakeCredentials: return certConvHelper.moveInstantaneousRewardsToStakeCreds(mir.pot())( - mir.as_to_stake_creds() + mir.as_to_stake_creds(), ); default: throw ( @@ -288,14 +288,14 @@ exports.convertSingleHostAddr_ = maybe => cont => singleHostAddr => { const ipv6 = singleHostAddr.ipv6(); return cont(port ? maybe.just(port) : maybe.nothing)( - ipv4 ? maybe.just(ipv4) : maybe.nothing + ipv4 ? maybe.just(ipv4) : maybe.nothing, )(ipv6 ? maybe.just(ipv6) : maybe.nothing); }; exports.convertSingleHostName_ = maybe => cont => singleHostName => { const port = singleHostName.port(); return cont(port ? maybe.just(port) : maybe.nothing)( - singleHostName.dns_name().record() + singleHostName.dns_name().record(), ); }; diff --git a/src/Internal/Plutip/PortCheck.js b/src/Internal/Plutip/PortCheck.js index b9440791b..fbec99508 100644 --- a/src/Internal/Plutip/PortCheck.js +++ b/src/Internal/Plutip/PortCheck.js @@ -13,7 +13,7 @@ exports._isPortAvailable = port => () => port + ", error: " + err.code + - ")" + ")", ); } }) diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index d66f01e93..a02533fd5 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -128,7 +128,7 @@ exports._bigIntToInt = maybe => bigInt => { const str = bigInt.to_str(); if (str[0] == "-") { return maybe.just( - lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))) + lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))), ); } else { return maybe.just(lib.Int.new(lib.BigNum.from_str(str))); @@ -164,18 +164,18 @@ exports.newCertificates = () => lib.Certificates.new(); exports.newStakeRegistrationCertificate = stakeCredential => () => lib.Certificate.new_stake_registration( - lib.StakeRegistration.new(stakeCredential) + lib.StakeRegistration.new(stakeCredential), ); exports.newStakeDeregistrationCertificate = stakeCredential => () => lib.Certificate.new_stake_deregistration( - lib.StakeDeregistration.new(stakeCredential) + lib.StakeDeregistration.new(stakeCredential), ); exports.newStakeDelegationCertificate = stakeCredential => ed25519KeyHash => () => lib.Certificate.new_stake_delegation( - lib.StakeDelegation.new(stakeCredential, ed25519KeyHash) + lib.StakeDelegation.new(stakeCredential, ed25519KeyHash), ); exports.newPoolRegistrationCertificate = @@ -200,9 +200,9 @@ exports.newPoolRegistrationCertificate = reward_account, poolOwners, relays, - poolMetadata - ) - ) + poolMetadata, + ), + ), ); exports.newUnitInterval = numerator => denominator => () => @@ -210,13 +210,17 @@ exports.newUnitInterval = numerator => denominator => () => exports.newPoolRetirementCertificate = poolKeyHash => epoch => () => lib.Certificate.new_pool_retirement( - lib.PoolRetirement.new(poolKeyHash, epoch) + lib.PoolRetirement.new(poolKeyHash, epoch), ); exports.newGenesisKeyDelegationCertificate = genesisHash => genesisDelegateHash => vrfKeyhash => () => lib.Certificate.new_genesis_key_delegation( - lib.GenesisKeyDelegation.new(genesisHash, genesisDelegateHash, vrfKeyhash) + lib.GenesisKeyDelegation.new( + genesisHash, + genesisDelegateHash, + vrfKeyhash, + ), ); exports.addCert = certificates => certificate => () => @@ -229,11 +233,11 @@ exports.setTxBodyNetworkId = setter("network_id"); exports.transactionBodySetRequiredSigners = containerHelper => body => keyHashes => () => body.set_required_signers( - containerHelper.pack(lib.Ed25519KeyHashes, keyHashes) + containerHelper.pack(lib.Ed25519KeyHashes, keyHashes), ); exports.transactionBodySetValidityStartInterval = setter( - "validity_start_interval_bignum" + "validity_start_interval_bignum", ); exports.transactionBodySetAuxiliaryDataHash = txBody => hash => () => @@ -254,12 +258,12 @@ exports.newSingleHostAddr = port => ipv4 => ipv6 => () => exports.newSingleHostName = port => dnsName => () => lib.Relay.new_single_host_name( - lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)) + lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)), ); exports.newMultiHostName = dnsName => () => lib.Relay.new_multi_host_name( - lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)) + lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)), ); exports.newPoolMetadata = url => hash => () => @@ -276,7 +280,7 @@ exports.newMIRToStakeCredentials = containerHelper => entries => () => exports.newMoveInstantaneousRewardsCertificate = mir => () => lib.Certificate.new_move_instantaneous_rewards_cert( - lib.MoveInstantaneousRewardsCert.new(mir) + lib.MoveInstantaneousRewardsCert.new(mir), ); exports.newWithdrawals = containerHelper => entries => () => diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index b9f664e97..aa2a49f4e 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -55,39 +55,39 @@ exports._byronAddressNetworkId = toAdt => addr => { exports._addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); exports._stakeCredentialFromBytes = callClassStaticMaybe( "StakeCredential", - "from_bytes" + "from_bytes", ); exports._byronAddressFromBytes = callClassStaticMaybe( "ByronAddress", - "from_bytes" + "from_bytes", ); exports._addressFromBech32 = callClassStaticMaybe("Address", "from_bech32"); exports._byronAddressFromBase58 = callClassStaticMaybe( "ByronAddress", - "from_base58" + "from_base58", ); exports._baseAddressFromAddress = callClassStaticMaybe( "BaseAddress", - "from_address" + "from_address", ); exports._byronAddressFromAddress = callClassStaticMaybe( "ByronAddress", - "from_address" + "from_address", ); exports._enterpriseAddressFromAddress = callClassStaticMaybe( "EnterpriseAddress", - "from_address" + "from_address", ); exports._pointerAddressFromAddress = callClassStaticMaybe( "PointerAddress", - "from_address" + "from_address", ); exports._rewardAddressFromAddress = callClassStaticMaybe( "RewardAddress", - "from_address" + "from_address", ); exports.baseAddressToAddress = callToAddress; @@ -124,7 +124,7 @@ exports.pointerAddressStakePointer = pa => { exports._enterpriseAddress = netIdToInt => inpRec => { return lib.EnterpriseAddress.new( netIdToInt(inpRec.network), - inpRec.paymentCred + inpRec.paymentCred, ); }; @@ -136,7 +136,7 @@ exports._baseAddress = netIdToInt => inpRec => { return lib.BaseAddress.new( netIdToInt(inpRec.network), inpRec.paymentCred, - inpRec.delegationCred + inpRec.delegationCred, ); }; @@ -146,6 +146,6 @@ exports._pointerAddress = netIdToInt => inpRec => { return lib.PointerAddress.new( netIdToInt(inpRec.network), inpRec.paymentCred, - pointerForeign + pointerForeign, ); }; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 130262830..d9ea99143 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -26,12 +26,12 @@ exports.newGeneralTransactionMetadata = containerHelper => entries => () => exports.newMetadataMap = containerHelper => entries => () => lib.TransactionMetadatum.new_map( - containerHelper.packMap(lib.MetadataMap, entries) + containerHelper.packMap(lib.MetadataMap, entries), ); exports.newMetadataList = containerHelper => entries => () => lib.TransactionMetadatum.new_list( - containerHelper.pack(lib.MetadataList, entries) + containerHelper.pack(lib.MetadataList, entries), ); exports.newMetadataInt = int => () => lib.TransactionMetadatum.new_int(int); diff --git a/src/Internal/Test/E2E/Runner.js b/src/Internal/Test/E2E/Runner.js index 58ca7ffd5..66aa3c1e8 100644 --- a/src/Internal/Test/E2E/Runner.js +++ b/src/Internal/Test/E2E/Runner.js @@ -2,8 +2,8 @@ exports._retrieveJQuery = page => () => page.evaluate(() => window .fetch( - "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" + "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js", ) .then(res => res.text()) - .catch(_ => "") + .catch(_ => ""), ); diff --git a/src/Internal/Types/ByteArray.js b/src/Internal/Types/ByteArray.js index 8f204f55a..db9677c85 100644 --- a/src/Internal/Types/ByteArray.js +++ b/src/Internal/Types/ByteArray.js @@ -46,8 +46,8 @@ exports.byteArrayToUTF16le = uint8array => { for (let j = 0, i = 0; i < len; i++) output.push( fromCharCode( - (uint8array[j++] << 8) + (j < length ? uint8array[j++] : extra++) - ) + (uint8array[j++] << 8) + (j < length ? uint8array[j++] : extra++), + ), ); output.push(fromCharCode(extra)); return output.join(""); diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 851fceb14..387cca589 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -14,7 +14,7 @@ const getIsWalletAvailableTagName = wallet => { const nodeEnvError = new Error( "`window` is not an object. Are you trying to run a Contract with" + - " connected light wallet in NodeJS environment?" + " connected light wallet in NodeJS environment?", ); const checkNotNode = () => { @@ -28,14 +28,14 @@ const enableWallet = wallet => () => { return window.cardano[wallet].enable().catch(e => { throw new Error( "enableWallet failed: " + - (typeof e.info == "string" ? e.info : e.toString()) + (typeof e.info == "string" ? e.info : e.toString()), ); }); } else { throw new Error( "Wallet is not available. Use `isWalletAvailable " + getIsWalletAvailableTagName(wallet) + - "` before connecting." + "` before connecting.", ); } }; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 3a5cb5387..0e05c4fa9 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -16,10 +16,10 @@ exports._bip32PrivateKeyFromMnemonic = left => right => phrase => { return right( lib.Bip32PrivateKey.from_bip39_entropy( Uint8Array.from( - Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") + Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex"), ), - new Uint8Array() // passphrase (not currently implemented) - ) + new Uint8Array(), // passphrase (not currently implemented) + ), ); } catch (e) { return left(e.toString()); diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index 7414ae307..0554d3957 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -9,7 +9,7 @@ exports._getCollateral = maybe => conn => () => conn.experimental .getCollateral() .then(utxos => - utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing + utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing, ); exports._getBalance = conn => () => conn.getBalance(); diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js index 79e1dab9f..ce65fbcb5 100644 --- a/src/Internal/Wallet/Cip30/SignData.js +++ b/src/Internal/Wallet/Cip30/SignData.js @@ -89,11 +89,11 @@ exports.setCoseKeyAlgHeaderToEdDsa = key => () => { exports.setCoseKeyCrvHeaderToEd25519 = key => () => { key.set_header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) + lib.Int.new_negative(lib.BigNum.from_str("1")), // crv (-1) ), lib.CBORValue.new_int( - lib.Int.new_i32(6) // Ed25519 (6) - ) + lib.Int.new_i32(6), // Ed25519 (6) + ), ); }; @@ -101,9 +101,9 @@ exports.setCoseKeyCrvHeaderToEd25519 = key => () => { exports.setCoseKeyXHeader = publicKeyBytes => key => () => { key.set_header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) + lib.Int.new_negative(lib.BigNum.from_str("2")), // x (-2) ), - lib.CBORValue.new_bytes(publicKeyBytes) // public key bytes + lib.CBORValue.new_bytes(publicKeyBytes), // public key bytes ); }; diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index 4b62dab59..0e9892177 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -37,7 +37,7 @@ exports.injectCip30Mock = walletName => mock => () => { getRewardAddresses: mock.getRewardAddresses, signTx: mock.signTx, signData: mock.signData, - }) + }), ); }, }; diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js index b3ec19246..d93caefd6 100644 --- a/test/ApplyArgs.js +++ b/test/ApplyArgs.js @@ -85,7 +85,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const read_script = fp => { return fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/".concat(fp)), - "utf8" + "utf8", ); }; @@ -96,71 +96,71 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { scripts["always-succeeds-v2"] = read_script("always-succeeds-v2.plutus"); scripts["one-shot-minting-v2"] = read_script("one-shot-minting-v2.plutus"); scripts["check-datum-is-inline"] = read_script( - "check-datum-is-inline.plutus" + "check-datum-is-inline.plutus", ); scripts["always-fails-big-arg"] = read_script( - "applied/always-fails-big-arg.plutus" + "applied/always-fails-big-arg.plutus", ); scripts["always-fails-no-args"] = read_script( - "applied/always-fails-no-args.plutus" + "applied/always-fails-no-args.plutus", ); scripts["always-fails-unit"] = read_script( - "applied/always-fails-unit.plutus" + "applied/always-fails-unit.plutus", ); scripts["always-succeeds-v2-big-arg"] = read_script( - "applied/always-succeeds-v2-big-arg.plutus" + "applied/always-succeeds-v2-big-arg.plutus", ); scripts["always-succeeds-v2-no-args"] = read_script( - "applied/always-succeeds-v2-no-args.plutus" + "applied/always-succeeds-v2-no-args.plutus", ); scripts["always-succeeds-v2-unit"] = read_script( - "applied/always-succeeds-v2-unit.plutus" + "applied/always-succeeds-v2-unit.plutus", ); scripts["check-datum-is-inline-big-arg"] = read_script( - "applied/check-datum-is-inline-big-arg.plutus" + "applied/check-datum-is-inline-big-arg.plutus", ); scripts["check-datum-is-inline-no-args"] = read_script( - "applied/check-datum-is-inline-no-args.plutus" + "applied/check-datum-is-inline-no-args.plutus", ); scripts["check-datum-is-inline-unit"] = read_script( - "applied/check-datum-is-inline-unit.plutus" + "applied/check-datum-is-inline-unit.plutus", ); scripts["include-datum-big-arg"] = read_script( - "applied/include-datum-big-arg.plutus" + "applied/include-datum-big-arg.plutus", ); scripts["include-datum-no-args"] = read_script( - "applied/include-datum-no-args.plutus" + "applied/include-datum-no-args.plutus", ); scripts["include-datum-unit"] = read_script( - "applied/include-datum-unit.plutus" + "applied/include-datum-unit.plutus", ); scripts["one-shot-minting-big-arg"] = read_script( - "applied/one-shot-minting-big-arg.plutus" + "applied/one-shot-minting-big-arg.plutus", ); scripts["one-shot-minting-no-args"] = read_script( - "applied/one-shot-minting-no-args.plutus" + "applied/one-shot-minting-no-args.plutus", ); scripts["one-shot-minting-unit"] = read_script( - "applied/one-shot-minting-unit.plutus" + "applied/one-shot-minting-unit.plutus", ); scripts["one-shot-minting-v2-big-arg"] = read_script( - "applied/one-shot-minting-v2-big-arg.plutus" + "applied/one-shot-minting-v2-big-arg.plutus", ); scripts["one-shot-minting-v2-no-args"] = read_script( - "applied/one-shot-minting-v2-no-args.plutus" + "applied/one-shot-minting-v2-no-args.plutus", ); scripts["one-shot-minting-v2-unit"] = read_script( - "applied/one-shot-minting-v2-unit.plutus" + "applied/one-shot-minting-v2-unit.plutus", ); scripts["redeemer1-validator-big-arg"] = read_script( - "applied/redeemer1-validator-big-arg.plutus" + "applied/redeemer1-validator-big-arg.plutus", ); scripts["redeemer1-validator-no-args"] = read_script( - "applied/redeemer1-validator-no-args.plutus" + "applied/redeemer1-validator-no-args.plutus", ); scripts["redeemer1-validator-unit"] = read_script( - "applied/redeemer1-validator-unit.plutus" + "applied/redeemer1-validator-unit.plutus", ); } diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 69ce9d44b..ed7e406b3 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -97,8 +97,8 @@ exports._getCoseKeyHeaderAlg = maybe => coseKey => { exports._getCoseKeyHeaderCrv = maybe => coseKey => { const cborValue = coseKey.header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) - ) + lib.Int.new_negative(lib.BigNum.from_str("1")), // crv (-1) + ), ); return opt_chain(maybe, cborValue, "as_int", "as_i32"); }; @@ -107,8 +107,8 @@ exports._getCoseKeyHeaderCrv = maybe => coseKey => { exports._getCoseKeyHeaderX = maybe => coseKey => { const cborValue = coseKey.header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) - ) + lib.Int.new_negative(lib.BigNum.from_str("2")), // x (-2) + ), ); return opt_chain(maybe, cborValue, "as_bytes"); }; From 275b1384819df652cfb996bb34bb801e50424bb8 Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Tue, 19 Sep 2023 11:14:57 +0200 Subject: [PATCH 287/478] Remove trailing commas in JS files (prettier configuration) --- examples/AlwaysMints.js | 2 +- examples/AlwaysSucceeds.js | 2 +- examples/ECDSA.js | 2 +- examples/ExUnits.js | 2 +- examples/IncludeDatum.js | 2 +- examples/Lose7Ada.js | 2 +- examples/MintsMultipleTokens.js | 2 +- examples/MultipleRedeemers.js | 2 +- examples/OneShotMinting.js | 2 +- examples/OtherTypeTextEnvelope.js | 4 +- examples/PlutusV2/InlineDatum.js | 4 +- examples/PlutusV2/OneShotMinting.js | 4 +- examples/PlutusV2/Scripts/AlwaysMints.js | 2 +- examples/PlutusV2/Scripts/AlwaysSucceeds.js | 2 +- examples/Schnorr.js | 2 +- package.json | 3 +- src/Internal/ApplyArgs.js | 2 +- src/Internal/Deserialization/Transaction.js | 36 ++++++++-------- src/Internal/FfiHelpers.js | 2 +- src/Internal/JsWebSocket.js | 2 +- src/Internal/Plutip/PortCheck.js | 2 +- src/Internal/Serialization.js | 32 +++++++------- src/Internal/Serialization/Address.js | 24 +++++------ src/Internal/Serialization/AuxiliaryData.js | 4 +- src/Internal/Test/E2E/Runner.js | 4 +- src/Internal/Types/ByteArray.js | 4 +- src/Internal/Wallet.js | 8 ++-- src/Internal/Wallet/Bip32.js | 6 +-- src/Internal/Wallet/Cip30.js | 2 +- src/Internal/Wallet/Cip30/SignData.js | 10 ++--- src/Internal/Wallet/Cip30Mock.js | 8 ++-- test/ApplyArgs.js | 46 ++++++++++----------- test/Wallet/Cip30/SignData.js | 8 ++-- webpack.config.js | 36 ++++++++-------- 34 files changed, 136 insertions(+), 139 deletions(-) diff --git a/examples/AlwaysMints.js b/examples/AlwaysMints.js index 44c240e70..3ab8b58f3 100644 --- a/examples/AlwaysMints.js +++ b/examples/AlwaysMints.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-mints.plutus"), - "utf8", + "utf8" ); } exports.alwaysMints = script; diff --git a/examples/AlwaysSucceeds.js b/examples/AlwaysSucceeds.js index 766dacd84..4ba6671b7 100644 --- a/examples/AlwaysSucceeds.js +++ b/examples/AlwaysSucceeds.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-succeeds.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/ECDSA.js b/examples/ECDSA.js index 7cc001aeb..5115d95ec 100644 --- a/examples/ECDSA.js +++ b/examples/ECDSA.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/validate-ecdsa.plutus"), - "utf8", + "utf8" ); } exports.validateECDSA = script; diff --git a/examples/ExUnits.js b/examples/ExUnits.js index d0e6e2c6c..b0d16cf90 100644 --- a/examples/ExUnits.js +++ b/examples/ExUnits.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/exunits.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/IncludeDatum.js b/examples/IncludeDatum.js index 9ee2cb219..5ce016be7 100644 --- a/examples/IncludeDatum.js +++ b/examples/IncludeDatum.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/include-datum.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/Lose7Ada.js b/examples/Lose7Ada.js index 647993a10..f2e299ed7 100644 --- a/examples/Lose7Ada.js +++ b/examples/Lose7Ada.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-fails.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/MintsMultipleTokens.js b/examples/MintsMultipleTokens.js index 868a121b1..74ad17f73 100644 --- a/examples/MintsMultipleTokens.js +++ b/examples/MintsMultipleTokens.js @@ -12,7 +12,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const readScript = name => fs.readFileSync( path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), - "utf8", + "utf8" ); redeemerInt1 = readScript("redeemer1"); redeemerInt2 = readScript("redeemer2"); diff --git a/examples/MultipleRedeemers.js b/examples/MultipleRedeemers.js index 2695606b4..7d8855f2b 100644 --- a/examples/MultipleRedeemers.js +++ b/examples/MultipleRedeemers.js @@ -12,7 +12,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const readScript = name => fs.readFileSync( path.resolve(__dirname, `../../fixtures/scripts/${name}.plutus`), - "utf8", + "utf8" ); vredeemerInt1 = readScript("redeemer1-validator"); vredeemerInt2 = readScript("redeemer2-validator"); diff --git a/examples/OneShotMinting.js b/examples/OneShotMinting.js index 31cc4bc30..583fda109 100644 --- a/examples/OneShotMinting.js +++ b/examples/OneShotMinting.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/one-shot-minting.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/OtherTypeTextEnvelope.js b/examples/OtherTypeTextEnvelope.js index 1bd1efc7f..2affb4b24 100644 --- a/examples/OtherTypeTextEnvelope.js +++ b/examples/OtherTypeTextEnvelope.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/other-type-text-envelope.plutus", + "../../fixtures/scripts/other-type-text-envelope.plutus" ), - "utf8", + "utf8" ); } exports.otherTypeTextEnvelope = script; diff --git a/examples/PlutusV2/InlineDatum.js b/examples/PlutusV2/InlineDatum.js index fcba52bb8..367b1170b 100644 --- a/examples/PlutusV2/InlineDatum.js +++ b/examples/PlutusV2/InlineDatum.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/check-datum-is-inline.plutus", + "../../fixtures/scripts/check-datum-is-inline.plutus" ), - "utf8", + "utf8" ); } diff --git a/examples/PlutusV2/OneShotMinting.js b/examples/PlutusV2/OneShotMinting.js index df8adeb0e..d3c979a85 100644 --- a/examples/PlutusV2/OneShotMinting.js +++ b/examples/PlutusV2/OneShotMinting.js @@ -9,9 +9,9 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { script = fs.readFileSync( path.resolve( __dirname, - "../../fixtures/scripts/one-shot-minting-v2.plutus", + "../../fixtures/scripts/one-shot-minting-v2.plutus" ), - "utf8", + "utf8" ); } diff --git a/examples/PlutusV2/Scripts/AlwaysMints.js b/examples/PlutusV2/Scripts/AlwaysMints.js index c54d93a72..170c59121 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.js +++ b/examples/PlutusV2/Scripts/AlwaysMints.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-mints-v2.plutus"), - "utf8", + "utf8" ); } exports.alwaysMintsV2 = script; diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.js b/examples/PlutusV2/Scripts/AlwaysSucceeds.js index 419d05b1a..a143119c9 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.js +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/always-succeeds-v2.plutus"), - "utf8", + "utf8" ); } diff --git a/examples/Schnorr.js b/examples/Schnorr.js index 3751dea90..76d1ed204 100644 --- a/examples/Schnorr.js +++ b/examples/Schnorr.js @@ -8,7 +8,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const path = require("path"); script = fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/validate-schnorr.plutus"), - "utf8", + "utf8" ); } diff --git a/package.json b/package.json index 02c5bbc14..85fc6ca64 100755 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "webpack-dev-server": "4.7.4" }, "prettier": { - "arrowParens": "avoid" + "arrowParens": "avoid", + "trailingComma": "none" } } diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index bbb53a05e..1afe7de8d 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -29,7 +29,7 @@ exports.apply_params_to_script = left => right => args => script => { try { appliedScript = apply_args.apply_params_to_script_no_panic( argsBytes, - scriptBytes, + scriptBytes ); } catch (e) { return left("Error applying argument to script: ".concat(e.toString())); diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 1918acaf6..8a35f71b0 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -59,7 +59,7 @@ exports._txBodyUpdate = maybeGetter("update"); exports._txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); // validity_start_interval(): number | void; exports._txBodyValidityStartInterval = maybeGetter( - "validity_start_interval_bignum", + "validity_start_interval_bignum" ); // multiassets(): Mint | void; exports._txBodyMultiAssets = maybeGetter("multiassets"); @@ -98,7 +98,7 @@ exports._unpackWithdrawals = containerhelper => exports._unpackUpdate = containerhelper => update => { const pppus = containerhelper.unpackKeyIndexed( - update.proposed_protocol_parameter_updates(), + update.proposed_protocol_parameter_updates() ); return { epoch: update.epoch(), paramUpdates: pppus }; }; @@ -111,29 +111,29 @@ exports._convertCert = certConvHelper => cert => { switch (cert.kind()) { case lib.CertificateKind.StakeRegistration: return certConvHelper.stakeRegistration( - cert.as_stake_registration().stake_credential(), + cert.as_stake_registration().stake_credential() ); case lib.CertificateKind.StakeDeregistration: return certConvHelper.stakeDeregistration( - cert.as_stake_deregistration().stake_credential(), + cert.as_stake_deregistration().stake_credential() ); case lib.CertificateKind.StakeDelegation: return certConvHelper.stakeDelegation( - cert.as_stake_delegation().stake_credential(), + cert.as_stake_delegation().stake_credential() )(cert.as_stake_delegation().pool_keyhash()); case lib.CertificateKind.PoolRegistration: return certConvHelper.poolRegistration( - cert.as_pool_registration().pool_params(), + cert.as_pool_registration().pool_params() ); case lib.CertificateKind.PoolRetirement: return certConvHelper.poolRetirement( - cert.as_pool_retirement().pool_keyhash(), + cert.as_pool_retirement().pool_keyhash() )(cert.as_pool_retirement().epoch()); case lib.CertificateKind.GenesisKeyDelegation: return certConvHelper.genesisKeyDelegation( - cert.as_genesis_key_delegation().genesishash(), + cert.as_genesis_key_delegation().genesishash() )(cert.as_genesis_key_delegation().genesis_delegate_hash())( - cert.as_genesis_key_delegation().vrf_keyhash(), + cert.as_genesis_key_delegation().vrf_keyhash() ); case lib.CertificateKind.MoveInstantaneousRewardsCert: const mirCert = cert.as_move_instantaneous_rewards_cert(); @@ -141,11 +141,11 @@ exports._convertCert = certConvHelper => cert => { switch (mir.kind()) { case lib.MIRKind.ToOtherPot: return certConvHelper.moveInstantaneousRewardsToOtherPotCert( - mir.pot(), + mir.pot() )(mir.as_to_other_pot()); case lib.MIRKind.ToStakeCredentials: return certConvHelper.moveInstantaneousRewardsToStakeCreds(mir.pot())( - mir.as_to_stake_creds(), + mir.as_to_stake_creds() ); default: throw ( @@ -182,7 +182,7 @@ exports._unpackProtocolParamUpdate = maybe => ppu => { maxBlockExUnits: optional(ppu.max_block_ex_units()), maxValueSize: optional(ppu.max_value_size()), collateralPercentage: optional(ppu.collateral_percentage()), - maxCollateralInputs: optional(ppu.max_collateral_inputs()), + maxCollateralInputs: optional(ppu.max_collateral_inputs()) }; }; @@ -230,26 +230,26 @@ exports._convertMetadatum = metadataCtors => cslMetadatum => { exports._unpackExUnits = exunits => { return { mem: exunits.mem(), - steps: exunits.steps(), + steps: exunits.steps() }; }; exports._unpackUnitInterval = ui => { return { numerator: ui.numerator(), - denominator: ui.denominator(), + denominator: ui.denominator() }; }; exports._unpackProtocolVersion = cslPV => ({ major: cslPV.major(), - minor: cslPV.minor(), + minor: cslPV.minor() }); exports._unpackExUnitsPrices = cslEup => { return { memPrice: cslEup.mem_price(), - stepPrice: cslEup.step_price(), + stepPrice: cslEup.step_price() }; }; @@ -288,14 +288,14 @@ exports.convertSingleHostAddr_ = maybe => cont => singleHostAddr => { const ipv6 = singleHostAddr.ipv6(); return cont(port ? maybe.just(port) : maybe.nothing)( - ipv4 ? maybe.just(ipv4) : maybe.nothing, + ipv4 ? maybe.just(ipv4) : maybe.nothing )(ipv6 ? maybe.just(ipv6) : maybe.nothing); }; exports.convertSingleHostName_ = maybe => cont => singleHostName => { const port = singleHostName.port(); return cont(port ? maybe.just(port) : maybe.nothing)( - singleHostName.dns_name().record(), + singleHostName.dns_name().record() ); }; diff --git a/src/Internal/FfiHelpers.js b/src/Internal/FfiHelpers.js index 457e224b5..7820e81c5 100644 --- a/src/Internal/FfiHelpers.js +++ b/src/Internal/FfiHelpers.js @@ -40,5 +40,5 @@ exports._containerHelper = r => ({ res.insert(key, value); }); return res; - }, + } }); diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index 7a0c537e7..1018dec3e 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -24,7 +24,7 @@ exports._mkWebSocket = logger => url => () => { ws = new ReconnectingWebSocket.default(url); } else { ws = new ReconnectingWebSocket(url, [], { - WebSocket: NoPerMessageDeflateWebSocket, + WebSocket: NoPerMessageDeflateWebSocket }); } ws.finalizers = []; diff --git a/src/Internal/Plutip/PortCheck.js b/src/Internal/Plutip/PortCheck.js index fbec99508..b9440791b 100644 --- a/src/Internal/Plutip/PortCheck.js +++ b/src/Internal/Plutip/PortCheck.js @@ -13,7 +13,7 @@ exports._isPortAvailable = port => () => port + ", error: " + err.code + - ")", + ")" ); } }) diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index a02533fd5..d66f01e93 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -128,7 +128,7 @@ exports._bigIntToInt = maybe => bigInt => { const str = bigInt.to_str(); if (str[0] == "-") { return maybe.just( - lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))), + lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))) ); } else { return maybe.just(lib.Int.new(lib.BigNum.from_str(str))); @@ -164,18 +164,18 @@ exports.newCertificates = () => lib.Certificates.new(); exports.newStakeRegistrationCertificate = stakeCredential => () => lib.Certificate.new_stake_registration( - lib.StakeRegistration.new(stakeCredential), + lib.StakeRegistration.new(stakeCredential) ); exports.newStakeDeregistrationCertificate = stakeCredential => () => lib.Certificate.new_stake_deregistration( - lib.StakeDeregistration.new(stakeCredential), + lib.StakeDeregistration.new(stakeCredential) ); exports.newStakeDelegationCertificate = stakeCredential => ed25519KeyHash => () => lib.Certificate.new_stake_delegation( - lib.StakeDelegation.new(stakeCredential, ed25519KeyHash), + lib.StakeDelegation.new(stakeCredential, ed25519KeyHash) ); exports.newPoolRegistrationCertificate = @@ -200,9 +200,9 @@ exports.newPoolRegistrationCertificate = reward_account, poolOwners, relays, - poolMetadata, - ), - ), + poolMetadata + ) + ) ); exports.newUnitInterval = numerator => denominator => () => @@ -210,17 +210,13 @@ exports.newUnitInterval = numerator => denominator => () => exports.newPoolRetirementCertificate = poolKeyHash => epoch => () => lib.Certificate.new_pool_retirement( - lib.PoolRetirement.new(poolKeyHash, epoch), + lib.PoolRetirement.new(poolKeyHash, epoch) ); exports.newGenesisKeyDelegationCertificate = genesisHash => genesisDelegateHash => vrfKeyhash => () => lib.Certificate.new_genesis_key_delegation( - lib.GenesisKeyDelegation.new( - genesisHash, - genesisDelegateHash, - vrfKeyhash, - ), + lib.GenesisKeyDelegation.new(genesisHash, genesisDelegateHash, vrfKeyhash) ); exports.addCert = certificates => certificate => () => @@ -233,11 +229,11 @@ exports.setTxBodyNetworkId = setter("network_id"); exports.transactionBodySetRequiredSigners = containerHelper => body => keyHashes => () => body.set_required_signers( - containerHelper.pack(lib.Ed25519KeyHashes, keyHashes), + containerHelper.pack(lib.Ed25519KeyHashes, keyHashes) ); exports.transactionBodySetValidityStartInterval = setter( - "validity_start_interval_bignum", + "validity_start_interval_bignum" ); exports.transactionBodySetAuxiliaryDataHash = txBody => hash => () => @@ -258,12 +254,12 @@ exports.newSingleHostAddr = port => ipv4 => ipv6 => () => exports.newSingleHostName = port => dnsName => () => lib.Relay.new_single_host_name( - lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)), + lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)) ); exports.newMultiHostName = dnsName => () => lib.Relay.new_multi_host_name( - lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)), + lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)) ); exports.newPoolMetadata = url => hash => () => @@ -280,7 +276,7 @@ exports.newMIRToStakeCredentials = containerHelper => entries => () => exports.newMoveInstantaneousRewardsCertificate = mir => () => lib.Certificate.new_move_instantaneous_rewards_cert( - lib.MoveInstantaneousRewardsCert.new(mir), + lib.MoveInstantaneousRewardsCert.new(mir) ); exports.newWithdrawals = containerHelper => entries => () => diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index aa2a49f4e..68c9e9b13 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -55,39 +55,39 @@ exports._byronAddressNetworkId = toAdt => addr => { exports._addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); exports._stakeCredentialFromBytes = callClassStaticMaybe( "StakeCredential", - "from_bytes", + "from_bytes" ); exports._byronAddressFromBytes = callClassStaticMaybe( "ByronAddress", - "from_bytes", + "from_bytes" ); exports._addressFromBech32 = callClassStaticMaybe("Address", "from_bech32"); exports._byronAddressFromBase58 = callClassStaticMaybe( "ByronAddress", - "from_base58", + "from_base58" ); exports._baseAddressFromAddress = callClassStaticMaybe( "BaseAddress", - "from_address", + "from_address" ); exports._byronAddressFromAddress = callClassStaticMaybe( "ByronAddress", - "from_address", + "from_address" ); exports._enterpriseAddressFromAddress = callClassStaticMaybe( "EnterpriseAddress", - "from_address", + "from_address" ); exports._pointerAddressFromAddress = callClassStaticMaybe( "PointerAddress", - "from_address", + "from_address" ); exports._rewardAddressFromAddress = callClassStaticMaybe( "RewardAddress", - "from_address", + "from_address" ); exports.baseAddressToAddress = callToAddress; @@ -117,14 +117,14 @@ exports.pointerAddressStakePointer = pa => { return { slot: pointerForeign.slot_bignum(), txIx: pointerForeign.tx_index_bignum(), - certIx: pointerForeign.cert_index_bignum(), + certIx: pointerForeign.cert_index_bignum() }; }; exports._enterpriseAddress = netIdToInt => inpRec => { return lib.EnterpriseAddress.new( netIdToInt(inpRec.network), - inpRec.paymentCred, + inpRec.paymentCred ); }; @@ -136,7 +136,7 @@ exports._baseAddress = netIdToInt => inpRec => { return lib.BaseAddress.new( netIdToInt(inpRec.network), inpRec.paymentCred, - inpRec.delegationCred, + inpRec.delegationCred ); }; @@ -146,6 +146,6 @@ exports._pointerAddress = netIdToInt => inpRec => { return lib.PointerAddress.new( netIdToInt(inpRec.network), inpRec.paymentCred, - pointerForeign, + pointerForeign ); }; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index d9ea99143..130262830 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -26,12 +26,12 @@ exports.newGeneralTransactionMetadata = containerHelper => entries => () => exports.newMetadataMap = containerHelper => entries => () => lib.TransactionMetadatum.new_map( - containerHelper.packMap(lib.MetadataMap, entries), + containerHelper.packMap(lib.MetadataMap, entries) ); exports.newMetadataList = containerHelper => entries => () => lib.TransactionMetadatum.new_list( - containerHelper.pack(lib.MetadataList, entries), + containerHelper.pack(lib.MetadataList, entries) ); exports.newMetadataInt = int => () => lib.TransactionMetadatum.new_int(int); diff --git a/src/Internal/Test/E2E/Runner.js b/src/Internal/Test/E2E/Runner.js index 66aa3c1e8..58ca7ffd5 100644 --- a/src/Internal/Test/E2E/Runner.js +++ b/src/Internal/Test/E2E/Runner.js @@ -2,8 +2,8 @@ exports._retrieveJQuery = page => () => page.evaluate(() => window .fetch( - "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js", + "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" ) .then(res => res.text()) - .catch(_ => ""), + .catch(_ => "") ); diff --git a/src/Internal/Types/ByteArray.js b/src/Internal/Types/ByteArray.js index db9677c85..8f204f55a 100644 --- a/src/Internal/Types/ByteArray.js +++ b/src/Internal/Types/ByteArray.js @@ -46,8 +46,8 @@ exports.byteArrayToUTF16le = uint8array => { for (let j = 0, i = 0; i < len; i++) output.push( fromCharCode( - (uint8array[j++] << 8) + (j < length ? uint8array[j++] : extra++), - ), + (uint8array[j++] << 8) + (j < length ? uint8array[j++] : extra++) + ) ); output.push(fromCharCode(extra)); return output.join(""); diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 387cca589..52986c6e3 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -6,7 +6,7 @@ const getIsWalletAvailableTagName = wallet => { gerowallet: "GeroWallet", flint: "FlintWallet", LodeWallet: "LodeWallet", - eternl: "EternlWallet", + eternl: "EternlWallet" }; return strs[wallet] || "is?WalletAvailable"; @@ -14,7 +14,7 @@ const getIsWalletAvailableTagName = wallet => { const nodeEnvError = new Error( "`window` is not an object. Are you trying to run a Contract with" + - " connected light wallet in NodeJS environment?", + " connected light wallet in NodeJS environment?" ); const checkNotNode = () => { @@ -28,14 +28,14 @@ const enableWallet = wallet => () => { return window.cardano[wallet].enable().catch(e => { throw new Error( "enableWallet failed: " + - (typeof e.info == "string" ? e.info : e.toString()), + (typeof e.info == "string" ? e.info : e.toString()) ); }); } else { throw new Error( "Wallet is not available. Use `isWalletAvailable " + getIsWalletAvailableTagName(wallet) + - "` before connecting.", + "` before connecting." ); } }; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 0e05c4fa9..3a5cb5387 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -16,10 +16,10 @@ exports._bip32PrivateKeyFromMnemonic = left => right => phrase => { return right( lib.Bip32PrivateKey.from_bip39_entropy( Uint8Array.from( - Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex"), + Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") ), - new Uint8Array(), // passphrase (not currently implemented) - ), + new Uint8Array() // passphrase (not currently implemented) + ) ); } catch (e) { return left(e.toString()); diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index 0554d3957..7414ae307 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -9,7 +9,7 @@ exports._getCollateral = maybe => conn => () => conn.experimental .getCollateral() .then(utxos => - utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing, + utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing ); exports._getBalance = conn => () => conn.getBalance(); diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js index ce65fbcb5..79e1dab9f 100644 --- a/src/Internal/Wallet/Cip30/SignData.js +++ b/src/Internal/Wallet/Cip30/SignData.js @@ -89,11 +89,11 @@ exports.setCoseKeyAlgHeaderToEdDsa = key => () => { exports.setCoseKeyCrvHeaderToEd25519 = key => () => { key.set_header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")), // crv (-1) + lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) ), lib.CBORValue.new_int( - lib.Int.new_i32(6), // Ed25519 (6) - ), + lib.Int.new_i32(6) // Ed25519 (6) + ) ); }; @@ -101,9 +101,9 @@ exports.setCoseKeyCrvHeaderToEd25519 = key => () => { exports.setCoseKeyXHeader = publicKeyBytes => key => () => { key.set_header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")), // x (-2) + lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) ), - lib.CBORValue.new_bytes(publicKeyBytes), // public key bytes + lib.CBORValue.new_bytes(publicKeyBytes) // public key bytes ); }; diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index 0e9892177..9e32e250f 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -28,7 +28,7 @@ exports.injectCip30Mock = walletName => mock => () => { getNetworkId: mock.getNetworkId, getUtxos: mock.getUtxos, experimental: { - getCollateral: mock.getCollateral, + getCollateral: mock.getCollateral }, getBalance: mock.getBalance, getUsedAddresses: mock.getUsedAddresses, @@ -36,10 +36,10 @@ exports.injectCip30Mock = walletName => mock => () => { getChangeAddress: mock.getChangeAddress, getRewardAddresses: mock.getRewardAddresses, signTx: mock.signTx, - signData: mock.signData, - }), + signData: mock.signData + }) ); - }, + } }; return () => { diff --git a/test/ApplyArgs.js b/test/ApplyArgs.js index d93caefd6..b3ec19246 100644 --- a/test/ApplyArgs.js +++ b/test/ApplyArgs.js @@ -85,7 +85,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { const read_script = fp => { return fs.readFileSync( path.resolve(__dirname, "../../fixtures/scripts/".concat(fp)), - "utf8", + "utf8" ); }; @@ -96,71 +96,71 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { scripts["always-succeeds-v2"] = read_script("always-succeeds-v2.plutus"); scripts["one-shot-minting-v2"] = read_script("one-shot-minting-v2.plutus"); scripts["check-datum-is-inline"] = read_script( - "check-datum-is-inline.plutus", + "check-datum-is-inline.plutus" ); scripts["always-fails-big-arg"] = read_script( - "applied/always-fails-big-arg.plutus", + "applied/always-fails-big-arg.plutus" ); scripts["always-fails-no-args"] = read_script( - "applied/always-fails-no-args.plutus", + "applied/always-fails-no-args.plutus" ); scripts["always-fails-unit"] = read_script( - "applied/always-fails-unit.plutus", + "applied/always-fails-unit.plutus" ); scripts["always-succeeds-v2-big-arg"] = read_script( - "applied/always-succeeds-v2-big-arg.plutus", + "applied/always-succeeds-v2-big-arg.plutus" ); scripts["always-succeeds-v2-no-args"] = read_script( - "applied/always-succeeds-v2-no-args.plutus", + "applied/always-succeeds-v2-no-args.plutus" ); scripts["always-succeeds-v2-unit"] = read_script( - "applied/always-succeeds-v2-unit.plutus", + "applied/always-succeeds-v2-unit.plutus" ); scripts["check-datum-is-inline-big-arg"] = read_script( - "applied/check-datum-is-inline-big-arg.plutus", + "applied/check-datum-is-inline-big-arg.plutus" ); scripts["check-datum-is-inline-no-args"] = read_script( - "applied/check-datum-is-inline-no-args.plutus", + "applied/check-datum-is-inline-no-args.plutus" ); scripts["check-datum-is-inline-unit"] = read_script( - "applied/check-datum-is-inline-unit.plutus", + "applied/check-datum-is-inline-unit.plutus" ); scripts["include-datum-big-arg"] = read_script( - "applied/include-datum-big-arg.plutus", + "applied/include-datum-big-arg.plutus" ); scripts["include-datum-no-args"] = read_script( - "applied/include-datum-no-args.plutus", + "applied/include-datum-no-args.plutus" ); scripts["include-datum-unit"] = read_script( - "applied/include-datum-unit.plutus", + "applied/include-datum-unit.plutus" ); scripts["one-shot-minting-big-arg"] = read_script( - "applied/one-shot-minting-big-arg.plutus", + "applied/one-shot-minting-big-arg.plutus" ); scripts["one-shot-minting-no-args"] = read_script( - "applied/one-shot-minting-no-args.plutus", + "applied/one-shot-minting-no-args.plutus" ); scripts["one-shot-minting-unit"] = read_script( - "applied/one-shot-minting-unit.plutus", + "applied/one-shot-minting-unit.plutus" ); scripts["one-shot-minting-v2-big-arg"] = read_script( - "applied/one-shot-minting-v2-big-arg.plutus", + "applied/one-shot-minting-v2-big-arg.plutus" ); scripts["one-shot-minting-v2-no-args"] = read_script( - "applied/one-shot-minting-v2-no-args.plutus", + "applied/one-shot-minting-v2-no-args.plutus" ); scripts["one-shot-minting-v2-unit"] = read_script( - "applied/one-shot-minting-v2-unit.plutus", + "applied/one-shot-minting-v2-unit.plutus" ); scripts["redeemer1-validator-big-arg"] = read_script( - "applied/redeemer1-validator-big-arg.plutus", + "applied/redeemer1-validator-big-arg.plutus" ); scripts["redeemer1-validator-no-args"] = read_script( - "applied/redeemer1-validator-no-args.plutus", + "applied/redeemer1-validator-no-args.plutus" ); scripts["redeemer1-validator-unit"] = read_script( - "applied/redeemer1-validator-unit.plutus", + "applied/redeemer1-validator-unit.plutus" ); } diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index ed7e406b3..69ce9d44b 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -97,8 +97,8 @@ exports._getCoseKeyHeaderAlg = maybe => coseKey => { exports._getCoseKeyHeaderCrv = maybe => coseKey => { const cborValue = coseKey.header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")), // crv (-1) - ), + lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) + ) ); return opt_chain(maybe, cborValue, "as_int", "as_i32"); }; @@ -107,8 +107,8 @@ exports._getCoseKeyHeaderCrv = maybe => coseKey => { exports._getCoseKeyHeaderX = maybe => coseKey => { const cborValue = coseKey.header( lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")), // x (-2) - ), + lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) + ) ); return opt_chain(maybe, cborValue, "as_bytes"); }; diff --git a/webpack.config.js b/webpack.config.js index c99c50e06..d52c035c3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { lazyCompilation: false, outputModule: true, syncWebAssembly: true, - topLevelAwait: true, + topLevelAwait: true }, devtool: "eval-source-map", @@ -29,9 +29,9 @@ module.exports = { // service, otherwise all requests to Kupo will fail. target: process.env.KUPO_HOST || "http://localhost:1442", changeOrigin: true, - pathRewrite: { "^/kupo": "" }, - }, - }, + pathRewrite: { "^/kupo": "" } + } + } }, // we can add more entrypoints as needed @@ -39,20 +39,20 @@ module.exports = { output: { path: path.resolve(__dirname, "dist"), - filename: "bundle.js", + filename: "bundle.js" }, module: { rules: [ { test: /\.(png|jpg|gif)$/i, - type: "asset", + type: "asset" }, { test: /\.plutus$/i, - type: "asset/source", - }, - ], + type: "asset/source" + } + ] }, resolve: { @@ -73,35 +73,35 @@ module.exports = { path: false, fs: false, readline: false, - child_process: false, + child_process: false }, alias: { // You should update this path to the location of your compiled scripts, // relative to `webpack.config.js` - Scripts: path.resolve(__dirname, "fixtures/scripts"), - }, + Scripts: path.resolve(__dirname, "fixtures/scripts") + } }, plugins: [ new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, + BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME }), new NodePolyfillPlugin(), new webpack.LoaderOptionsPlugin({ - debug: true, + debug: true }), new HtmlWebpackPlugin({ title: "cardano-transaction-lib-examples", template: "./examples/index.html", - inject: false, // See stackoverflow.com/a/38292765/3067181 + inject: false // See stackoverflow.com/a/38292765/3067181 }), new webpack.ProvidePlugin({ - Buffer: ["buffer", "Buffer"], + Buffer: ["buffer", "Buffer"] }), // ContextReplacementPlugin is used just to suppress a webpack warning: // "Critical dependency: the request of a dependency is an expression" // See https://stackoverflow.com/a/59235546/17365145 new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), - ], + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/) + ] }; From faeb88e271f63e27117663db8fce067678c66ee6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 19 Sep 2023 17:19:08 +0400 Subject: [PATCH 288/478] Use outputs to own address in asset quantities (makeChangeForAsset) --- examples/ByUrl.purs | 7 ++++ examples/ChangeGeneration.purs | 14 ++++++- src/Internal/BalanceTx/BalanceTx.purs | 57 +++++++++++++-------------- test/BalanceTx/ChangeGeneration.purs | 6 +++ 4 files changed, 52 insertions(+), 32 deletions(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index e8d06bbdd..abe04f6ef 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -34,6 +34,7 @@ import Contract.Monad (Contract) import Contract.Test.E2E (E2EConfigName, E2ETestName, addLinks, route) import Ctl.Examples.AlwaysMints as AlwaysMints import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds +import Ctl.Examples.ChangeGeneration as ChangeGeneration import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.Datums as Datums import Ctl.Examples.DropTokens as DropTokens @@ -214,4 +215,10 @@ examples = Map.fromFoldable , "ECDSA" /\ ECDSA.contract , "PaysWithDatum" /\ PaysWithDatum.contract , "DropTokens" /\ DropTokens.contract + , "ChangeGeneration1-1" /\ + ChangeGeneration.checkChangeOutputsDistribution 1 1 3 + , "ChangeGeneration3-1" /\ + ChangeGeneration.checkChangeOutputsDistribution 3 1 5 + , "ChangeGeneration1-3" /\ + ChangeGeneration.checkChangeOutputsDistribution 1 3 7 ] diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 36eb58d7d..34d91cb3c 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -6,7 +6,14 @@ import Contract.Monad (Contract, liftedE) import Contract.PlutusData (PlutusData, unitDatum) import Contract.ScriptLookups as Lookups import Contract.Scripts (validatorHash) -import Contract.Transaction (_body, _outputs, balanceTx) +import Contract.Transaction + ( _body + , _outputs + , awaitTxConfirmed + , balanceTx + , signTransaction + , submit + ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints import Contract.UnbalancedTx (mkUnbalancedTx) @@ -33,7 +40,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = validator <- AlwaysSucceeds.alwaysSucceedsScript let vhash = validatorHash validator - value = Value.lovelaceValueOf $ BigInt.fromInt 1000000 + value = Value.lovelaceValueOf $ BigInt.fromInt 1000001 constraintsToSelf :: TxConstraints Unit Unit constraintsToSelf = fold <<< fold $ replicate outputsToSelf @@ -55,3 +62,6 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = balancedTx <- liftedE $ balanceTx unbalancedTx let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs Array.length outputs `shouldEqual` expectedOutputs + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + awaitTxConfirmed txHash diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index d6462dc5f..bae198d07 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -143,8 +143,7 @@ import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty - ( cons' - , fromArray + ( fromArray , replicate , singleton , sortWith @@ -159,8 +158,7 @@ import Data.BigInt (BigInt) import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) -import Data.Lens.Getter ((^.)) -import Data.Lens.Setter ((%~), (.~), (?~)) +import Data.Lens ((%~), (.~), (?~), (^.)) import Data.Log.Tag (TagSet) import Data.Log.Tag (fromArray, tag) as TagSet import Data.Map (Map) @@ -554,6 +552,12 @@ setTxChangeOutputs outputs tx = -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1396 +-- | +-- | Differences from cardano-wallet: +-- | +-- | - We only consider outputs that go back to our wallet when deciding on +-- | the number of desired outputs for change generation. See +-- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530 makeChange :: Set Address -> Address @@ -587,16 +591,16 @@ makeChange -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1447 - -- | - -- | Differences from cardano-wallet: - -- | - -- | - We only consider outputs that go back to our wallet when deciding on - -- | the number of desired outputs for change generation. See - -- | https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530 changeValueOutputCoinPairs :: NonEmptyArray (Value /\ BigInt) changeValueOutputCoinPairs = outputCoins # NEArray.zip changeForAssets # NEArray.sortWith (AssetCount <<< fst) + where + outputCoins :: NonEmptyArray BigInt + outputCoins = + NEArray.fromArray + (valueToCoin' <<< _.amount <<< unwrap <$> ownAddressOutputs) + ?? NEArray.singleton zero splitOversizedValues :: NonEmptyArray (Value /\ BigInt) @@ -616,11 +620,12 @@ makeChange unbundle :: Value -> Value /\ BigInt unbundle (Value coin assets) = mkValue mempty assets /\ unwrap coin - -- find outputs belonging to one of the wallet's addresses. + -- outputs belonging to one of the wallet's addresses. ownAddressOutputs :: Array TransactionOutput - ownAddressOutputs = Array.filter - (unwrap >>> _.address >>> flip Set.member ownWalletAddresses) - txOutputs + ownAddressOutputs = Array.filter isOwnWalletAddress $ txBody ^. _outputs + where + isOwnWalletAddress = unwrap >>> _.address >>> flip Set.member + ownWalletAddresses changeForAssets :: NonEmptyArray Value changeForAssets = foldr @@ -628,14 +633,6 @@ makeChange (NEArray.replicate (length ownAddressOutputs) mempty) excessAssets - outputCoins :: NonEmptyArray BigInt - outputCoins = - NEArray.fromArray (valueToCoin' <<< _.amount <<< unwrap <$> txOutputs) - ?? NEArray.singleton zero - - txOutputs :: Array TransactionOutput - txOutputs = txBody ^. _outputs - excessAssets :: Array (AssetClass /\ BigInt) excessAssets = Value.valueAssets excessValue @@ -665,8 +662,10 @@ makeChange -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1729 makeChangeForAsset - :: Array TransactionOutput -> (AssetClass /\ BigInt) -> NonEmptyArray Value -makeChangeForAsset txOutputs (assetClass /\ excess) = + :: Array TransactionOutput + -> (AssetClass /\ BigInt) + -> NonEmptyArray Value +makeChangeForAsset ownAddressOutputs (assetClass /\ excess) = Value.assetToValue assetClass <$> partition excess weights ?? equipartition excess (length weights) where @@ -675,7 +674,8 @@ makeChangeForAsset txOutputs (assetClass /\ excess) = assetQuantities :: Array BigInt assetQuantities = - txOutputs <#> Value.getAssetQuantity assetClass <<< _.amount <<< unwrap + ownAddressOutputs <#> Value.getAssetQuantity assetClass <<< _.amount <<< + unwrap -- | Constructs an array of ada change outputs based on the given distribution. -- | @@ -728,16 +728,13 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = worker (adaRequiredAtStart changeValues) changeValues where worker :: BigInt -> NonEmptyArray ChangeValue -> Array Value - worker adaRequired = NEArray.uncons >>> case _ of + worker adaRequired changeValues = changeValues # NEArray.uncons >>> case _ of { head: x, tail } | Just xs <- NEA.fromArray tail , adaAvailable < adaRequired && noTokens x -> worker (adaRequired - x.minCoin) xs - { head: x, tail: xs } -> + _ -> let - changeValues :: NonEmptyArray ChangeValue - changeValues = NEArray.cons' x xs - adaRemaining :: BigInt adaRemaining = max zero (adaAvailable - adaRequired) diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs index 9f6404846..3cced8073 100644 --- a/test/BalanceTx/ChangeGeneration.purs +++ b/test/BalanceTx/ChangeGeneration.purs @@ -24,6 +24,12 @@ suite = do mkChangeOutputs 10 3 16 test "0 outputs to script address, 10 outputs to own address" do mkChangeOutputs 0 10 20 + test "1 / 1" do + mkChangeOutputs 1 1 3 + test "3 / 1" do + mkChangeOutputs 3 1 5 + test "1 / 3" do + mkChangeOutputs 1 3 7 mkChangeOutputs :: Int -> Int -> Int -> ContractTest mkChangeOutputs outputsToScript outputsToSelf expectedOutputs = do From 6323d9d4dfb4dc0cab7ab5e028bcc62f4d011bf2 Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Tue, 19 Sep 2023 16:03:54 +0200 Subject: [PATCH 289/478] Update to fixed plutip (missing max tx size config) --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 43870cdb1..c9f2e2140 100644 --- a/flake.lock +++ b/flake.lock @@ -11613,17 +11613,17 @@ ] }, "locked": { - "lastModified": 1694789675, - "narHash": "sha256-PrtF2lNSEZdoaTGXIgIFv7qT7TooaWWvF71V4ILrzXs=", + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "d060231ebf20383cbdc854a4664fd66a5815aedc", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "plutip", - "rev": "d060231ebf20383cbdc854a4664fd66a5815aedc", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 47855b3ba..ed984c96f 100644 --- a/flake.nix +++ b/flake.nix @@ -66,7 +66,7 @@ # Plutip server related inputs plutip = { - url = "github:mlabs-haskell/plutip/d060231ebf20383cbdc854a4664fd66a5815aedc"; + url = "github:mlabs-haskell/plutip/1bf0b547cd3689c727586abb8385c008fb2a3d1c"; inputs = { nixpkgs.follows = "nixpkgs"; iohk-nix.follows = "iohk-nix"; From bc82c39740e2f8c8fd71db338577c480d8a19e74 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 19 Sep 2023 19:18:13 +0400 Subject: [PATCH 290/478] WIP: change generation --- examples/ByUrl.purs | 6 +++--- examples/ChangeGeneration.purs | 23 ++++++++++++++++------- src/Internal/BalanceTx/BalanceTx.purs | 5 ++++- webpack.config.js | 4 ++-- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index abe04f6ef..f5d12f6de 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -216,9 +216,9 @@ examples = Map.fromFoldable , "PaysWithDatum" /\ PaysWithDatum.contract , "DropTokens" /\ DropTokens.contract , "ChangeGeneration1-1" /\ - ChangeGeneration.checkChangeOutputsDistribution 1 1 3 + ChangeGeneration.checkChangeOutputsDistribution 1 1 3 , "ChangeGeneration3-1" /\ - ChangeGeneration.checkChangeOutputsDistribution 3 1 5 + ChangeGeneration.checkChangeOutputsDistribution 3 1 5 , "ChangeGeneration1-3" /\ - ChangeGeneration.checkChangeOutputsDistribution 1 3 7 + ChangeGeneration.checkChangeOutputsDistribution 1 3 7 ] diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 34d91cb3c..725c989d7 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -2,15 +2,21 @@ module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where import Prelude +import Contract.BalanceTxConstraints (mustSendChangeWithDatum) import Contract.Monad (Contract, liftedE) -import Contract.PlutusData (PlutusData, unitDatum) +import Contract.PlutusData + ( Datum(Datum) + , OutputDatum(OutputDatum) + , PlutusData(Integer) + , unitDatum + ) import Contract.ScriptLookups as Lookups import Contract.Scripts (validatorHash) import Contract.Transaction ( _body , _outputs , awaitTxConfirmed - , balanceTx + , balanceTxWithConstraints , signTransaction , submit ) @@ -20,8 +26,7 @@ import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds -import Data.Array (fold, replicate, zip) -import Data.Array (length) as Array +import Data.Array (fold, length, replicate, zip) import Data.BigInt (fromInt) as BigInt import Data.Lens (to, (^.)) import Data.Maybe (Maybe(Just, Nothing)) @@ -59,9 +64,13 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = lookups :: Lookups.ScriptLookups PlutusData lookups = mempty unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx - let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs - Array.length outputs `shouldEqual` expectedOutputs + balancedTx <- liftedE $ balanceTxWithConstraints unbalancedTx + -- just to check that attaching datums works + ( mustSendChangeWithDatum $ OutputDatum $ Datum $ Integer $ BigInt.fromInt + 1000 + ) balancedSignedTx <- signTransaction balancedTx + let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs + length outputs `shouldEqual` expectedOutputs txHash <- submit balancedSignedTx awaitTxConfirmed txHash diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index bae198d07..fb57302d2 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -740,7 +740,10 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = changeValuesForOutputCoins :: NonEmptyArray Value changeValuesForOutputCoins = - makeChangeForCoin (_.outputAda <$> changeValues) adaRemaining + let + weights = _.outputAda <$> changeValues + in + makeChangeForCoin weights adaRemaining changeValuesWithMinCoins :: NonEmptyArray Value changeValuesWithMinCoins = assignMinCoin <$> changeValues diff --git a/webpack.config.js b/webpack.config.js index c0208387b..31b59505d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -33,8 +33,8 @@ module.exports = { }, }, client: { - overlay: false - } + overlay: false, + }, }, // we can add more entrypoints as needed From 996934e6b6b8548b04091d4b115ae36e753e155f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Sep 2023 15:55:40 +0400 Subject: [PATCH 291/478] Pretty-print value in balancing logs --- src/Internal/BalanceTx/BalanceTx.purs | 23 +++++++++++------------ src/Internal/Cardano/Types/Value.purs | 20 +++++++++++++++++++- src/Internal/Types/TokenName.purs | 1 + 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index fb57302d2..538eb9265 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -119,6 +119,7 @@ import Ctl.Internal.Cardano.Types.Value , minus , mkValue , posNonAdaAsset + , pprintValue , valueToCoin' ) import Ctl.Internal.Cardano.Types.Value as Value @@ -158,9 +159,10 @@ import Data.BigInt (BigInt) import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) -import Data.Lens ((%~), (.~), (?~), (^.)) -import Data.Log.Tag (TagSet) -import Data.Log.Tag (fromArray, tag) as TagSet +import Data.Lens.Getter ((^.)) +import Data.Lens.Setter ((%~), (.~), (?~)) +import Data.Log.Tag (TagSet, tag) +import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) import Data.Map (empty, insert, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, maybe) @@ -871,23 +873,20 @@ logTransactionWithChange message utxos mChangeOutputs tx = txBody :: TxBody txBody = tx ^. _body - tag :: forall (a :: Type). Show a => String -> a -> TagSet - tag title = TagSet.tag title <<< show - outputValuesTagSet :: Maybe (Array TransactionOutput) -> Array TagSet outputValuesTagSet Nothing = - [ "Output Value" `tag` outputValue txBody ] + [ "Output Value" `tag` pprintValue (outputValue txBody) ] outputValuesTagSet (Just changeOutputs) = - [ "Output Value without change" `tag` outputValue txBody - , "Change Value" `tag` foldMap getAmount changeOutputs + [ "Output Value without change" `tag` pprintValue (outputValue txBody) + , "Change Value" `tag` pprintValue (foldMap getAmount changeOutputs) ] transactionInfo :: Value -> TagSet transactionInfo inputValue = TagSet.fromArray $ - [ "Input Value" `tag` inputValue - , "Mint Value" `tag` mintValue txBody - , "Fees" `tag` (txBody ^. _fee) + [ "Input Value" `tag` pprintValue inputValue + , "Mint Value" `tag` pprintValue (mintValue txBody) + , "Fees" `tag` show (txBody ^. _fee) ] <> outputValuesTagSet mChangeOutputs in except (getInputValue utxos txBody) diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index ace38f689..dacabfca1 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -43,6 +43,8 @@ module Ctl.Internal.Cardano.Types.Value , numNonAdaCurrencySymbols , numTokenNames , posNonAdaAsset + , pprintNonAdaAsset + , pprintValue , scriptHashAsCurrencySymbol , split , sumTokenNameLengths @@ -90,16 +92,18 @@ import Ctl.Internal.Types.Scripts (MintingPolicyHash(MintingPolicyHash)) import Ctl.Internal.Types.TokenName ( TokenName , adaToken + , fromTokenName , getTokenName , mkTokenName , mkTokenNames ) -import Data.Array (cons, filter) +import Data.Array (cons, filter, intercalate) import Data.Array (fromFoldable) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (replicate, singleton, zipWith) as NEArray import Data.Bifunctor (bimap) import Data.BigInt (BigInt, fromInt, toNumber) +import Data.BigInt as BigInt import Data.Bitraversable (bitraverse, ltraverse) import Data.Either (Either(Left), note) import Data.Foldable (any, fold, foldl, length) @@ -338,6 +342,15 @@ instance Equipartition NonAdaAsset where map (mkSingletonNonAdaAsset cs tn) (equipartition tokenQuantity numParts) +pprintNonAdaAsset :: NonAdaAsset -> String +pprintNonAdaAsset mp = intercalate "\n" $ + Map.toUnfoldable (unwrapNonAdaAsset mp) <#> \(currency /\ tokens) -> + byteArrayToHex (getCurrencySymbol currency) <> ":\n" <> + ( intercalate "\n" $ Map.toUnfoldable tokens <#> \(tokenName /\ amount) -> + " " <> fromTokenName byteArrayToHex show tokenName <> ": " + <> BigInt.toString amount + ) + -- | Partitions a `NonAdaAsset` into smaller `NonAdaAsset`s, where the -- | quantity of each token is equipartitioned across the resultant -- | `NonAdaAsset`s, with the goal that no token quantity in any of the @@ -483,6 +496,11 @@ instance Equipartition Value where (equipartition coin numParts) (equipartition nonAdaAssets numParts) +pprintValue :: Value -> String +pprintValue value = + "ADA: " <> BigInt.toString (unwrap (valueToCoin value)) <> "\n" <> + pprintNonAdaAsset (getNonAdaAsset value) + -- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the -- | quantity of each token is equipartitioned across the resultant `Value`s, -- | with the goal that no token quantity in any of the resultant `Value`s diff --git a/src/Internal/Types/TokenName.purs b/src/Internal/Types/TokenName.purs index a68dfe869..1219262cc 100644 --- a/src/Internal/Types/TokenName.purs +++ b/src/Internal/Types/TokenName.purs @@ -6,6 +6,7 @@ module Ctl.Internal.Types.TokenName , mkTokenNames , tokenNameFromAssetName , assetNameName + , fromTokenName ) where import Prelude From 8dcc078515530e243f8f9b14e04a6054d5b1dcc1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Sep 2023 16:57:54 +0400 Subject: [PATCH 292/478] Better printing for Coin type --- src/Internal/BalanceTx/BalanceTx.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 538eb9265..8f0a7a82e 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -156,6 +156,7 @@ import Data.Array.NonEmpty import Data.Array.NonEmpty as NEA import Data.Bifunctor (lmap) import Data.BigInt (BigInt) +import Data.BigInt (toString) as BigInt import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) @@ -886,7 +887,7 @@ logTransactionWithChange message utxos mChangeOutputs tx = TagSet.fromArray $ [ "Input Value" `tag` pprintValue inputValue , "Mint Value" `tag` pprintValue (mintValue txBody) - , "Fees" `tag` show (txBody ^. _fee) + , "Fees" `tag` BigInt.toString (unwrap (txBody ^. _fee)) ] <> outputValuesTagSet mChangeOutputs in except (getInputValue utxos txBody) From f4067f3557c074da87f6ce173d1eee1f99f275af Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Sep 2023 18:47:22 +0400 Subject: [PATCH 293/478] Improve logging for UTxOs --- src/Internal/BalanceTx/BalanceTx.purs | 26 ++++++----- src/Internal/Cardano/Types/Transaction.purs | 52 ++++++++++++++++++--- src/Internal/Cardano/Types/Value.purs | 29 +++++++----- src/Internal/Types/PlutusData.purs | 29 +++++++++++- 4 files changed, 105 insertions(+), 31 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 8f0a7a82e..2de3a4340 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -6,10 +6,9 @@ module Ctl.Internal.BalanceTx import Prelude -import Contract.Log (logTrace') import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) -import Control.Monad.Logger.Class (trace) as Logger +import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) import Control.Parallel (parTraverse) import Ctl.Internal.BalanceTx.CoinSelection @@ -107,6 +106,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _referenceInputs , _withdrawals , _witnessSet + , pprintUtxoMap ) import Ctl.Internal.Cardano.Types.Value ( AssetClass @@ -162,7 +162,7 @@ import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) import Data.Lens.Getter ((^.)) import Data.Lens.Setter ((%~), (.~), (?~)) -import Data.Log.Tag (TagSet, tag) +import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) import Data.Map (empty, insert, lookup, toUnfoldable, union) as Map @@ -236,9 +236,10 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do utxos `Map.union` extraUtxos availableUtxos <- liftContract $ filterLockedUtxos allUtxos - logTrace' $ "balanceTxWithConstraints: all UTxOs: " <> show allUtxos - logTrace' $ "balanceTxWithConstraints: available UTxOs: " <> show - availableUtxos + + Logger.info (pprintUtxoMap allUtxos) "balanceTxWithConstraints: all UTxOs" + Logger.info (pprintUtxoMap availableUtxos) + "balanceTxWithConstraints: available UTxOs" selectionStrategy <- asksConstraints Constraints._selectionStrategy @@ -876,19 +877,20 @@ logTransactionWithChange message utxos mChangeOutputs tx = outputValuesTagSet :: Maybe (Array TransactionOutput) -> Array TagSet outputValuesTagSet Nothing = - [ "Output Value" `tag` pprintValue (outputValue txBody) ] + [ "Output Value" `tagSetTag` pprintValue (outputValue txBody) ] outputValuesTagSet (Just changeOutputs) = - [ "Output Value without change" `tag` pprintValue (outputValue txBody) - , "Change Value" `tag` pprintValue (foldMap getAmount changeOutputs) + [ "Output Value without change" `tagSetTag` pprintValue + (outputValue txBody) + , "Change Value" `tagSetTag` pprintValue (foldMap getAmount changeOutputs) ] transactionInfo :: Value -> TagSet transactionInfo inputValue = TagSet.fromArray $ - [ "Input Value" `tag` pprintValue inputValue - , "Mint Value" `tag` pprintValue (mintValue txBody) + [ "Input Value" `tagSetTag` pprintValue inputValue + , "Mint Value" `tagSetTag` pprintValue (mintValue txBody) , "Fees" `tag` BigInt.toString (unwrap (txBody ^. _fee)) ] <> outputValuesTagSet mChangeOutputs in except (getInputValue utxos txBody) - >>= (flip Logger.trace (message <> ":") <<< transactionInfo) + >>= (flip Logger.info (message <> ":") <<< transactionInfo) diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index d118568db..bbc87eee0 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -54,6 +54,7 @@ module Ctl.Internal.Cardano.Types.Transaction , UnitInterval , Update , UtxoMap + , pprintUtxoMap , Vkey(Vkey) , Vkeywitness(Vkeywitness) , _auxiliaryData @@ -100,7 +101,7 @@ import Control.Alternative ((<|>)) import Control.Apply (lift2) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Value (Coin, NonAdaAsset, Value) +import Ctl.Internal.Cardano.Types.Value (Coin, NonAdaAsset, Value, pprintValue) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.Keys ( ed25519SignatureFromBech32 @@ -113,6 +114,7 @@ import Ctl.Internal.Serialization.Address , NetworkId , Slot(Slot) , StakeCredential + , addressBech32 ) import Ctl.Internal.Serialization.Hash ( Ed25519KeyHash @@ -130,16 +132,18 @@ import Ctl.Internal.Serialization.Types (Ed25519Signature, PublicKey) as Seriali import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex) import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.OutputDatum (OutputDatum) -import Ctl.Internal.Types.PlutusData (PlutusData) +import Ctl.Internal.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + ) +import Ctl.Internal.Types.PlutusData (PlutusData, pprintPlutusData) import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, PubKeyHash(PubKeyHash)) import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RewardAddress (RewardAddress) import Ctl.Internal.Types.Scripts (Language, PlutusScript) -import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) import Data.Array (union) @@ -150,8 +154,11 @@ import Data.Lens (lens') import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Lens.Types (Lens') +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Map (Map) -import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Monoid (guard) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set (Set) @@ -160,8 +167,9 @@ import Data.Show.Generic (genericShow) import Data.String.Utils (startsWith) import Data.Symbol (SProxy(SProxy)) import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\)) +import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) +import Data.UInt as UInt import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- @@ -965,3 +973,33 @@ instance Show TransactionOutput where show = genericShow type UtxoMap = Map TransactionInput TransactionOutput + +pprintUtxoMap :: UtxoMap -> TagSet +pprintUtxoMap utxos = TagSet.fromArray $ + Map.toUnfoldable utxos <#> + \( TransactionInput { transactionId, index } /\ + TransactionOutput { address, amount, datum, scriptRef } + ) -> + let + datumTagSets = case datum of + NoOutputDatum -> [] + OutputDatumHash datumHash -> + [ TagSet.fromArray + [ "datum hash" `tag` byteArrayToHex (unwrap datumHash) ] + ] + OutputDatum plutusData -> + [ TagSet.fromArray + [ "datum" `tagSetTag` pprintPlutusData (unwrap plutusData) ] + ] + scriptRefTagSets = case scriptRef of + Nothing -> [] + Just ref -> [ "Script Reference" `tag` show ref ] + outputTagSet = + [ "amount" `tagSetTag` pprintValue amount + , "address" `tag` addressBech32 address + ] + <> datumTagSets + <> scriptRefTagSets + in + (byteArrayToHex (unwrap transactionId) <> "#" <> UInt.toString index) + `tagSetTag` TagSet.fromArray outputTagSet diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index dacabfca1..1143621e2 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -97,7 +97,7 @@ import Ctl.Internal.Types.TokenName , mkTokenName , mkTokenNames ) -import Data.Array (cons, filter, intercalate) +import Data.Array (cons, filter) import Data.Array (fromFoldable) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (replicate, singleton, zipWith) as NEArray @@ -114,6 +114,8 @@ import Data.Int (ceil) as Int import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) import Data.List (List(Nil), all, (:)) import Data.List (nubByEq) as List +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Map (Map, keys, lookup, toUnfoldable, unions, values) import Data.Map as Map import Data.Map.Gen (genMap) @@ -342,13 +344,13 @@ instance Equipartition NonAdaAsset where map (mkSingletonNonAdaAsset cs tn) (equipartition tokenQuantity numParts) -pprintNonAdaAsset :: NonAdaAsset -> String -pprintNonAdaAsset mp = intercalate "\n" $ +pprintNonAdaAsset :: NonAdaAsset -> TagSet +pprintNonAdaAsset mp = TagSet.fromArray $ Map.toUnfoldable (unwrapNonAdaAsset mp) <#> \(currency /\ tokens) -> - byteArrayToHex (getCurrencySymbol currency) <> ":\n" <> - ( intercalate "\n" $ Map.toUnfoldable tokens <#> \(tokenName /\ amount) -> - " " <> fromTokenName byteArrayToHex show tokenName <> ": " - <> BigInt.toString amount + byteArrayToHex (getCurrencySymbol currency) `tagSetTag` TagSet.fromArray + ( Map.toUnfoldable tokens <#> \(tokenName /\ amount) -> + fromTokenName byteArrayToHex show tokenName `tag` BigInt.toString + amount ) -- | Partitions a `NonAdaAsset` into smaller `NonAdaAsset`s, where the @@ -496,10 +498,15 @@ instance Equipartition Value where (equipartition coin numParts) (equipartition nonAdaAssets numParts) -pprintValue :: Value -> String -pprintValue value = - "ADA: " <> BigInt.toString (unwrap (valueToCoin value)) <> "\n" <> - pprintNonAdaAsset (getNonAdaAsset value) +pprintValue :: Value -> TagSet +pprintValue value = TagSet.fromArray $ + [ "ADA" `tag` BigInt.toString (unwrap (valueToCoin value)) ] + <> + if nonAdaAssets /= mempty then + [ "Assets" `tagSetTag` pprintNonAdaAsset nonAdaAssets ] + else [] + where + nonAdaAssets = getNonAdaAsset value -- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the -- | quantity of each token is equipartitioned across the resultant `Value`s, diff --git a/src/Internal/Types/PlutusData.purs b/src/Internal/Types/PlutusData.purs index f366f470b..6283b6b2f 100644 --- a/src/Internal/Types/PlutusData.purs +++ b/src/Internal/Types/PlutusData.purs @@ -6,6 +6,7 @@ module Ctl.Internal.Types.PlutusData , Integer , Bytes ) + , pprintPlutusData ) where import Prelude @@ -21,10 +22,14 @@ import Aeson ) import Control.Alt ((<|>)) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray, hexToByteArray) +import Ctl.Internal.Types.BigNum as BigNum +import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Data.BigInt (BigInt) +import Data.BigInt as BigInt import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Maybe (Maybe(Just, Nothing)) import Data.Show.Generic (genericShow) import Data.Traversable (for) @@ -104,3 +109,25 @@ instance EncodeAeson PlutusData where encodeAeson (List elems) = encodeAeson elems encodeAeson (Integer bi) = encodeAeson bi encodeAeson (Bytes ba) = encodeAeson ba + +pprintPlutusData :: PlutusData -> TagSet +pprintPlutusData (Constr n children) = TagSet.fromArray + [ ("Constr " <> BigInt.toString (BigNum.toBigInt n)) `tagSetTag` + TagSet.fromArray (pprintPlutusData <$> children) + ] +pprintPlutusData (Map entries) = TagSet.fromArray + [ tagSetTag "Map" $ TagSet.fromArray $ + entries <#> \(key /\ value) -> + TagSet.fromArray + [ "key" `tagSetTag` pprintPlutusData key + , "value" `tagSetTag` pprintPlutusData value + ] + ] +pprintPlutusData (List children) = TagSet.fromArray + [ tagSetTag "List" $ TagSet.fromArray $ + children <#> pprintPlutusData + ] +pprintPlutusData (Integer n) = TagSet.fromArray + [ "Integer" `tag` BigInt.toString n ] +pprintPlutusData (Bytes bytes) = TagSet.fromArray + [ "Bytes" `tag` byteArrayToHex bytes ] From b1edf1505506171419251dabfda8e8509c9177db Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Sep 2023 21:49:18 +0400 Subject: [PATCH 294/478] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..b0bd4a7d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,6 +91,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Do not require light wallet collateral for all interactions ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) +- UTxO lists and combined input/output/mint/fee values are now being pretty-printed instead of logged using `Show` instance (in the balancer) ([#1531](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1531)) ### Fixed @@ -107,6 +108,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add a single-slot wait at Plutip startup before attempting to query any wallet UTxOs ([#1470](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1470)) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) +- A problem with too many change UTxOs being generated ([#1530](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530)) ### Removed From 02614912298c2379e67028c0ca454fcb96aff383 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Sep 2023 21:52:16 +0400 Subject: [PATCH 295/478] Fix warnings --- test/Plutip/Contract.purs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 72519cc84..5a6f8583c 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -34,7 +34,6 @@ import Contract.PlutusData , getDatumByHash , getDatumsByHashes , getDatumsByHashesWithErrors - , unitDatum , unitRedeemer ) import Contract.Prelude (mconcat) @@ -71,8 +70,6 @@ import Contract.Transaction , TransactionHash(TransactionHash) , TransactionInput(TransactionInput) , TransactionOutput(TransactionOutput) - , _body - , _outputs , awaitTxConfirmed , balanceTx , balanceTxWithConstraints @@ -86,7 +83,6 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value @@ -159,12 +155,11 @@ import Ctl.Internal.Wallet.Cip30Mock ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi) , withCip30Mock ) -import Data.Array (head, replicate, (!!)) -import Data.Array as Array +import Data.Array (head, (!!)) import Data.BigInt as BigInt import Data.Either (Either(Left, Right), isLeft, isRight) import Data.Foldable (fold, foldM, length) -import Data.Lens (to, view, (^.)) +import Data.Lens (view) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, isJust) import Data.Newtype (unwrap, wrap) @@ -173,9 +168,8 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) -import Effect.Console as Console import Effect.Exception (throw) -import Mote (group, only, skip, test) +import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures From bb80b24b5d3e3bb8762a28de39b3b608bc62489e Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Thu, 21 Sep 2023 12:18:57 +0200 Subject: [PATCH 296/478] Upgrade to ogmios 6 --- flake.lock | 4593 +++++----------------------------------------------- flake.nix | 41 +- 2 files changed, 423 insertions(+), 4211 deletions(-) diff --git a/flake.lock b/flake.lock index c9f2e2140..de9755567 100644 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ "CHaP_3": { "flake": false, "locked": { - "lastModified": 1669917887, - "narHash": "sha256-9bsEaFh2lb26dZNUL+P4/LIzkTZH5NC7n9SprKzB/2A=", + "lastModified": 1695160702, + "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "85510200dd0dc758d72bc1ada11ff5855e5d46b7", + "rev": "9932690af3713ef034c928850252eb1b88450ee6", "type": "github" }, "original": { @@ -52,40 +52,6 @@ } }, "CHaP_4": { - "flake": false, - "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_5": { - "flake": false, - "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - } - }, - "CHaP_6": { "flake": false, "locked": { "lastModified": 1694601145, @@ -118,70 +84,6 @@ "type": "github" } }, - "HTTP_10": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_11": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_12": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_13": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -278,38 +180,6 @@ "type": "github" } }, - "HTTP_8": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_9": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "agenix": { "inputs": { "nixpkgs": "nixpkgs_9" @@ -898,51 +768,6 @@ "type": "github" } }, - "blank_6": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blank_7": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blank_8": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1029,31 +854,14 @@ "type": "github" } }, - "cabal-32_10": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", - "owner": "haskell", - "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-32_11": { + "cabal-32_2": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1063,7 +871,7 @@ "type": "github" } }, - "cabal-32_12": { + "cabal-32_3": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1080,7 +888,7 @@ "type": "github" } }, - "cabal-32_13": { + "cabal-32_4": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1097,7 +905,7 @@ "type": "github" } }, - "cabal-32_2": { + "cabal-32_5": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1114,7 +922,7 @@ "type": "github" } }, - "cabal-32_3": { + "cabal-32_6": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1131,7 +939,7 @@ "type": "github" } }, - "cabal-32_4": { + "cabal-32_7": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1148,92 +956,92 @@ "type": "github" } }, - "cabal-32_5": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_6": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_7": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_8": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_9": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-34": { + "cabal-34_6": { "flake": false, "locked": { "lastModified": 1645834128, @@ -1250,14 +1058,14 @@ "type": "github" } }, - "cabal-34_10": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1267,286 +1075,48 @@ "type": "github" } }, - "cabal-34_11": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_12": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_13": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_2": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_3": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_4": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_5": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_6": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_7": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_8": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_9": { - "flake": false, - "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_10": { - "flake": false, - "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_11": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_12": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_2": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_3": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1624,40 +1194,6 @@ "type": "github" } }, - "cabal-36_8": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_9": { - "flake": false, - "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, "capsules": { "inputs": { "bitte": "bitte_2", @@ -1749,27 +1285,11 @@ "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "type": "github" - } - }, - "cardano-configurations_3": { - "flake": false, - "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { @@ -1830,63 +1350,6 @@ "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_71" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_73" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_74" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, "cardano-node": { "inputs": { "CHaP": "CHaP_2", @@ -1933,201 +1396,24 @@ "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "membench": "membench_2", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_24" - }, - "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", - "type": "github" - } - }, "cardano-node_2": { "flake": false, "locked": { "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", - "type": "github" - } - }, - "cardano-node_3": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-workbench": [ - "ogmios", - "blank" - ], - "customConfig": "customConfig_4", - "flake-compat": "flake-compat_13", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nixTools": "nixTools", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_27" - }, - "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", - "type": "github" - } - }, - "cardano-shell": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_10": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_11": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_12": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_13": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_2": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "cardano-shell_3": { + "cardano-shell": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2143,7 +1429,7 @@ "type": "github" } }, - "cardano-shell_4": { + "cardano-shell_2": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2159,7 +1445,7 @@ "type": "github" } }, - "cardano-shell_5": { + "cardano-shell_3": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2175,7 +1461,7 @@ "type": "github" } }, - "cardano-shell_6": { + "cardano-shell_4": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2191,7 +1477,7 @@ "type": "github" } }, - "cardano-shell_7": { + "cardano-shell_5": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2207,7 +1493,7 @@ "type": "github" } }, - "cardano-shell_8": { + "cardano-shell_6": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2223,7 +1509,7 @@ "type": "github" } }, - "cardano-shell_9": { + "cardano-shell_7": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2393,66 +1679,6 @@ "type": "path" } }, - "customConfig_4": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_6": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_7": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, "data-merge": { "inputs": { "nixlib": "nixlib", @@ -2783,68 +2009,6 @@ "type": "github" } }, - "devshell_17": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_18": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "devshell_2": { "locked": { "lastModified": 1632436039, @@ -3074,68 +2238,6 @@ "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_5": { - "inputs": { - "nixlib": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, "driver": { "inputs": { "devshell": "devshell_9", @@ -3183,11 +2285,11 @@ "em": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", "owner": "deepfire", "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", "type": "github" }, "original": { @@ -3393,84 +2495,17 @@ "lastModified": 1649226351, "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_11": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_12": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-compat_13": { + "flake-compat": { "flake": false, "locked": { "lastModified": 1647532380, @@ -3487,30 +2522,31 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } }, - "flake-compat_15": { + "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -3519,30 +2555,31 @@ "type": "github" } }, - "flake-compat_16": { + "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } }, - "flake-compat_17": { + "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -3551,14 +2588,14 @@ "type": "github" } }, - "flake-compat_18": { + "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -3567,22 +2604,6 @@ "type": "github" } }, - "flake-compat_19": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_2": { "flake": false, "locked": { @@ -3600,38 +2621,6 @@ "type": "github" } }, - "flake-compat_20": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_21": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_3": { "flake": false, "locked": { @@ -4095,192 +3084,12 @@ } }, "flake-utils_3": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_30": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_31": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_32": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_33": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_34": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_35": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_36": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_37": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_38": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_39": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_40": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4289,13 +3098,13 @@ "type": "github" } }, - "flake-utils_41": { + "flake-utils_30": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -4304,13 +3113,13 @@ "type": "github" } }, - "flake-utils_42": { + "flake-utils_31": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -4319,13 +3128,13 @@ "type": "github" } }, - "flake-utils_43": { + "flake-utils_32": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4334,13 +3143,13 @@ "type": "github" } }, - "flake-utils_44": { + "flake-utils_33": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -4349,7 +3158,7 @@ "type": "github" } }, - "flake-utils_45": { + "flake-utils_4": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -4499,74 +3308,6 @@ "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_11": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_12": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_13": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, "ghc-8.6.5-iohk_2": { "flake": false, "locked": { @@ -4669,40 +3410,6 @@ "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_9": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, "ghc980": { "flake": false, "locked": { @@ -4745,162 +3452,28 @@ "nixpkgs": "nixpkgs_5", "utils": "utils" }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_76", - "utils": "utils_28" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_80", - "utils": "utils_29" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage-nix": { - "flake": false, - "locked": { - "lastModified": 1694737374, - "narHash": "sha256-JCnrqgKHhv5Jc7mu1TBAvQG483oHhKICdkb+2ywxwPE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e3b58bcdc9d0b67a9e9d475a939ec66556167642", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "hackage_3": { + "hackage": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { @@ -4909,14 +3482,14 @@ "type": "github" } }, - "hackage_4": { + "hackage-nix": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "lastModified": 1694737374, + "narHash": "sha256-JCnrqgKHhv5Jc7mu1TBAvQG483oHhKICdkb+2ywxwPE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "rev": "e3b58bcdc9d0b67a9e9d475a939ec66556167642", "type": "github" }, "original": { @@ -4925,14 +3498,14 @@ "type": "github" } }, - "hackage_5": { + "hackageNix": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { @@ -4941,14 +3514,14 @@ "type": "github" } }, - "hackage_6": { + "hackage_2": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { @@ -4957,14 +3530,14 @@ "type": "github" } }, - "hackage_7": { + "hackage_3": { "flake": false, "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { @@ -4973,14 +3546,14 @@ "type": "github" } }, - "hackage_8": { + "hackage_4": { "flake": false, "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { @@ -4989,14 +3562,14 @@ "type": "github" } }, - "hackage_9": { + "hackage_5": { "flake": false, "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { @@ -5199,88 +3772,6 @@ "type": "github" } }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_38", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_11", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "ogmios", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12", - "tullia": "tullia_3" - }, - "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_13", - "hydra": "hydra_12", - "nixpkgs": [ - "ogmios-nixos", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_13", - "tullia": "tullia_4" - }, - "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "haskellNix": { "inputs": { "HTTP": "HTTP", @@ -5405,334 +3896,75 @@ "type": "github" } }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-compat": "flake-compat_14", - "flake-utils": "flake-utils_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nixpkgs": [ - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_6", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_36", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_7", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_7": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cardano-shell": "cardano-shell_11", - "flake-utils": "flake-utils_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_11", - "nix-tools": "nix-tools_8", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "hls-1.10": { "flake": false, "locked": { "lastModified": 1680000865, "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_2": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_12": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_13": { + "hls-2.0": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_2": { + "hls-2.2": { "flake": false, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "hpc-coveralls_3": { + "hpc-coveralls": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5748,7 +3980,7 @@ "type": "github" } }, - "hpc-coveralls_4": { + "hpc-coveralls_2": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5764,7 +3996,7 @@ "type": "github" } }, - "hpc-coveralls_5": { + "hpc-coveralls_3": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5780,7 +4012,7 @@ "type": "github" } }, - "hpc-coveralls_6": { + "hpc-coveralls_4": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5796,7 +4028,7 @@ "type": "github" } }, - "hpc-coveralls_7": { + "hpc-coveralls_5": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5812,7 +4044,7 @@ "type": "github" } }, - "hpc-coveralls_8": { + "hpc-coveralls_6": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5828,7 +4060,7 @@ "type": "github" } }, - "hpc-coveralls_9": { + "hpc-coveralls_7": { "flake": false, "locked": { "lastModified": 1607498076, @@ -5868,79 +4100,6 @@ "type": "indirect" } }, - "hydra_10": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_11": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_12": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, "hydra_2": { "inputs": { "nix": [ @@ -6467,177 +4626,45 @@ "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - } - }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "ogmios", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_5": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", - "type": "github" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_4": { + "iohk-nix_3": { "inputs": { "nixpkgs": [ - "ogmios", - "cardano-node", + "kupo-nixos", + "haskell-nix", "nixpkgs" ] }, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" } }, - "iohkNix_5": { + "iohkNix": { "inputs": { + "blst": "blst", "nixpkgs": [ - "ogmios", "cardano-node", - "node-snapshot", "nixpkgs" - ] + ], + "secp256k1": "secp256k1", + "sodium": "sodium" }, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { @@ -6646,23 +4673,21 @@ "type": "github" } }, - "iohkNix_6": { + "iohkNix_2": { "inputs": { "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", + "db-sync", + "cardano-world", + "cardano-wallet", "nixpkgs" ] }, "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { @@ -6671,22 +4696,19 @@ "type": "github" } }, - "iohkNix_7": { + "iohkNix_3": { "inputs": { "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", + "db-sync", "nixpkgs" ] }, "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", "type": "github" }, "original": { @@ -6729,22 +4751,6 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_3": { - "flake": false, - "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" - }, - "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" - } - }, "kupo": { "flake": false, "locked": { @@ -6918,54 +4924,6 @@ "type": "github" } }, - "lowdown-src_17": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_18": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_19": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, "lowdown-src_2": { "flake": false, "locked": { @@ -7126,122 +5084,6 @@ "type": "github" } }, - "mdbook-kroki-preprocessor_3": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_4": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "membench": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" - }, - "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" - } - }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-measured": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, - "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "type": "github" - } - }, "n2c": { "inputs": { "flake-utils": [ @@ -7309,56 +5151,6 @@ "type": "github" } }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_41", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, "nix": { "inputs": { "lowdown-src": "lowdown-src", @@ -7397,133 +5189,57 @@ "cicero", "nixpkgs" ], - "utils": "utils_15" - }, - "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "type": "github" - } - }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": [ - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "utils": "utils_15" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", "type": "github" } }, - "nix-nomad_2": { + "nix-inclusive": { "inputs": { - "flake-compat": "flake-compat_17", - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "stdlib": "stdlib_12" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix-nomad_3": { + "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_20", + "flake-compat": "flake-compat_3", "flake-utils": [ - "ogmios-nixos", - "haskell-nix", + "cardano-node", "tullia", "nix2container", "flake-utils" ], - "gomod2nix": "gomod2nix_3", + "gomod2nix": "gomod2nix", "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", + "cardano-node", "tullia", "nixpkgs" ], "nixpkgs-lib": [ - "ogmios-nixos", - "haskell-nix", + "cardano-node", "tullia", "nixpkgs" ] @@ -7622,65 +5338,17 @@ "type": "github" } }, - "nix-tools_6": { - "flake": false, - "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_7": { - "flake": false, - "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_8": { - "flake": false, - "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nix2container": { "inputs": { "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1688922987, + "narHash": "sha256-RnQwrCD5anqWfyDAVbfFIeU+Ha6cwt5QcIwIkaGRzQw=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "ab381a7d714ebf96a83882264245dbd34f0a7ec8", "type": "github" }, "original": { @@ -7728,60 +5396,6 @@ "type": "github" } }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_77" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_81" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nixTools": { - "flake": false, - "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", @@ -7926,69 +5540,6 @@ "type": "github" } }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_72", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_16" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_79", - "nixpkgs-regression": "nixpkgs-regression_17" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", @@ -8256,98 +5807,22 @@ "db-sync", "cardano-world", "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" + "flake-utils" ], + "nixago-exts": "nixago-exts_2", "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", + "db-sync", + "cardano-world", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", "owner": "nix-community", "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { @@ -8433,70 +5908,6 @@ "type": "github" } }, - "nixpkgs-2003_10": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_11": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_12": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_13": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -8593,205 +6004,13 @@ "type": "github" } }, - "nixpkgs-2003_8": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_9": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_10": { - "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { - "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_2": { - "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_3": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_4": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_5": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_6": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_7": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -8801,13 +6020,13 @@ "type": "github" } }, - "nixpkgs-2105_8": { + "nixpkgs-2105_2": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -8817,13 +6036,13 @@ "type": "github" } }, - "nixpkgs-2105_9": { + "nixpkgs-2105_3": { "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -8833,71 +6052,71 @@ "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_10": { + "nixpkgs-2105_5": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_11": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_12": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_13": { + "nixpkgs-2111": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -9009,38 +6228,6 @@ "type": "github" } }, - "nixpkgs-2111_8": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_9": { - "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2205": { "locked": { "lastModified": 1682600000, @@ -9089,54 +6276,6 @@ "type": "github" } }, - "nixpkgs-2205_4": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_6": { - "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2211": { "locked": { "lastModified": 1682682915, @@ -9169,22 +6308,6 @@ "type": "github" } }, - "nixpkgs-2211_3": { - "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2305": { "locked": { "lastModified": 1690680713, @@ -9309,51 +6432,6 @@ "type": "indirect" } }, - "nixpkgs-regression_15": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_17": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, "nixpkgs-regression_2": { "locked": { "lastModified": 1643052045, @@ -9409,174 +6487,78 @@ "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_6": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_7": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_8": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_9": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_10": { - "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_11": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_12": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_13": { + "nixpkgs-regression_8": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_14": { + "nixpkgs-regression_9": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_15": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { @@ -10215,11 +7197,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1677612629, + "narHash": "sha256-yC+9LfhfwOd5sXFW8TLnDmqVMNYiHXYPGy9BbdpRqfU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "111ca8e0378e88d9decaa1c6dd7597f35d8bc67f", "type": "github" }, "original": { @@ -10753,140 +7735,6 @@ "type": "indirect" } }, - "nixpkgs_71": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_72": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_73": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_74": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_75": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_76": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_77": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_78": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_79": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, "nixpkgs_8": { "locked": { "lastModified": 1665087388, @@ -10902,113 +7750,19 @@ "repo": "nixpkgs", "type": "github" } - }, - "nixpkgs_80": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_81": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_82": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "node-process": { - "flake": false, - "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "type": "github" - } - }, - "node-snapshot": { - "inputs": { - "customConfig": "customConfig_5", - "haskellNix": "haskellNix_5", - "iohkNix": "iohkNix_5", - "membench": "membench", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example", - "utils": "utils_26" - }, + }, + "nixpkgs_9": { "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nomad": { @@ -11216,62 +7970,55 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_5", - "blank": "blank_7", - "cardano-configurations": "cardano-configurations_3", + "CHaP": "CHaP_3", + "blank": "blank_5", + "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_18", - "haskell-nix": "haskell-nix_6", - "iohk-nix": "iohk-nix_5", + "flake-compat": "flake-compat_13", + "haskell-nix": [ + "haskell-nix" + ], + "iohk-nix": [ + "iohk-nix" + ], "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" + ], + "ogmios-src": [ + "ogmios" ] }, "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", + "lastModified": 1695289922, + "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" }, "original": { "owner": "mlabs-haskell", - "repo": "ogmios", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" } }, "ogmios_2": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_5", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node_3", - "flake-compat": "flake-compat_15", - "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_4", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "nixpkgs-unstable" - ] - }, + "flake": false, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", - "owner": "mlabs-haskell", + "lastModified": 1691769233, + "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", + "owner": "CardanoSolutions", "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", "type": "github" }, "original": { - "owner": "mlabs-haskell", + "owner": "CardanoSolutions", + "ref": "v6.0.0", "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", "type": "github" } }, @@ -11292,74 +8039,6 @@ "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_11": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_12": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_13": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -11462,48 +8141,14 @@ "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_9": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "ops-lib": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "lastModified": 1695172761, + "narHash": "sha256-n10icfGCYA/PTzZhZrC12i8ZQCEOplD15iTHsbbkX9E=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "rev": "4a8752ac856e0b0052ea49c8cfc38f9f425c79bf", "type": "github" }, "original": { @@ -11560,45 +8205,13 @@ "type": "github" } }, - "ouroboros-network": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_2": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, "plutip": { "inputs": { - "CHaP": "CHaP_6", + "CHaP": "CHaP_4", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_21", + "flake-compat": "flake-compat_14", "hackage-nix": [ "hackage-nix" ], @@ -11627,52 +8240,6 @@ "type": "github" } }, - "plutus-apps": { - "flake": false, - "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, - "plutus-example": { - "inputs": { - "customConfig": "customConfig_7", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", - "nixpkgs": [ - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_25" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - } - }, "poetry2nix": { "inputs": { "flake-utils": "flake-utils_17", @@ -12128,129 +8695,65 @@ "type": "github" } }, - "secp256k1_2": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "sodium": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_2": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_10": { + "secp256k1_2": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_11": { + "sodium": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_12": { + "sodium_2": { "flake": false, "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_13": { + "stackage": { "flake": false, "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -12355,38 +8858,6 @@ "type": "github" } }, - "stackage_8": { - "flake": false, - "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_9": { - "flake": false, - "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, "std": { "inputs": { "arion": [ @@ -12500,86 +8971,6 @@ "type": "github" } }, - "std_5": { - "inputs": { - "blank": "blank_6", - "devshell": "devshell_17", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_40", - "makes": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_78", - "yants": "yants_7" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_6": { - "inputs": { - "blank": "blank_8", - "devshell": "devshell_18", - "dmerge": "dmerge_5", - "flake-utils": "flake-utils_44", - "makes": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", - "microvm": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_5", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_82", - "yants": "yants_8" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, "stdlib": { "locked": { "lastModified": 1590026685, @@ -12950,56 +9341,6 @@ "type": "github" } }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_4", - "nixpkgs": [ - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std_5" - }, - "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_4": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_5", - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_6" - }, - "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, "utils": { "locked": { "lastModified": 1653893745, @@ -13240,96 +9581,6 @@ "type": "github" } }, - "utils_24": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_25": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_26": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_27": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_28": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_29": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_3": { "locked": { "lastModified": 1637014545, @@ -13598,54 +9849,6 @@ "repo": "yants", "type": "github" } - }, - "yants_7": { - "inputs": { - "nixpkgs": [ - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_8": { - "inputs": { - "nixpkgs": [ - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ed984c96f..4c872a1a2 100644 --- a/flake.nix +++ b/flake.nix @@ -34,20 +34,33 @@ flake = false; }; - ogmios.url = "github:mlabs-haskell/ogmios/a7687bc03b446bc74564abe1873fbabfa1aac196"; - kupo-nixos.url = "github:mlabs-haskell/kupo-nixos/6f89cbcc359893a2aea14dd380f9a45e04c6aa67"; - kupo-nixos.inputs.kupo.follows = "kupo"; + cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; - kupo = { - url = "github:CardanoSolutions/kupo/v2.2.0"; + ogmios-nixos = { + url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; + inputs = { + nixpkgs.follows = "nixpkgs"; + iohk-nix.follows = "iohk-nix"; + haskell-nix.follows = "haskell-nix"; + hackage-nix.follows = "hackage-nix"; + cardano-node.follows = "cardano-node"; + ogmios-src.follows = "ogmios"; + }; + }; + + ogmios = { + url = "github:CardanoSolutions/ogmios/v6.0.0"; flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; - # ogmios nixos module (remove and replace with the above after merging and updating) - ogmios-nixos = { - url = "github:mlabs-haskell/ogmios"; - inputs.cardano-node.follows = "cardano-node"; + kupo-nixos = { + url = "github:mlabs-haskell/kupo-nixos/6f89cbcc359893a2aea14dd380f9a45e04c6aa67"; + inputs.kupo.follows = "kupo"; + }; + + kupo = { + url = "github:CardanoSolutions/kupo/v2.2.0"; + flake = false; }; # Repository with network parameters @@ -286,7 +299,7 @@ { plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; - ogmios = ogmios.packages.${system}."ogmios:exe:ogmios"; + ogmios = ogmios-nixos.packages.${system}."ogmios:exe:ogmios"; kupo = inputs.kupo-nixos.packages.${system}.kupo; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; @@ -483,11 +496,7 @@ system = "x86_64-linux"; modules = [ inputs.cardano-node.nixosModules.cardano-node - inputs.ogmios-nixos.nixosModules.ogmios - { - services.ogmios.package = - inputs.ogmios.packages.x86_64-linux."ogmios:exe:ogmios"; - } + inputs.ogmios.nixosModules.ogmios inputs.kupo-nixos.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; From 6d40c3c0d2c8e9409c34511f4ea603d65bfa5682 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 21 Sep 2023 19:49:24 +0400 Subject: [PATCH 297/478] Add note on script exporter in the docs --- doc/importing-scripts.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/importing-scripts.md b/doc/importing-scripts.md index 041e076d5..139fb3952 100644 --- a/doc/importing-scripts.md +++ b/doc/importing-scripts.md @@ -4,6 +4,7 @@ +- [Exporting scripts from Plutus](#exporting-scripts-from-plutus) - [Importing serialized scripts](#importing-serialized-scripts) - [Serializing Plutus scripts](#serializing-plutus-scripts) - [PlutusTx](#plutustx) @@ -11,6 +12,11 @@ - [plutarch-ctl-bridge](#plutarch-ctl-bridge) + +## Exporting scripts from Plutus + +See [the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold)'s [exporter](https://github.com/mlabs-haskell/the-plutus-scaffold/tree/main/onchain/exporter) for a pipeline example. + ## Importing serialized scripts To use your own scripts, compile them to any subdirectory in the root of your project (where `webpack.config.js` is located) and add a relative path to `webpack.config.js` under the `resolve.alias` section. In CTL, we have the `Scripts` alias for this purpose. Note the capitalization of `Scripts`: it is necessary to disambiguate it from local folders. From 134488ce331a869c7992adcdf81e5c79b6c12bbc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 21 Sep 2023 21:02:39 +0400 Subject: [PATCH 298/478] Remove walletSpec from ContractEnv --- src/Internal/Contract/Monad.purs | 2 -- src/Internal/Plutip/Server.purs | 1 - 2 files changed, 3 deletions(-) diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 6b5fa0851..f3a0234b4 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -190,7 +190,6 @@ type ContractEnv = , handle :: QueryHandle , networkId :: NetworkId , logLevel :: LogLevel - , walletSpec :: Maybe WalletSpec , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) , suppressLogs :: Boolean , hooks :: Hooks @@ -260,7 +259,6 @@ mkContractEnv params = do constants = { networkId: params.networkId , logLevel: params.logLevel - , walletSpec: params.walletSpec , customLogger: params.customLogger , suppressLogs: params.suppressLogs , hooks: params.hooks diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4b2e52c3d..de55034dc 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -624,7 +624,6 @@ mkClusterContractEnv plutipCfg logger customLogger = do , handle: mkQueryHandle plutipCfg backend , networkId: MainnetId , logLevel: plutipCfg.logLevel - , walletSpec: Nothing , customLogger: customLogger , suppressLogs: plutipCfg.suppressLogs , hooks: emptyHooks From 0fd1270bc21d5276f2d2b9d94de820e7c8c80af9 Mon Sep 17 00:00:00 2001 From: Szabo Gergely Date: Thu, 21 Sep 2023 20:01:49 +0200 Subject: [PATCH 299/478] Partially updating ogmios client after breaking changes on v6 --- .../UtxoQueryResponse.medea | 30 +-- .../UtxoQueryResponse.json | 8 +- src/Internal/Address.purs | 6 +- src/Internal/QueryM.purs | 26 +- src/Internal/QueryM/Dispatcher.purs | 4 +- src/Internal/QueryM/JsonRpc2.purs | 124 +++++++++ src/Internal/QueryM/JsonWsp.purs | 139 ---------- src/Internal/QueryM/Ogmios.purs | 252 ++++++++---------- src/Internal/QueryM/Pools.purs | 2 +- src/Internal/TxOutput.purs | 2 +- test/Ogmios/GenerateFixtures.purs | 45 ++-- test/Parser.purs | 14 +- 12 files changed, 306 insertions(+), 346 deletions(-) rename fixtures/schemata/{JsonWsp => JsonRpc2}/UtxoQueryResponse.medea (73%) rename fixtures/test/parsing/{JsonWsp => JsonRpc2}/UtxoQueryResponse.json (77%) create mode 100644 src/Internal/QueryM/JsonRpc2.purs delete mode 100644 src/Internal/QueryM/JsonWsp.purs diff --git a/fixtures/schemata/JsonWsp/UtxoQueryResponse.medea b/fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea similarity index 73% rename from fixtures/schemata/JsonWsp/UtxoQueryResponse.medea rename to fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea index a5af178af..9e55c1a1c 100644 --- a/fixtures/schemata/JsonWsp/UtxoQueryResponse.medea +++ b/fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea @@ -2,42 +2,26 @@ $schema $start $type $object $properties - $property-name "type" - $property-schema jsonWspType - $property-name "version" - $property-schema versionType - $property-name "servicename" - $property-schema serviceType - $property-name "methodname" + $property-name "jsonrpc" + $property-schema jsonRpcType + $property-name "method" $property-schema methodType $property-name "result" $property-schema result - $property-name "reflection" + $property-name "id" $property-schema mirrorType -$schema jsonWspType +$schema jsonRpcType $type $string $string-values - "jsonwsp/response" - -$schema versionType - $type - $string - $string-values - "1.0" - -$schema serviceType - $type - $string - $string-values - "ogmios" + "2.0" $schema methodType $type $string $string-values - "Query" + "queryLedgerState/utxo" $schema mirrorType $type diff --git a/fixtures/test/parsing/JsonWsp/UtxoQueryResponse.json b/fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json similarity index 77% rename from fixtures/test/parsing/JsonWsp/UtxoQueryResponse.json rename to fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json index c8e52beee..6442f327f 100644 --- a/fixtures/test/parsing/JsonWsp/UtxoQueryResponse.json +++ b/fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json @@ -1,9 +1,7 @@ [ { - "type": "jsonwsp/response", - "version": "1.0", - "servicename": "ogmios", - "methodname": "Query", + "jsonrpc": "2.0", + "method": "queryLedgerState/utxo", "result": [ [ { @@ -19,6 +17,6 @@ } ] ], - "reflection": "Hello123" + "id": "Hello123" } ] diff --git a/src/Internal/Address.purs b/src/Internal/Address.purs index fd09718a4..746c8b23f 100644 --- a/src/Internal/Address.purs +++ b/src/Internal/Address.purs @@ -32,12 +32,12 @@ import Data.Maybe (Maybe) -------------------------------------------------------------------------------- -- Conversion between various address types -------------------------------------------------------------------------------- --- JsonWsp.Address is a bech32 string, so wrap to Transaction.Types.Bech32 --- | Converts an `JsonWsp.Address` (bech32string) to internal `Address` +-- JsonRpc2.Address is a bech32 string, so wrap to Transaction.Types.Bech32 +-- | Converts an `JsonRpc2.Address` (bech32string) to internal `Address` ogmiosAddressToAddress :: Ogmios.OgmiosAddress -> Maybe Address ogmiosAddressToAddress = addressFromBech32 --- | Converts an (internal) `Address` to `JsonWsp.Address` (bech32string) +-- | Converts an (internal) `Address` to `JsonRpc2.Address` (bech32string) addressToOgmiosAddress :: Address -> Ogmios.OgmiosAddress addressToOgmiosAddress = addressBech32 diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index f5ef2c1b8..12f9d7cdd 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -119,7 +119,7 @@ import Ctl.Internal.QueryM.Dispatcher , newDispatcher , newPendingRequests ) -import Ctl.Internal.QueryM.JsonWsp as JsonWsp +import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , DelegationsAndRewardsR @@ -301,8 +301,8 @@ getChainTip = ogmiosChainTipToTip <$> mkOgmiosRequest Ogmios.queryChainTipCall ogmiosChainTipToTip :: Ogmios.ChainTipQR -> Chain.Tip ogmiosChainTipToTip = case _ of Ogmios.CtChainOrigin _ -> Chain.TipAtGenesis - Ogmios.CtChainPoint { slot, hash } -> Chain.Tip $ wrap - { slot, blockHeaderHash: wrap $ unwrap hash } + Ogmios.CtChainPoint { slot, id } -> Chain.Tip $ wrap + { slot, blockHeaderHash: wrap $ unwrap id } -------------------------------------------------------------------------------- -- Ogmios Local Tx Submission Protocol @@ -806,21 +806,21 @@ mkSubmitTxListenerSet dispatcher pendingRequests = -- | Builds an Ogmios request action using `QueryM` mkOgmiosRequest :: forall (request :: Type) (response :: Type) - . JsonWsp.JsonWspCall request response + . JsonRpc2.JsonRpc2Call request response -> (OgmiosListeners -> ListenerSet request response) -> request -> QueryM response -mkOgmiosRequest jsonWspCall getLs inp = do +mkOgmiosRequest jsonRpc2Call getLs inp = do listeners' <- asks $ listeners <<< _.ogmiosWs <<< _.runtime websocket <- asks $ underlyingWebSocket <<< _.ogmiosWs <<< _.runtime - mkRequest listeners' websocket jsonWspCall getLs inp + mkRequest listeners' websocket jsonRpc2Call getLs inp -- | Builds an Ogmios request action using `Aff` mkOgmiosRequestAff :: forall (request :: Type) (response :: Type) . OgmiosWebSocket -> Logger - -> JsonWsp.JsonWspCall request response + -> JsonRpc2.JsonRpc2Call request response -> (OgmiosListeners -> ListenerSet request response) -> request -> Aff response @@ -832,13 +832,13 @@ mkRequest :: forall (request :: Type) (response :: Type) (listeners :: Type) . listeners -> JsWebSocket - -> JsonWsp.JsonWspCall request response + -> JsonRpc2.JsonRpc2Call request response -> (listeners -> ListenerSet request response) -> request -> QueryM response -mkRequest listeners' ws jsonWspCall getLs inp = do +mkRequest listeners' ws jsonRpc2Call getLs inp = do logger <- getLogger - liftAff $ mkRequestAff listeners' ws logger jsonWspCall getLs inp + liftAff $ mkRequestAff listeners' ws logger jsonRpc2Call getLs inp getLogger :: QueryM Logger getLogger = do @@ -851,13 +851,13 @@ mkRequestAff . listeners -> JsWebSocket -> Logger - -> JsonWsp.JsonWspCall request response + -> JsonRpc2.JsonRpc2Call request response -> (listeners -> ListenerSet request response) -> request -> Aff response -mkRequestAff listeners' webSocket logger jsonWspCall getLs input = do +mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do { body, id } <- - liftEffect $ JsonWsp.buildRequest jsonWspCall input + liftEffect $ JsonRpc2.buildRequest jsonRpc2Call input let respLs :: ListenerSet request response respLs = getLs listeners' diff --git a/src/Internal/QueryM/Dispatcher.purs b/src/Internal/QueryM/Dispatcher.purs index a81e7a755..9f93c1a88 100644 --- a/src/Internal/QueryM/Dispatcher.purs +++ b/src/Internal/QueryM/Dispatcher.purs @@ -15,7 +15,7 @@ module Ctl.Internal.QueryM.Dispatcher import Prelude import Aeson (Aeson, JsonDecodeError, stringifyAeson) -import Ctl.Internal.QueryM.JsonWsp (parseJsonWspResponseId) +import Ctl.Internal.QueryM.JsonRpc2 (parseJsonRpc2ResponseId) import Ctl.Internal.QueryM.Ogmios (TxHash) import Ctl.Internal.QueryM.UniqueId (ListenerId) import Data.Either (Either(Left, Right)) @@ -64,7 +64,7 @@ newDispatcher = Ref.new Map.empty mkWebsocketDispatch :: Dispatcher -> WebsocketDispatch mkWebsocketDispatch dispatcher aeson = do - case parseJsonWspResponseId aeson of + case parseJsonRpc2ResponseId aeson of Left parseError -> pure $ Left $ JsonError parseError Right reflection -> do diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs new file mode 100644 index 000000000..7cc03725b --- /dev/null +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -0,0 +1,124 @@ +-- | Provides basics types and operations for working with JSON RPC protocol +-- | used by Ogmios +module Ctl.Internal.QueryM.JsonRpc2 + ( JsonRpc2Request + , JsonRpc2Response + , JsonRpc2Call + , mkCallType + , buildRequest + , parseJsonRpc2Response + , parseJsonRpc2ResponseId + ) where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError(TypeMismatch) + , caseAesonObject + , encodeAeson + , getField + , getFieldOptional + ) +import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) +import Data.Either (Either(Left)) +import Data.Maybe (Maybe) +import Effect (Effect) +import Foreign.Object (Object) +import Record as Record + +-- | Structure of all json rpc2.0 websocket requests +-- described in: https://ogmios.dev/getting-started/basics/ +type JsonRpc2Request (a :: Type) = + { jsonrpc :: String + , method :: String + , params :: a + , id :: ListenerId + } + +-- | Convenience helper function for creating `JsonRpc2Request a` objects +mkJsonRpc2Request + :: forall (a :: Type) + . { jsonrpc :: String } + -> { method :: String + , params :: a + } + -> Effect (JsonRpc2Request a) +mkJsonRpc2Request service method = do + id <- uniqueId $ method.method <> "-" + pure + $ Record.merge { id } + $ Record.merge service method + +-- | Structure of all json wsp websocket responses +-- described in: https://ogmios.dev/getting-started/basics/ +type JsonRpc2Response (a :: Type) = + { jsonrpc :: String + -- methodname is not always present if `error` is not empty + , method :: Maybe String + , result :: Maybe a + , error :: Maybe Aeson + , id :: ListenerId + } + +-- | A wrapper for tying arguments and response types to request building. +newtype JsonRpc2Call :: Type -> Type -> Type +newtype JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call + (i -> Effect { body :: Aeson, id :: String }) + +-- | Creates a "jsonwsp call" which ties together request input and response output types +-- | along with a way to create a request object. +mkCallType + :: forall (a :: Type) (i :: Type) (o :: Type) + . EncodeAeson (JsonRpc2Request a) + => { jsonrpc :: String } + -> { method :: String, params :: i -> a } + -> JsonRpc2Call i o +mkCallType service { method, params } = JsonRpc2Call $ \i -> do + req <- mkJsonRpc2Request service { method, params: params i } + pure { body: encodeAeson req, id: req.id } + +-- | Create a JsonRpc2 request body and id +buildRequest + :: forall (i :: Type) (o :: Type) + . JsonRpc2Call i o + -> i + -> Effect { body :: Aeson, id :: String } +buildRequest (JsonRpc2Call c) = c + +-- | Polymorphic response parser +parseJsonRpc2Response + :: forall (a :: Type) + . DecodeAeson a + => Aeson + -> Either JsonDecodeError (JsonRpc2Response a) +parseJsonRpc2Response = aesonObject $ \o -> do + jsonrpc <- getField o "jsonrpc" + method <- getFieldOptional o "method" + result <- getFieldOptional o "result" + error <- getFieldOptional o "error" + id <- getField o "id" + pure + { jsonrpc + , method + , result + , error + , id + } + +-- | Parse just ID from the response +parseJsonRpc2ResponseId + :: Aeson + -> Either JsonDecodeError ListenerId +parseJsonRpc2ResponseId = + aesonObject $ flip getField "id" + +-- | Helper for assuming we get an object +aesonObject + :: forall (a :: Type) + . (Object Aeson -> Either JsonDecodeError a) + -> Aeson + -> Either JsonDecodeError a +aesonObject = caseAesonObject (Left (TypeMismatch "expected object")) diff --git a/src/Internal/QueryM/JsonWsp.purs b/src/Internal/QueryM/JsonWsp.purs deleted file mode 100644 index 5426eb3bb..000000000 --- a/src/Internal/QueryM/JsonWsp.purs +++ /dev/null @@ -1,139 +0,0 @@ --- | Provides basics types and operations for working with JSON RPC protocol --- | used by Ogmios -module Ctl.Internal.QueryM.JsonWsp - ( JsonWspRequest - , JsonWspResponse - , JsonWspCall - , mkCallType - , buildRequest - , parseJsonWspResponse - , parseJsonWspResponseId - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , encodeAeson - , getField - , getFieldOptional - ) -import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) -import Data.Either (Either(Left)) -import Data.Maybe (Maybe) -import Effect (Effect) -import Foreign.Object (Object) -import Record as Record - --- | Structure of all json wsp websocket requests --- described in: https://ogmios.dev/getting-started/basics/ -type JsonWspRequest (a :: Type) = - { type :: String - , version :: String - , servicename :: String - , methodname :: String - , args :: a - , mirror :: ListenerId - } - --- | Convenience helper function for creating `JsonWspRequest a` objects -mkJsonWspRequest - :: forall (a :: Type) - . { type :: String - , version :: String - , servicename :: String - } - -> { methodname :: String - , args :: a - } - -> Effect (JsonWspRequest a) -mkJsonWspRequest service method = do - id <- uniqueId $ method.methodname <> "-" - pure - $ Record.merge { mirror: id } - $ - Record.merge service method - --- | Structure of all json wsp websocket responses --- described in: https://ogmios.dev/getting-started/basics/ -type JsonWspResponse (a :: Type) = - { type :: String - , version :: String - , servicename :: String - -- methodname is not always present if `fault` is not empty - , methodname :: Maybe String - , result :: Maybe a - , fault :: Maybe Aeson - , reflection :: ListenerId - } - --- | A wrapper for tying arguments and response types to request building. -newtype JsonWspCall :: Type -> Type -> Type -newtype JsonWspCall (i :: Type) (o :: Type) = JsonWspCall - (i -> Effect { body :: Aeson, id :: String }) - --- | Creates a "jsonwsp call" which ties together request input and response output types --- | along with a way to create a request object. -mkCallType - :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonWspRequest a) - => { type :: String - , version :: String - , servicename :: String - } - -> { methodname :: String, args :: i -> a } - -> JsonWspCall i o -mkCallType service { methodname, args } = JsonWspCall $ \i -> do - req <- mkJsonWspRequest service { methodname, args: args i } - pure { body: encodeAeson req, id: req.mirror } - --- | Create a JsonWsp request body and id -buildRequest - :: forall (i :: Type) (o :: Type) - . JsonWspCall i o - -> i - -> Effect { body :: Aeson, id :: String } -buildRequest (JsonWspCall c) = c - --- | Polymorphic response parser -parseJsonWspResponse - :: forall (a :: Type) - . DecodeAeson a - => Aeson - -> Either JsonDecodeError (JsonWspResponse a) -parseJsonWspResponse = aesonObject $ \o -> do - typeField <- getField o "type" - version <- getField o "version" - servicename <- getField o "servicename" - methodname <- getFieldOptional o "methodname" - result <- getFieldOptional o "result" - fault <- getFieldOptional o "fault" - reflection <- getField o "reflection" - pure - { "type": typeField - , version - , servicename - , methodname - , result - , fault - , reflection - } - --- | Parse just ID from the response -parseJsonWspResponseId - :: Aeson - -> Either JsonDecodeError ListenerId -parseJsonWspResponseId = - aesonObject $ flip getField "reflection" - --- | Helper for assuming we get an object -aesonObject - :: forall (a :: Type) - . (Object Aeson -> Either JsonDecodeError a) - -> Aeson - -> Either JsonDecodeError a -aesonObject = caseAesonObject (Left (TypeMismatch "expected object")) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 89e4f338c..da61e0a14 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -49,11 +49,12 @@ module Ctl.Internal.QueryM.Ogmios , aesonArray , aesonObject , evaluateTxCall - , queryPoolIdsCall + , queryStakePoolsCall , mempoolSnapshotHasTxCall , mempoolSnapshotNextTxCall , mempoolSnpashotSizeAndCapacityCall , mkOgmiosCallType + , mkOgmiosCallTypeNoArgs , queryChainTipCall , queryCurrentEpochCall , queryEraSummariesCall @@ -108,7 +109,8 @@ import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls(Costmdls) + ( CostModel(CostModel) + , Costmdls(Costmdls) , ExUnitPrices , ExUnits , Ipv4(Ipv4) @@ -137,7 +139,7 @@ import Ctl.Internal.Cardano.Types.Value ) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) -import Ctl.Internal.QueryM.JsonWsp (JsonWspCall, JsonWspRequest, mkCallType) +import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, mkCallType) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ed25519KeyHashFromBytes) import Ctl.Internal.Types.BigNum (BigNum) @@ -155,6 +157,7 @@ import Ctl.Internal.Types.EraSummaries , EraSummary(EraSummary) , EraSummaryParameters(EraSummaryParameters) ) +import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromString) as Natural import Ctl.Internal.Types.ProtocolParameters @@ -224,56 +227,39 @@ import Untagged.Union (type (|+|), toEither1) -------------------------------------------------------------------------------- -- | Queries Ogmios for the system start Datetime -querySystemStartCall :: JsonWspCall Unit OgmiosSystemStart -querySystemStartCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "systemStart" } - } +querySystemStartCall :: JsonRpc2Call Unit OgmiosSystemStart +querySystemStartCall = mkOgmiosCallTypeNoArgs "queryNetwork/startTime" -- | Queries Ogmios for the current epoch -queryCurrentEpochCall :: JsonWspCall Unit CurrentEpoch -queryCurrentEpochCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "currentEpoch" } - } +queryCurrentEpochCall :: JsonRpc2Call Unit CurrentEpoch +queryCurrentEpochCall = mkOgmiosCallTypeNoArgs "queryLedgerState/epoch" -- | Queries Ogmios for an array of era summaries, used for Slot arithmetic. -queryEraSummariesCall :: JsonWspCall Unit OgmiosEraSummaries -queryEraSummariesCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "eraSummaries" } - } +queryEraSummariesCall :: JsonRpc2Call Unit OgmiosEraSummaries +queryEraSummariesCall = mkOgmiosCallTypeNoArgs "queryLedgerState/eraSummaries" -- | Queries Ogmios for the current protocol parameters -queryProtocolParametersCall :: JsonWspCall Unit OgmiosProtocolParameters -queryProtocolParametersCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "currentProtocolParameters" } - } +queryProtocolParametersCall :: JsonRpc2Call Unit OgmiosProtocolParameters +queryProtocolParametersCall = mkOgmiosCallTypeNoArgs + "queryLedgerState/protocolParameters" -- | Queries Ogmios for the chain’s current tip. -queryChainTipCall :: JsonWspCall Unit ChainTipQR -queryChainTipCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "chainTip" } - } +queryChainTipCall :: JsonRpc2Call Unit ChainTipQR +queryChainTipCall = mkOgmiosCallTypeNoArgs "queryNetwork/tip" -queryPoolIdsCall :: JsonWspCall Unit PoolIdsR -queryPoolIdsCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query: "poolIds" } - } +queryStakePoolsCall :: JsonRpc2Call Unit PoolIdsR +queryStakePoolsCall = mkOgmiosCallTypeNoArgs "queryLedgerState/stakePools" -queryPoolParameters :: JsonWspCall (Array PoolPubKeyHash) PoolParametersR +queryPoolParameters :: JsonRpc2Call (Array PoolPubKeyHash) PoolParametersR queryPoolParameters = mkOgmiosCallType - { methodname: "Query" - , args: \params -> { query: { poolParameters: params } } + { method: "Query" + , params: \params -> { query: { poolParameters: params } } } -queryDelegationsAndRewards :: JsonWspCall (Array String) DelegationsAndRewardsR +queryDelegationsAndRewards :: JsonRpc2Call (Array String) DelegationsAndRewardsR queryDelegationsAndRewards = mkOgmiosCallType - { methodname: "Query" - , args: \skhs -> + { method: "rewardAccountSummaries" + , params: \skhs -> { query: { delegationsAndRewards: skhs } @@ -289,20 +275,22 @@ type OgmiosAddress = String -- | Sends a serialized signed transaction with its full witness through the -- | Cardano network via Ogmios. -submitTxCall :: JsonWspCall (TxHash /\ CborBytes) SubmitTxR +submitTxCall :: JsonRpc2Call (TxHash /\ CborBytes) SubmitTxR submitTxCall = mkOgmiosCallType - { methodname: "SubmitTx" - , args: { submit: _ } <<< cborBytesToHex <<< snd + { method: "submitTransaction" + , params: \(_ /\ cbor) -> + { transaction: { cbor: cborBytesToHex cbor } + } } -- | Evaluates the execution units of scripts present in a given transaction, -- | without actually submitting the transaction. -evaluateTxCall :: JsonWspCall (CborBytes /\ AdditionalUtxoSet) TxEvaluationR +evaluateTxCall :: JsonRpc2Call (CborBytes /\ AdditionalUtxoSet) TxEvaluationR evaluateTxCall = mkOgmiosCallType - { methodname: "EvaluateTx" - , args: \(cbor /\ utxoqr) -> - { evaluate: cborBytesToHex cbor - , additionalUtxoSet: utxoqr + { method: "evaluateTransaction" + , params: \(cbor /\ utxoqr) -> + { transaction: { cbor: cborBytesToHex cbor } + , additionalUtxo: utxoqr } } @@ -311,33 +299,33 @@ evaluateTxCall = mkOgmiosCallType -- https://ogmios.dev/mini-protocols/local-tx-monitor/ -------------------------------------------------------------------------------- -acquireMempoolSnapshotCall :: JsonWspCall Unit MempoolSnapshotAcquired +acquireMempoolSnapshotCall :: JsonRpc2Call Unit MempoolSnapshotAcquired acquireMempoolSnapshotCall = - mkOgmiosCallTypeNoArgs "AwaitAcquire" + mkOgmiosCallTypeNoArgs "acquireMempool" mempoolSnapshotHasTxCall - :: MempoolSnapshotAcquired -> JsonWspCall TxHash Boolean + :: MempoolSnapshotAcquired -> JsonRpc2Call TxHash Boolean mempoolSnapshotHasTxCall _ = mkOgmiosCallType - { methodname: "HasTx" - , args: { id: _ } + { method: "hasTransacation" + , params: { id: _ } } mempoolSnapshotNextTxCall - :: MempoolSnapshotAcquired -> JsonWspCall Unit (Maybe MempoolTransaction) + :: MempoolSnapshotAcquired -> JsonRpc2Call Unit (Maybe MempoolTransaction) mempoolSnapshotNextTxCall _ = mkOgmiosCallType - { methodname: "NextTx" - , args: const { fields: "all" } + { method: "nextTransaction" + , params: const { fields: "all" } } mempoolSnpashotSizeAndCapacityCall - :: MempoolSnapshotAcquired -> JsonWspCall Unit MempoolSizeAndCapacity + :: MempoolSnapshotAcquired -> JsonRpc2Call Unit MempoolSizeAndCapacity mempoolSnpashotSizeAndCapacityCall _ = - mkOgmiosCallTypeNoArgs "SizeAndCapacity" + mkOgmiosCallTypeNoArgs "sizeOfMempool" releaseMempoolCall - :: MempoolSnapshotAcquired -> JsonWspCall Unit String + :: MempoolSnapshotAcquired -> JsonRpc2Call Unit String releaseMempoolCall _ = - mkOgmiosCallTypeNoArgs "ReleaseMempool" + mkOgmiosCallTypeNoArgs "releaseMempool" -------------------------------------------------------------------------------- -- Local Tx Monitor Query Response & Parsing @@ -397,22 +385,17 @@ instance DecodeAeson MempoolTransaction where -------------------------------------------------------------------------------- mkOgmiosCallTypeNoArgs - :: forall (o :: Type). String -> JsonWspCall Unit o -mkOgmiosCallTypeNoArgs methodname = - mkOgmiosCallType { methodname, args: const {} } + :: forall (o :: Type). String -> JsonRpc2Call Unit o +mkOgmiosCallTypeNoArgs method = + mkOgmiosCallType { method, params: const {} } mkOgmiosCallType :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonWspRequest a) - => { methodname :: String, args :: i -> a } - -> JsonWspCall i o + . EncodeAeson (JsonRpc2Request a) + => { method :: String, params :: i -> a } + -> JsonRpc2Call i o mkOgmiosCallType = - ( mkCallType - { "type": "jsonwsp/request" - , version: "1.0" - , servicename: "ogmios" - } - ) + mkCallType { jsonrpc: "2.0" } ---------------- TX SUBMISSION QUERY RESPONSE & PARSING @@ -430,7 +413,7 @@ type TxHash = ByteArray instance DecodeAeson SubmitTxR where decodeAeson = aesonObject $ \o -> - ( getField o "SubmitSuccess" >>= flip getField "txId" >>= hexToByteArray + ( getField o "transaction" >>= flip getField "id" >>= hexToByteArray >>> maybe (Left (TypeMismatch "Expected hexstring")) (pure <<< SubmitTxSuccess) ) <|> (SubmitFail <$> getField o "SubmitFail") @@ -496,7 +479,8 @@ instance DecodeAeson OgmiosEraSummaries where :: Object Aeson -> Either JsonDecodeError EraSummaryParameters decodeEraSummaryParameters o = do epochLength <- getField o "epochLength" - slotLength <- wrap <$> ((*) slotLengthFactor <$> getField o "slotLength") + slotLength <- wrap <$> ((*) slotLengthFactor <$> + (flip getField "seconds" =<< getField o "slotLength")) safeZone <- fromMaybe zero <$> getField o "safeZone" pure $ wrap { epochLength, slotLength, safeZone } @@ -712,21 +696,18 @@ instance Show TxEvaluationResult where show = genericShow instance DecodeAeson TxEvaluationResult where - decodeAeson = aesonObject $ \obj -> do - rdmrPtrExUnitsList :: Array (String /\ Aeson) <- - ForeignObject.toUnfoldable <$> getField obj "EvaluationResult" + decodeAeson = aesonArray $ \array -> do TxEvaluationResult <<< Map.fromFoldable <$> - traverse decodeRdmrPtrExUnitsItem rdmrPtrExUnitsList + traverse decodeRdmrPtrExUnitsItem array where - decodeRdmrPtrExUnitsItem - :: String /\ Aeson - -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) - decodeRdmrPtrExUnitsItem (redeemerPtrRaw /\ exUnitsAeson) = do + decodeRdmrPtrExUnitsItem :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) + decodeRdmrPtrExUnitsItem elem = do + (redeemerPtrRaw /\ exUnitsAeson) :: String /\ Aeson <- decodeAeson elem redeemerPtr <- decodeRedeemerPointer redeemerPtrRaw flip aesonObject exUnitsAeson $ \exUnitsObj -> do memory <- getField exUnitsObj "memory" - steps <- getField exUnitsObj "steps" - pure $ redeemerPtr /\ { memory, steps } + cpu <- getField exUnitsObj "cpu" + pure $ redeemerPtr /\ { memory, steps: cpu } redeemerPtrTypeMismatch :: JsonDecodeError redeemerPtrTypeMismatch = TypeMismatch @@ -903,41 +884,48 @@ rationalToSubcoin (PParamRational rat) = do -- | A type that corresponds to Ogmios response. type ProtocolParametersRaw = { "minFeeCoefficient" :: UInt - , "minFeeConstant" :: UInt - , "maxBlockBodySize" :: UInt - , "maxBlockHeaderSize" :: UInt - , "maxTxSize" :: UInt - , "stakeKeyDeposit" :: BigInt - , "poolDeposit" :: BigInt - , "poolRetirementEpochBound" :: BigInt - , "desiredNumberOfPools" :: UInt - , "poolInfluence" :: PParamRational + , "minFeeConstant" :: + { "lovelace" :: UInt } + , "minUtxoDepositCoefficient" :: BigInt + , "maxBlockBodySize" :: + { "bytes" :: UInt } + , "maxBlockHeaderSize" :: + { "bytes" :: UInt } + , "maxTransactionSize" :: + { "bytes" :: UInt } + , "maxValueSize" :: + { "bytes" :: UInt } + , "stakeCredentialDeposit" :: + { "lovelace" :: BigInt } + , "stakePoolDeposit" :: + { "lovelace" :: BigInt } + , "stakePoolRetirementEpochBound" :: BigInt + , "desiredNumberOfStakePools" :: UInt + , "stakePoolPledgeInfluence" :: PParamRational , "monetaryExpansion" :: PParamRational , "treasuryExpansion" :: PParamRational - , "protocolVersion" :: + , "version" :: { "major" :: UInt , "minor" :: UInt } - , "minPoolCost" :: BigInt - , "coinsPerUtxoByte" :: Maybe BigInt - , "coinsPerUtxoWord" :: Maybe BigInt - , "costModels" :: - { "plutus:v1" :: { | CostModelV1 } - , "plutus:v2" :: Maybe { | CostModelV2 } + , "minStakePoolCost" :: + { "lovelace" :: BigInt } + , "plutusCostModels" :: + { "plutus:v1" :: Array Csl.Int + , "plutus:v2" :: Maybe (Array Csl.Int) } - , "prices" :: + , "scriptExecutionPrices" :: { "memory" :: PParamRational - , "steps" :: PParamRational + , "cpu" :: PParamRational } , "maxExecutionUnitsPerTransaction" :: { "memory" :: BigInt - , "steps" :: BigInt + , "cpu" :: BigInt } , "maxExecutionUnitsPerBlock" :: { "memory" :: BigInt - , "steps" :: BigInt + , "cpu" :: BigInt } - , "maxValueSize" :: UInt , "collateralPercentage" :: UInt , "maxCollateralInputs" :: UInt } @@ -955,54 +943,50 @@ instance DecodeAeson OgmiosProtocolParameters where decodeAeson aeson = do ps :: ProtocolParametersRaw <- decodeAeson aeson prices <- decodePrices ps - coinsPerUtxoUnit <- - maybe - (Left $ AtKey "coinsPerUtxoByte or coinsPerUtxoWord" $ MissingValue) - pure - $ (CoinsPerUtxoByte <<< Coin <$> ps.coinsPerUtxoByte) <|> - (CoinsPerUtxoWord <<< Coin <$> ps.coinsPerUtxoWord) pure $ OgmiosProtocolParameters $ ProtocolParameters - { protocolVersion: ps.protocolVersion.major /\ ps.protocolVersion.minor + { protocolVersion: ps.version.major /\ ps.version.minor -- The following two parameters were removed from Babbage , decentralization: zero , extraPraosEntropy: Nothing - , maxBlockHeaderSize: ps.maxBlockHeaderSize - , maxBlockBodySize: ps.maxBlockBodySize - , maxTxSize: ps.maxTxSize - , txFeeFixed: ps.minFeeConstant + , maxBlockHeaderSize: ps.maxBlockHeaderSize.bytes + , maxBlockBodySize: ps.maxBlockBodySize.bytes + , maxTxSize: ps.maxTransactionSize.bytes + , txFeeFixed: ps.minFeeConstant.lovelace , txFeePerByte: ps.minFeeCoefficient - , stakeAddressDeposit: Coin ps.stakeKeyDeposit - , stakePoolDeposit: Coin ps.poolDeposit - , minPoolCost: Coin ps.minPoolCost - , poolRetireMaxEpoch: Epoch ps.poolRetirementEpochBound - , stakePoolTargetNum: ps.desiredNumberOfPools - , poolPledgeInfluence: unwrap ps.poolInfluence + , stakeAddressDeposit: Coin ps.stakeCredentialDeposit.lovelace + , stakePoolDeposit: Coin ps.stakePoolDeposit.lovelace + , minPoolCost: Coin ps.minStakePoolCost.lovelace + , poolRetireMaxEpoch: Epoch ps.stakePoolRetirementEpochBound + , stakePoolTargetNum: ps.desiredNumberOfStakePools + , poolPledgeInfluence: unwrap ps.stakePoolPledgeInfluence , monetaryExpansion: unwrap ps.monetaryExpansion , treasuryCut: unwrap ps.treasuryExpansion -- Rational - , coinsPerUtxoUnit: coinsPerUtxoUnit + , coinsPerUtxoUnit: CoinsPerUtxoByte (Coin ps.minUtxoDepositCoefficient) , costModels: Costmdls $ Map.fromFoldable $ catMaybes [ pure - (PlutusV1 /\ convertPlutusV1CostModel ps.costModels."plutus:v1") - , (PlutusV2 /\ _) <<< convertPlutusV2CostModel <$> - ps.costModels."plutus:v2" + ( PlutusV1 /\ CostModel + ps.plutusCostModels."plutus:v1" + ) + , (PlutusV2 /\ _) <<< CostModel <$> + ps.plutusCostModels."plutus:v2" ] , prices: prices , maxTxExUnits: decodeExUnits ps.maxExecutionUnitsPerTransaction , maxBlockExUnits: decodeExUnits ps.maxExecutionUnitsPerBlock - , maxValueSize: ps.maxValueSize + , maxValueSize: ps.maxValueSize.bytes , collateralPercent: ps.collateralPercentage , maxCollateralInputs: ps.maxCollateralInputs } where decodeExUnits - :: { memory :: BigInt, steps :: BigInt } -> ExUnits - decodeExUnits { memory, steps } = { mem: memory, steps } + :: { memory :: BigInt, cpu :: BigInt } -> ExUnits + decodeExUnits { memory, cpu } = { mem: memory, steps: cpu } decodePrices :: ProtocolParametersRaw -> Either JsonDecodeError ExUnitPrices decodePrices ps = note (TypeMismatch "ExUnitPrices") do - memPrice <- rationalToSubcoin ps.prices.memory - stepPrice <- rationalToSubcoin ps.prices.steps + memPrice <- rationalToSubcoin ps.scriptExecutionPrices.memory + stepPrice <- rationalToSubcoin ps.scriptExecutionPrices.cpu pure { memPrice, stepPrice } -- ExUnits ---------------- CHAIN TIP QUERY RESPONSE & PARSING @@ -1049,7 +1033,7 @@ instance Show ChainOrigin where type ChainPoint = { slot :: Slot -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/632 -- for details on why we lose a negligible amount of precision. - , hash :: OgmiosBlockHeaderHash + , id :: OgmiosBlockHeaderHash } ---------------- POOL ID RESPONSE @@ -1131,7 +1115,7 @@ instance EncodeAeson AdditionalUtxoSet where ---------------- UTXO QUERY RESPONSE & PARSING -- the outer result type for Utxo queries, newtyped so that it can have --- appropriate instances to work with `parseJsonWspResponse` +-- appropriate instances to work with `parseJsonRpc2Response` -- | Ogmios response for Utxo Query newtype UtxoQR = UtxoQR UtxoQueryResult @@ -1306,10 +1290,10 @@ newtype Assets = Assets (Map CurrencySymbol (Map TokenName BigInt)) instance DecodeAeson Assets where decodeAeson j = do - wspAssets :: Array (String /\ BigInt) <- + jsonRpc2Assets :: Array (String /\ BigInt) <- ForeignObject.toUnfoldable <$> decodeAeson j Assets <<< Map.fromFoldableWith (Map.unionWith (+)) <$> sequence - (uncurry decodeAsset <$> wspAssets) + (uncurry decodeAsset <$> jsonRpc2Assets) where decodeAsset :: String diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 93b2a2d1c..b8b398976 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -38,7 +38,7 @@ import Effect.Exception (error) import Record.Builder (build, merge) getPoolIds :: QueryM (Array PoolPubKeyHash) -getPoolIds = mkOgmiosRequest Ogmios.queryPoolIdsCall +getPoolIds = mkOgmiosRequest Ogmios.queryStakePoolsCall _.poolIds unit diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 57fd70be3..8bbbb1020 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -58,7 +58,7 @@ transactionInputToTxOutRef , index } --- https://ogmios.dev/ogmios.wsp.json see "datum", potential FIX ME: it says +-- https://ogmios.dev/ogmios.json see "datum", potential FIX ME: it says -- base64 but the example provided looks like a hexadecimal so use -- hexToByteArray for now. https://github.com/Plutonomicon/cardano-transaction-lib/issues/78 -- | Converts an Ogmios transaction output to (internal) `TransactionOutput` diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index 3b06818f6..d9da357fc 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -26,12 +26,14 @@ import Ctl.Internal.QueryM , mkRequestAff , mkWebsocketDispatch ) -import Ctl.Internal.QueryM.JsonWsp (JsonWspCall) -import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallType) +import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call) +import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallType, mkOgmiosCallTypeNoArgs) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) import Data.Map as Map +import Data.String.Common (replace) +import Data.String.Pattern (Pattern(Pattern), Replacement(Replacement)) import Data.Traversable (for_, traverse_) import Effect (Effect) import Effect.Aff (Aff, Canceler(Canceler), launchAff_, makeAff) @@ -87,18 +89,23 @@ mkWebSocketAff mkWebSocketAff lvl = makeAff <<< map (map (Canceler <<< map liftEffect)) <<< mkWebSocket lvl -data Query = Query (JsonWspCall Unit Aeson) String +data Query = Query (JsonRpc2Call Unit Aeson) String -mkQuery :: forall (query :: Type). EncodeAeson query => query -> String -> Query -mkQuery query shown = Query queryCall shown +mkQuery + :: forall (params :: Type). EncodeAeson params => params -> String -> Query +mkQuery params method = Query queryCall (sanitiseMethod method) where queryCall = mkOgmiosCallType - { methodname: "Query" - , args: const { query } + { method + , params: const { params } } mkQuery' :: String -> Query -mkQuery' query = mkQuery query query +mkQuery' method = Query (mkOgmiosCallTypeNoArgs method) (sanitiseMethod method) + +-- | To avoid creating directories, replace slashes with dashes +sanitiseMethod :: String -> String +sanitiseMethod = replace (Pattern "/") (Replacement "-") main :: Effect Unit main = @@ -121,17 +128,19 @@ main = ] let queries = - [ mkQuery' "currentProtocolParameters" - , mkQuery' "eraSummaries" - , mkQuery' "currentEpoch" - , mkQuery' "systemStart" - , mkQuery' "chainTip" - ] <> flip map addresses \addr -> mkQuery { utxo: [ addr ] } "utxo" - resps <- flip parTraverse queries \(Query qc shown) -> do + [ mkQuery' "queryLedgerState/protocolParameters" + , mkQuery' "queryLedgerState/eraSummaries" + , mkQuery' "queryLedgerState/epoch" + , mkQuery' "queryNetwork/systemStart" + , mkQuery' "queryNetwork/tip" + ] <> flip map addresses \addr -> mkQuery { utxo: [ addr ] } + "queryLedgerStat/utxo" + + resps <- flip parTraverse queries \(Query qc method) -> do resp <- mkRequestAff listeners ws (\_ _ -> pure unit) qc identity unit - pure { resp, query: shown } + pure { resp, method } - for_ resps \{ resp, query } -> do + for_ resps \{ resp, method } -> do let resp' = stringifyAeson resp respMd5 <- liftEffect $ md5HashHex resp' let @@ -139,7 +148,7 @@ main = [ "fixtures" , "test" , "ogmios" - , query <> "-" <> respMd5 <> ".json" + , method <> "-" <> respMd5 <> ".json" ] writeTextFile UTF8 fp resp' log ("Written " <> fp) diff --git a/test/Parser.purs b/test/Parser.purs index 934ea1a1a..a78f1f043 100644 --- a/test/Parser.purs +++ b/test/Parser.purs @@ -12,7 +12,7 @@ import Aeson import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (ExceptT, runExceptT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.QueryM.JsonWsp (JsonWspResponse, parseJsonWspResponse) +import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Response, parseJsonRpc2Response) import Ctl.Internal.QueryM.Ogmios (UtxoQR) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.Array as Array @@ -33,7 +33,7 @@ import Test.Spec.Assertions (shouldNotSatisfy, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do str <- lift $ readTextFile UTF8 - "./fixtures/test/parsing/JsonWsp/UtxoQueryResponse.json" + "./fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json" let eJson = parseJsonStringToAeson str json <- either @@ -44,7 +44,7 @@ suite = do stringArray = caseAesonArray [] convertJsonArray json :: Array String jsonStrArray = caseAesonArray [] identity json :: Array Aeson schema <- lift $ getSchema - "./fixtures/schemata/JsonWsp/UtxoQueryResponse.medea" + "./fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea" group "Parser tests" $ do group "Schemata parse tests" $ do test "fixture array should not be empty" $ @@ -55,11 +55,11 @@ suite = do isRight group "Type parsing" $ do test "fixtures parse correctly - UtxoQueryResponse" $ - traverseJsonWsps jsonStrArray `shouldSatisfy` isRight + traverseJsonRpc2s jsonStrArray `shouldSatisfy` isRight -traverseJsonWsps - :: Array Aeson -> Either JsonDecodeError (Array (JsonWspResponse UtxoQR)) -traverseJsonWsps arr = traverse parseJsonWspResponse arr +traverseJsonRpc2s + :: Array Aeson -> Either JsonDecodeError (Array (JsonRpc2Response UtxoQR)) +traverseJsonRpc2s arr = traverse parseJsonRpc2Response arr convertJsonArray :: Array Aeson -> Array String convertJsonArray arr = map stringifyAeson arr From 0a755590bc90e9564eceecc72049f85c832f4592 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 22 Sep 2023 16:29:18 +0400 Subject: [PATCH 300/478] Remove Typed Scripts & Constraints interface --- examples/AlwaysMints.purs | 4 +- examples/AlwaysSucceeds.purs | 10 +- examples/BalanceTxConstraints.purs | 4 +- examples/ContractTestUtils.purs | 4 +- examples/DropTokens.purs | 4 +- examples/ECDSA.purs | 8 +- examples/ExUnits.purs | 11 +- examples/Helpers.purs | 6 +- examples/IncludeDatum.purs | 8 +- examples/KeyWallet/MintsAndSendsToken.purs | 4 +- examples/KeyWallet/Pkh2Pkh.purs | 4 +- examples/KeyWallet/SignMultiple.purs | 4 +- examples/Lose7Ada.purs | 10 +- examples/ManyAssets.purs | 4 +- examples/MintsMultipleTokens.purs | 4 +- examples/MultipleRedeemers.purs | 12 +- examples/NativeScriptMints.purs | 8 +- examples/OneShotMinting.purs | 4 +- examples/PaysWithDatum.purs | 4 +- examples/Pkh2Pkh.purs | 4 +- examples/PlutusV2/InlineDatum.purs | 12 +- examples/PlutusV2/ReferenceInputs.purs | 4 +- .../PlutusV2/ReferenceInputsAndScripts.purs | 18 +- examples/PlutusV2/ReferenceScripts.purs | 10 +- examples/SatisfiesAnyOf.purs | 4 +- examples/Schnorr.purs | 8 +- examples/SendsToken.purs | 8 +- examples/SignMultiple.purs | 8 +- examples/TxChaining.purs | 7 +- examples/Utxos.purs | 6 +- src/Contract/Address.purs | 30 +- src/Contract/ScriptLookups.purs | 32 +- src/Contract/Scripts.purs | 13 - src/Contract/Transaction.purs | 20 +- src/Contract/TxConstraints.purs | 1 - src/Contract/UnbalancedTx.purs | 30 +- src/Internal/ProcessConstraints.purs | 221 ++++--------- src/Internal/ProcessConstraints/Error.purs | 4 - src/Internal/ProcessConstraints/State.purs | 32 +- src/Internal/Scripts.purs | 18 -- src/Internal/Test/KeyDir.purs | 7 +- src/Internal/Test/UtxoDistribution.purs | 6 +- src/Internal/Types/ScriptLookups.purs | 81 ++--- src/Internal/Types/TxConstraints.purs | 217 ++++++------- src/Internal/Types/TypedTxOut.purs | 293 ------------------ src/Internal/Types/TypedValidator.purs | 185 ----------- test/BalanceTx/Time.purs | 2 +- .../GenerateFixtures/NativeScript.purs | 8 +- .../GenerateFixtures/ScriptInfo.purs | 4 +- test/MustSpendTotal.purs | 10 +- test/Plutip/Contract.purs | 94 +++--- test/Plutip/Staking.purs | 40 +-- test/Utils/DrainWallets.purs | 5 +- 53 files changed, 384 insertions(+), 1175 deletions(-) delete mode 100644 src/Internal/Types/TypedTxOut.purs delete mode 100644 src/Internal/Types/TypedValidator.purs diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index cbb1dece4..6d92b069b 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -40,12 +40,12 @@ contract = do mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy tn <- Helpers.mkTokenName "TheToken" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txId <- submitTxFromConstraints lookups constraints diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index a0e137e11..820c32b6c 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -18,7 +18,7 @@ import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (PlutusData, unitDatum, unitRedeemer) +import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) @@ -63,7 +63,7 @@ payToAlwaysSucceeds vhash = do -- Send to own stake credential. This is used to test mustPayToScriptAddress. mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = case mbStakeKeyHash of Nothing -> @@ -79,7 +79,7 @@ payToAlwaysSucceeds vhash = do $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -107,11 +107,11 @@ spendFromAlwaysSucceeds vhash validator txId = do ) (view _input <$> head (lookupTxHash txId utxos)) let - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs utxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutput txInput unitRedeemer spendTxId <- submitTxFromConstraints lookups constraints diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index e8532c83b..8a90da6cb 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -139,12 +139,12 @@ contract (ContractParams p) = do mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy tn <- Helpers.mkTokenName "The Token" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue (Value.singleton cs tn $ fromInt 11) <> foldMap Constraints.mustBeSignedBy [ alicePubKeyHash, bobPubKeyHash ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 4b514e2df..e6353fe05 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -144,7 +144,7 @@ mkContract p = do nonAdaValue :: Value nonAdaValue = uncurry3 Value.singleton p.tokensToMint - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Helpers.mustPayToPubKeyStakeAddress p.receiverPkh p.receiverSkh adaValue @@ -156,7 +156,7 @@ mkContract p = do nonAdaValue ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy p.mintingPolicy unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs index 4cdaf29c3..6ef12aeee 100644 --- a/examples/DropTokens.purs +++ b/examples/DropTokens.purs @@ -43,10 +43,10 @@ contract = do fold $ halfArray (flattenNonAdaAssets tokenValue) <#> \(cs /\ tn /\ n) -> singleton cs tn n - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Helpers.mustPayToPubKey nullPaymentPubKeyHash tokenValueHalf - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints >>= awaitTxConfirmed diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 91fc5953a..199330605 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -65,10 +65,10 @@ prepTest = do val = Value.lovelaceValueOf one - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToScript valHash unitDatum Constraints.DatumInline val @@ -99,12 +99,12 @@ testVerification txId ecdsaRed = do $ Map.keys scriptUtxos let - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs (Map.filterKeys ((unwrap >>> _.transactionId >>> eq txId)) scriptUtxos) - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustSpendScriptOutput txIn red txId' <- submitTxFromConstraints lookups constraints logInfo' $ "Submitted ECDSA test verification tx: " <> show txId' diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 14fce6c05..ef8f16944 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -8,8 +8,7 @@ import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData - ( PlutusData - , Redeemer(Redeemer) + ( Redeemer(Redeemer) , toData , unitDatum ) @@ -62,7 +61,7 @@ payToExUnits vhash = do -- Send to own stake credential. This is used to test mustPayToScriptAddress. mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = case mbStakeKeyHash of Nothing -> @@ -78,7 +77,7 @@ payToExUnits vhash = do $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -108,11 +107,11 @@ spendFromExUnits iters vhash validator txId = do ) (view _input <$> head (lookupTxHash txId utxos)) let - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs utxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutput txInput (Redeemer $ toData iters) diff --git a/examples/Helpers.purs b/examples/Helpers.purs index 461903a66..9b719b000 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -44,7 +44,7 @@ mustPayToPubKeyStakeAddress . PaymentPubKeyHash -> Maybe StakePubKeyHash -> Value - -> Constraints.TxConstraints i o + -> Constraints.TxConstraints mustPayToPubKeyStakeAddress pkh Nothing = Constraints.mustPayToPubKey pkh mustPayToPubKeyStakeAddress pkh (Just skh) = @@ -57,7 +57,7 @@ mustPayToPubKeyStakeAddressWithDatum -> Datum -> DatumPresence -> Value - -> Constraints.TxConstraints i o + -> Constraints.TxConstraints mustPayToPubKeyStakeAddressWithDatum pkh Nothing datum dtp = Constraints.mustPayToPubKeyWithDatum pkh datum dtp mustPayToPubKeyStakeAddressWithDatum pkh (Just skh) datum dtp = @@ -69,7 +69,7 @@ mustPayToPubKeyStakeAddressWithScriptRef -> Maybe StakePubKeyHash -> ScriptRef -> Value - -> Constraints.TxConstraints i o + -> Constraints.TxConstraints mustPayToPubKeyStakeAddressWithScriptRef pkh Nothing scriptRef = Constraints.mustPayToPubKeyWithScriptRef pkh scriptRef mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) scriptRef = diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 5e38ad374..ec899bd76 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -58,7 +58,7 @@ datum = Datum $ Integer $ BigInt.fromInt 42 payToIncludeDatum :: ValidatorHash -> Contract TransactionHash payToIncludeDatum vhash = let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = ( Constraints.mustPayToScript vhash datum Constraints.DatumWitness $ Value.lovelaceValueOf @@ -66,7 +66,7 @@ payToIncludeDatum vhash = ) <> Constraints.mustIncludeDatum datum - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty in submitTxFromConstraints lookups constraints @@ -82,11 +82,11 @@ spendFromIncludeDatum vhash validator txId = do txInput <- liftContractM "no locked output at address" (view _input <$> head (lookupTxHash txId utxos)) let - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs utxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutput txInput unitRedeemer <> Constraints.mustIncludeDatum datum diff --git a/examples/KeyWallet/MintsAndSendsToken.purs b/examples/KeyWallet/MintsAndSendsToken.purs index 1bcf557cd..c71a6ca6e 100644 --- a/examples/KeyWallet/MintsAndSendsToken.purs +++ b/examples/KeyWallet/MintsAndSendsToken.purs @@ -26,14 +26,14 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do tn <- Helpers.mkTokenName "TheToken" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValue (Value.singleton cs tn one) , Constraints.mustPayToPubKey pkh (Value.lovelaceValueOf lovelace <> Value.singleton cs tn one) ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txId <- submitTxFromConstraints lookups constraints diff --git a/examples/KeyWallet/Pkh2Pkh.purs b/examples/KeyWallet/Pkh2Pkh.purs index 1b6fabfae..e3808d28f 100644 --- a/examples/KeyWallet/Pkh2Pkh.purs +++ b/examples/KeyWallet/Pkh2Pkh.purs @@ -18,11 +18,11 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do logInfo' "Running Examples.KeyWallet.Pkh2Pkh" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKey pkh $ Value.lovelaceValueOf lovelace - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty txId <- submitTxFromConstraints lookups constraints diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 0713da495..6d186f24f 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -34,11 +34,11 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do logInfo' "Running Examples.KeyWallet.SignMultiple" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKey pkh $ Value.lovelaceValueOf lovelace - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index b2e959125..19bc8b1eb 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -17,7 +17,7 @@ import Contract.Address (scriptHashAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (PlutusData, unitDatum, unitRedeemer) +import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) import Contract.TextEnvelope @@ -61,14 +61,14 @@ example cfg = launchAff_ do payToAlwaysFails :: ValidatorHash -> Contract TransactionHash payToAlwaysFails vhash = do let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -92,11 +92,11 @@ spendFromAlwaysFails vhash validator txId = do ) (fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) let - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs utxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutput txInput unitRedeemer <> Constraints.mustNotBeValid diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index 95ff52724..70a6bccf4 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -52,13 +52,13 @@ mkContractWithAssertions exampleName = do tns <- for (Array.range 0 600) \i -> Helpers.mkTokenName $ "CTLNFT" <> show i let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = fold (tns <#> \tn -> Constraints.mustMintValue (Value.singleton cs tn one)) <> Constraints.mustSpendPubKeyOutput oref - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp <> Lookups.unspentOutputs utxos diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index bb57734c2..ae7c981af 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -46,7 +46,7 @@ contract = do mp3 /\ cs3 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt3 let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValueWithRedeemer (Redeemer $ Integer (BigInt.fromInt 1)) @@ -59,7 +59,7 @@ contract = do (Value.singleton cs3 tn1 one <> Value.singleton cs3 tn2 one) ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp1 <> Lookups.mintingPolicy mp2 diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index 6ed5c9d0f..dbd732d09 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -59,10 +59,10 @@ contract = do lcs <- sequence $ spendLockedByIntOutputParams <$> [ (validator1 /\ 1), (validator2 /\ 2) ] - let lookups = (mconcat $ snd <$> lcs) :: Lookups.ScriptLookups Void + let lookups = (mconcat $ snd <$> lcs) :: Lookups.ScriptLookups let constraints = - (mconcat $ fst <$> lcs) :: Constraints.TxConstraints Void Void + (mconcat $ fst <$> lcs) :: Constraints.TxConstraints txHash <- submitTxFromConstraints (Lookups.mintingPolicy mintingPolicy <> lookups) constraints @@ -82,8 +82,8 @@ contractWithMintRedeemers = do --- Unlock tokens and mint other tokens with redeemer lcs <- spendLockedByIntOutputParams (validator1 /\ 1) - let unlockingLookups = snd lcs :: Lookups.ScriptLookups Void - let unlockingConstraints = fst lcs :: Constraints.TxConstraints Void Void + let unlockingLookups = snd lcs :: Lookups.ScriptLookups + let unlockingConstraints = fst lcs :: Constraints.TxConstraints let mintingConstraints = ( Constraints.mustMintValueWithRedeemer @@ -100,8 +100,8 @@ contractWithMintRedeemers = do spendLockedByIntOutputParams :: Tuple Validator Int -> Contract - ( Tuple (Constraints.TxConstraints Void Void) - (Lookups.ScriptLookups Void) + ( Tuple (Constraints.TxConstraints) + (Lookups.ScriptLookups) ) spendLockedByIntOutputParams (validator /\ redeemerVal) = do let vhash = validatorHash validator diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index b193756ed..a9e8aa1f8 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -45,13 +45,13 @@ contract = do tn <- Helpers.mkTokenName "NSToken" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintCurrencyUsingNativeScript (nsPolicy pkh) tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txId <- submitTxFromConstraints lookups constraints @@ -67,12 +67,12 @@ toSelfContract cs tn amount = do skh <- join <<< head <$> ownStakePubKeyHashes let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Helpers.mustPayToPubKeyStakeAddress pkh skh $ Value.singleton cs tn $ amount - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty txId <- submitTxFromConstraints lookups constraints diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 4d040746e..640906aa1 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -93,12 +93,12 @@ mkContractWithAssertions exampleName mkMintingPolicy = do tn <- Helpers.mkTokenName "CTLNFT" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue (Value.singleton cs tn one) <> Constraints.mustSpendPubKeyOutput oref - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp <> Lookups.unspentOutputs utxos diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index 460c54124..70262fe81 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -79,12 +79,12 @@ contract = do value :: Value value = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddressWithDatum pkh skh datum DatumWitness value <> mustPayToPubKeyStakeAddressWithDatum pkh skh datum DatumInline value - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty void $ runChecks checks $ lift do diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 8a5d0d7a9..d3b2d643e 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -30,12 +30,12 @@ contract = do ownStakePubKeyHashes let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKeyAddress pkh skh $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty txId <- submitTxFromConstraints lookups constraints diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 2b30191db..34bf90315 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -67,14 +67,14 @@ payToCheckDatumIsInline vhash = do datum :: Datum datum = Datum plutusData - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToScript vhash datum Constraints.DatumInline $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -101,11 +101,11 @@ spendFromCheckDatumIsInline vhash validator txId = do redeemer :: Redeemer redeemer = Redeemer plutusData - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs utxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutput txInput redeemer @@ -124,14 +124,14 @@ payToCheckDatumIsInlineWrong vhash = do datum :: Datum datum = Datum plutusData - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToScript vhash datum Constraints.DatumWitness $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index a28900dc8..9909e2aef 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -65,14 +65,14 @@ contract = do (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustReferenceOutput oref , Helpers.mustPayToPubKeyStakeAddress pkh skh (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty void $ runChecks checks $ lift do diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 00a4a2c8c..bb85d42ad 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -21,7 +21,7 @@ import Contract.Monad , liftedM , runContract ) -import Contract.PlutusData (PlutusData, unitDatum, unitRedeemer) +import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts ( MintingPolicy(PlutusMintingPolicy) @@ -104,17 +104,17 @@ payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef = do value :: Value value = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) - createOutputWithScriptRef :: ScriptRef -> TxConstraints Unit Unit + createOutputWithScriptRef :: ScriptRef -> TxConstraints createOutputWithScriptRef scriptRef = mustPayToPubKeyStakeAddressWithScriptRef pkh skh scriptRef value - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToScript vhash unitDatum DatumWitness value <> createOutputWithScriptRef validatorRef <> createOutputWithScriptRef mpRef - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -149,7 +149,7 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do mph :: MintingPolicyHash mph = mintingPolicyHash (PlutusMintingPolicy mp) - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = mconcat [ Constraints.mustSpendScriptOutputUsingScriptRef txInput unitRedeemer (RefInput $ mkTxUnspentOut refValidatorInput refValidatorOutput) @@ -158,7 +158,7 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do (RefInput $ mkTxUnspentOut refMpInput refMpOutput) ] - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs scriptAddressUtxos spendTxId <- submitTxFromConstraints lookups constraints @@ -180,7 +180,7 @@ mustPayToPubKeyStakeAddressWithScriptRef -> Maybe StakePubKeyHash -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyStakeAddressWithScriptRef pkh Nothing = Constraints.mustPayToPubKeyWithScriptRef pkh mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) = @@ -195,7 +195,7 @@ mintAlwaysMintsV2ToTheScript tokenName validator sum = do let vhash = validatorHash validator - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValue $ Value.singleton cs tokenName @@ -205,7 +205,7 @@ mintAlwaysMintsV2ToTheScript tokenName validator sum = do $ BigInt.fromInt sum ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txHash <- submitTxFromConstraints lookups constraints diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index cb1641f82..73d726a0e 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -11,7 +11,7 @@ import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (PlutusData, unitDatum, unitRedeemer) +import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (ValidatorHash, validatorHash) import Contract.Transaction @@ -67,7 +67,7 @@ payWithScriptRefToAlwaysSucceeds vhash scriptRef = do -- `mustPayToScriptAddressWithScriptRef` mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = case mbStakeKeyHash of Nothing -> @@ -83,7 +83,7 @@ payWithScriptRefToAlwaysSucceeds vhash scriptRef = do scriptRef (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -103,12 +103,12 @@ spendFromAlwaysSucceeds vhash txId = do $ find hasTransactionId (Map.toUnfoldable utxos :: Array _) let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSpendScriptOutputUsingScriptRef txInput unitRedeemer (SpendInput $ mkTxUnspentOut txInput txOutput) - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty spendTxId <- submitTxFromConstraints lookups constraints diff --git a/examples/SatisfiesAnyOf.purs b/examples/SatisfiesAnyOf.purs index e07a6ee2f..5763ba240 100644 --- a/examples/SatisfiesAnyOf.purs +++ b/examples/SatisfiesAnyOf.purs @@ -42,13 +42,13 @@ testMustSatisfyAnyOf = do wrongDatumHash = Hashing.datumHash wrongDatum correctDatumHash = Hashing.datumHash unitDatum - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustSatisfyAnyOf [ Constraints.mustHashDatum wrongDatumHash unitDatum , Constraints.mustHashDatum correctDatumHash unitDatum ] - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty void $ liftedE $ Lookups.mkUnbalancedTx lookups constraints diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index 292d24864..949e96db2 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -60,10 +60,10 @@ prepTest = do valHash = validatorHash validator val = Value.lovelaceValueOf one - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToScript valHash unitDatum Constraints.DatumInline val @@ -94,12 +94,12 @@ testVerification txId ecdsaRed = do $ Map.keys scriptUtxos let - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs (Map.filterKeys ((unwrap >>> _.transactionId >>> eq txId)) scriptUtxos) - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustSpendScriptOutput txIn red txId' <- submitTxFromConstraints lookups constraints logInfo' $ "Submitted Schnorr test verification tx: " <> show txId' diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index 45917da69..7993c4e11 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -49,10 +49,10 @@ mintToken :: Contract TransactionHash mintToken = do mp /\ value <- tokenValue let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue value - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp submitTxFromConstraints lookups constraints @@ -63,10 +63,10 @@ sendToken = do skh <- join <<< head <$> ownStakePubKeyHashes _ /\ value <- tokenValue let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Helpers.mustPayToPubKeyStakeAddress pkh skh value - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index bfa102b3c..60e776ddc 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -64,12 +64,12 @@ contract = do createAdditionalUtxos let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKeyAddress pkh skh $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -122,7 +122,7 @@ createAdditionalUtxos = do ownStakePubKeyHashes let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKeyAddress pkh skh ( Value.lovelaceValueOf @@ -133,7 +133,7 @@ createAdditionalUtxos = do $ BigInt.fromInt 2_000_000 ) - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty txId <- submitTxFromConstraints lookups constraints diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 14048ddbc..07bea450e 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -17,7 +17,6 @@ import Contract.BalanceTxConstraints import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedE, liftedM, runContract) -import Contract.PlutusData (PlutusData) import Contract.ScriptLookups as Lookups import Contract.Transaction ( awaitTxConfirmed @@ -45,12 +44,12 @@ contract :: Contract Unit contract = do pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeyHashes let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToPubKey pkh (Value.lovelaceValueOf $ BigInt.fromInt 1_000_000) - lookups0 :: Lookups.ScriptLookups PlutusData + lookups0 :: Lookups.ScriptLookups lookups0 = mempty unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups0 constraints @@ -62,7 +61,7 @@ contract = do logInfo' $ "Additional utxos: " <> show additionalUtxos let - lookups1 :: Lookups.ScriptLookups PlutusData + lookups1 :: Lookups.ScriptLookups lookups1 = Lookups.unspentOutputs additionalUtxos balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 94143c98a..fb46be87b 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -81,7 +81,7 @@ contract = do mintValue :: Value mintValue = Value.singleton cs0 tn0 one - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValue mintValue , mustPayWithDatumAndScriptRef pkh skh datum DatumWitness plutusScriptRef @@ -90,7 +90,7 @@ contract = do adaValue ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp0 <> Lookups.unspentOutputs utxos txHash <- submitTxFromConstraints lookups constraints @@ -112,7 +112,7 @@ mustPayWithDatumAndScriptRef -> DatumPresence -> ScriptRef -> Value - -> Constraints.TxConstraints i o + -> Constraints.TxConstraints mustPayWithDatumAndScriptRef pkh Nothing = Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh mustPayWithDatumAndScriptRef pkh (Just skh) = diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index c07f022db..0fbab38e0 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -16,8 +16,6 @@ module Contract.Address , pubKeyHashEnterpriseAddress , pubKeyHashRewardAddress , stakePubKeyHashRewardAddress - , typedValidatorBaseAddress - , typedValidatorEnterpriseAddress , validatorHashBaseAddress , validatorHashEnterpriseAddress ) where @@ -50,9 +48,7 @@ import Ctl.Internal.Plutus.Types.Address , toValidatorHash ) as X import Ctl.Internal.Scripts - ( typedValidatorBaseAddress - , typedValidatorEnterpriseAddress - , validatorHashBaseAddress + ( validatorHashBaseAddress , validatorHashEnterpriseAddress ) as Scripts import Ctl.Internal.Serialization.Address @@ -94,7 +90,6 @@ import Ctl.Internal.Types.PubKeyHash , stakePubKeyHashRewardAddress ) as PubKeyHash import Ctl.Internal.Types.Scripts (StakeValidatorHash, ValidatorHash) -import Ctl.Internal.Types.TypedValidator (TypedValidator) import Data.Maybe (Maybe) import Effect.Exception (error) @@ -159,29 +154,6 @@ addressStakeValidatorHash = Address.addressStakeValidatorHash <<< fromPlutusAddress MainnetId --- | Converts a Plutus `TypedValidator` to a Plutus (`BaseAddress`) `Address` -typedValidatorBaseAddress - :: forall (a :: Type) - . NetworkId - -> TypedValidator a - -> Maybe Address -typedValidatorBaseAddress networkId = - toPlutusAddress - <<< Scripts.typedValidatorBaseAddress networkId - --- | Converts a Plutus `TypedValidator` to a Plutus (`EnterpriseAddress`) `Address`. --- | This is likely what you will use since Plutus currently uses --- | `scriptHashAddress` on non-staking addresses which is invoked in --- | `validatorAddress` -typedValidatorEnterpriseAddress - :: forall (a :: Type) - . NetworkId - -> TypedValidator a - -> Maybe Address -typedValidatorEnterpriseAddress networkId = - toPlutusAddress - <<< Scripts.typedValidatorEnterpriseAddress networkId - -- | Converts a Plutus `ValidatorHash` to a `Address` as a Plutus (`BaseAddress`) -- | `Address` validatorHashBaseAddress diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 6103ce9c2..7b33c504e 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -9,7 +9,6 @@ module Contract.ScriptLookups import Prelude import Contract.Monad (Contract) -import Ctl.Internal.IsData (class IsData) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError @@ -38,9 +37,6 @@ import Ctl.Internal.ProcessConstraints.Error , OwnPubKeyAndStakeKeyMissing , TxOutRefNotFound , TxOutRefWrongType - , TypeCheckFailed - , TypedTxOutHasNoDatumHash - , TypedValidatorMissing , ValidatorHashNotFound , WrongRefScriptHash , CannotSatisfyAny @@ -56,15 +52,12 @@ import Ctl.Internal.Types.ScriptLookups import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , datum - , generalise , mintingPolicy , mintingPolicyM , ownPaymentPubKeyHash , ownPaymentPubKeyHashM , ownStakePubKeyHash , ownStakePubKeyHashM - , typedValidatorLookups - , typedValidatorLookupsM -- , paymentPubKeyM , unspentOutputs , unspentOutputsM @@ -73,7 +66,6 @@ import Ctl.Internal.Types.ScriptLookups , validatorM ) as X import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Ctl.Internal.Types.TypedValidator (class ValidatorTypes) import Data.Either (Either, hush) import Data.Maybe (Maybe) @@ -83,28 +75,14 @@ import Data.Maybe (Maybe) -- | a separate call. In particular, this should be called in conjuction with -- | `balanceTx` and `signTransaction`. mkUnbalancedTx - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract - ( Either - MkUnbalancedTxError - UnbalancedTx - ) + :: ScriptLookups + -> TxConstraints + -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx = PC.mkUnbalancedTxImpl -- | Same as `mkUnbalancedTx` but hushes the error. mkUnbalancedTxM - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum + :: ScriptLookups + -> TxConstraints -> Contract (Maybe UnbalancedTx) mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index ccb9057f4..6a19018d8 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -7,7 +7,6 @@ module Contract.Scripts , module ExportScripts , module Hash , module NativeScript - , module TypedValidator , module TypesScripts , module X ) where @@ -49,18 +48,6 @@ import Ctl.Internal.Types.Scripts , Validator(Validator) , ValidatorHash(ValidatorHash) ) as TypesScripts -import Ctl.Internal.Types.TypedValidator - ( class DatumType - , class RedeemerType - , class ValidatorTypes - , TypedValidator(TypedValidator) - , ValidatorType - , WrappedValidatorType - , forwardingMintingPolicy - , generalise - , typedValidatorHash - , typedValidatorScript - ) as TypedValidator import Data.Either (Either) import Data.Map (Map) import Data.Map as Map diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 70c7c5f6d..84e5492ef 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -44,9 +44,7 @@ import Contract.Monad , liftedM , runContractInEnv ) -import Contract.PlutusData (class IsData) import Contract.ScriptLookups (mkUnbalancedTx) -import Contract.Scripts (class ValidatorTypes) import Contract.TxConstraints (TxConstraints) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) @@ -528,13 +526,8 @@ createAdditionalUtxos tx = do foldl (\utxo txOut -> Map.insert (txIn $ length utxo) txOut utxo) Map.empty submitTxFromConstraintsReturningFee - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum + :: ScriptLookups + -> TxConstraints -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } submitTxFromConstraintsReturningFee lookups constraints = do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints @@ -544,13 +537,8 @@ submitTxFromConstraintsReturningFee lookups constraints = do pure { txHash, txFinalFee: getTxFinalFee balancedSignedTx } submitTxFromConstraints - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum + :: ScriptLookups + -> TxConstraints -> Contract TransactionHash submitTxFromConstraints lookups constraints = _.txHash <$> submitTxFromConstraintsReturningFee lookups constraints diff --git a/src/Contract/TxConstraints.purs b/src/Contract/TxConstraints.purs index 12cd07f0f..0ccfdde20 100644 --- a/src/Contract/TxConstraints.purs +++ b/src/Contract/TxConstraints.purs @@ -8,7 +8,6 @@ import Ctl.Internal.Types.TxConstraints , InputWithScriptRef(RefInput, SpendInput) , OutputConstraint(OutputConstraint) , TxConstraints(TxConstraints) - , addTxIn , isSatisfiable , mustBeSignedBy , mustDelegateStakeNativeScript diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index f246a4195..4f4a6851e 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -9,7 +9,6 @@ module Contract.UnbalancedTx import Prelude import Contract.Monad (Contract) -import Ctl.Internal.IsData (class IsData) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError @@ -38,10 +37,6 @@ import Ctl.Internal.ProcessConstraints.Error , OwnPubKeyAndStakeKeyMissing , TxOutRefNotFound , TxOutRefWrongType - , TypeCheckFailed - , TypedTxOutHasNoDatumHash - , TypedValidatorMissing - , ValidatorHashNotFound , WrongRefScriptHash , CannotSatisfyAny , ExpectedPlutusScriptGotNativeScript @@ -54,7 +49,6 @@ import Ctl.Internal.Types.ScriptLookups ( ScriptLookups ) import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Ctl.Internal.Types.TypedValidator (class ValidatorTypes) import Data.Either (Either, hush) import Data.Maybe (Maybe) @@ -62,30 +56,16 @@ import Data.Maybe (Maybe) -- | `TxConstraints`. This should be called in conjuction with -- | `balanceTx` and `signTransaction`. mkUnbalancedTx - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract - ( Either - MkUnbalancedTxError - UnbalancedTx - ) + :: ScriptLookups + -> TxConstraints + -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx = PC.mkUnbalancedTxImpl -- | Same as `mkUnbalancedTx` but hushes the error. -- TODO: remove, reason: it's trivial -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1047 mkUnbalancedTxM - :: forall (validator :: Type) (datum :: Type) - (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum + :: ScriptLookups + -> TxConstraints -> Contract (Maybe UnbalancedTx) mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 31729f998..b3a93babb 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -52,7 +52,6 @@ import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers (liftEither, liftM) -import Ctl.Internal.IsData (class IsData) import Ctl.Internal.NativeScripts (nativeScriptHash) import Ctl.Internal.Plutus.Conversion ( fromPlutusTxOutputWithRefScript @@ -88,9 +87,6 @@ import Ctl.Internal.ProcessConstraints.Error , DatumNotFound , TxOutRefNotFound , CannotSolveTimeConstraints - , TypedTxOutHasNoDatumHash - , TypedValidatorMissing - , TypeCheckFailed , OwnPubKeyAndStakeKeyMissing ) ) @@ -131,7 +127,6 @@ import Ctl.Internal.Serialization.Address , scriptHashCredential ) import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Transaction ( ModifyTxError , attachDatum @@ -159,7 +154,7 @@ import Ctl.Internal.Types.RewardAddress ( stakePubKeyHashRewardAddress , stakeValidatorHashRewardAddress ) as RewardAddress -import Ctl.Internal.Types.ScriptLookups (ScriptLookups(ScriptLookups)) +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.Scripts ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) , MintingPolicyHash @@ -169,52 +164,42 @@ import Ctl.Internal.Types.Scripts import Ctl.Internal.Types.Transaction (TransactionInput) import Ctl.Internal.Types.TxConstraints ( DatumPresence(DatumWitness, DatumInline) - , InputConstraint(InputConstraint) - , InputWithScriptRef(RefInput, SpendInput) - , OutputConstraint(OutputConstraint) + , InputWithScriptRef(SpendInput, RefInput) , TxConstraint - ( MustBeSignedBy - , MustDelegateStakePubKey - , MustDelegateStakePlutusScript + ( MustNotBeValid + , MustSatisfyAnyOf + , MustWithdrawStakeNativeScript + , MustWithdrawStakePlutusScript + , MustWithdrawStakePubKey , MustDelegateStakeNativeScript - , MustDeregisterStakePubKey - , MustDeregisterStakePlutusScript + , MustDelegateStakePlutusScript + , MustDelegateStakePubKey + , MustRetirePool + , MustRegisterPool , MustDeregisterStakeNativeScript + , MustDeregisterStakePlutusScript + , MustRegisterStakeScript + , MustDeregisterStakePubKey + , MustRegisterStakePubKey , MustHashDatum - , MustIncludeDatum - , MustMintValue - , MustNotBeValid , MustPayToNativeScript - , MustPayToPubKeyAddress , MustPayToScript - , MustProduceAtLeast + , MustPayToPubKeyAddress + , MustMintValueUsingNativeScript + , MustMintValue , MustReferenceOutput - , MustRegisterPool - , MustRegisterStakePubKey - , MustRegisterStakeScript - , MustRetirePool - , MustSatisfyAnyOf - , MustSpendAtLeast , MustSpendNativeScriptOutput - , MustSpendPubKeyOutput , MustSpendScriptOutput + , MustSpendPubKeyOutput + , MustProduceAtLeast + , MustSpendAtLeast + , MustBeSignedBy , MustValidateIn - , MustWithdrawStakePubKey - , MustWithdrawStakePlutusScript - , MustWithdrawStakeNativeScript - , MustMintValueUsingNativeScript + , MustIncludeDatum ) , TxConstraints(TxConstraints) , utxoWithScriptRef ) -import Ctl.Internal.Types.TypedTxOut - ( mkTypedTxOut - , typeTxOutRef - , typedTxOutDatumHash - , typedTxOutRefValue - , typedTxOutTxOut - ) -import Ctl.Internal.Types.TypedValidator (class DatumType, class ValidatorTypes) import Data.Array (cons, partition, toUnfoldable, zip) import Data.Array (singleton, (:)) as Array import Data.Bifunctor (lmap) @@ -237,7 +222,6 @@ import Effect.Class (liftEffect) import Effect.Exception (throw) import MedeaPrelude (mapMaybe) import Prelude (join) as Bind -import Type.Proxy (Proxy(Proxy)) -- The constraints don't precisely match those of Plutus: -- `forall v. (FromData (DatumType v), ToData (DatumType v), ToData (RedeemerType v))` @@ -251,14 +235,10 @@ import Type.Proxy (Proxy(Proxy)) -- | Resolve some `TxConstraints` by modifying the `UnbalancedTx` in the -- | `ConstraintProcessingState` processLookupsAndConstraints - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => TxConstraints redeemer datum - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) + :: TxConstraints + -> ConstraintsM (Either MkUnbalancedTxError Unit) processLookupsAndConstraints - (TxConstraints { constraints, ownInputs, ownOutputs }) = runExceptT do + (TxConstraints { constraints }) = runExceptT do -- Hash all the MintingPolicys and Scripts beforehand. These maps are lost -- after we `runReaderT`, unlike Plutus that has a `Map` instead of `Array`. lookups <- use _lookups <#> unwrap @@ -275,8 +255,6 @@ processLookupsAndConstraints ExceptT $ foldConstraints (processConstraint mpsMap osMap) timeConstraintsSolved - ExceptT $ foldConstraints (addOwnInput (Proxy :: Proxy datum)) ownInputs - ExceptT $ foldConstraints addOwnOutput ownOutputs ExceptT addFakeScriptDataHash ExceptT addMissingValueSpent ExceptT updateUsedUtxos @@ -285,10 +263,10 @@ processLookupsAndConstraints -- Don't write the output in terms of ExceptT because we can't write a -- partially applied `ConstraintsM` meaning this is more readable. foldConstraints - :: forall (constr :: Type) (c :: Type) - . (constr -> ConstraintsM c (Either MkUnbalancedTxError Unit)) + :: forall (constr :: Type) + . (constr -> ConstraintsM (Either MkUnbalancedTxError Unit)) -> Array constr - -> ConstraintsM c (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) foldConstraints handler = runExceptT <<< traverse_ (ExceptT <<< handler) @@ -301,17 +279,13 @@ processLookupsAndConstraints -- Helper to run the stack and get back to `QueryM`. See comments in -- `processLookupsAndConstraints` regarding constraints. runConstraintsM - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum - -> Contract (Either MkUnbalancedTxError (ConstraintProcessingState validator)) + :: ScriptLookups + -> TxConstraints + -> Contract (Either MkUnbalancedTxError ConstraintProcessingState) runConstraintsM lookups txConstraints = do { costModels } <- unwrap <$> getProtocolParameters let - initCps :: ConstraintProcessingState validator + initCps :: ConstraintProcessingState initCps = { transaction: mempty , usedUtxos: Map.empty @@ -327,9 +301,8 @@ runConstraintsM lookups txConstraints = do } unpackTuple - :: Either MkUnbalancedTxError Unit /\ - (ConstraintProcessingState validator) - -> Either MkUnbalancedTxError (ConstraintProcessingState validator) + :: Either MkUnbalancedTxError Unit /\ ConstraintProcessingState + -> Either MkUnbalancedTxError ConstraintProcessingState unpackTuple (Left err /\ _) = Left err unpackTuple (_ /\ cps) = Right cps unpackTuple <$> @@ -339,8 +312,7 @@ runConstraintsM lookups txConstraints = do -- | because ExUnits hasn't been estimated yet. It will serve as a -- | placeholder that will have the same size as the correct value. addFakeScriptDataHash - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) + :: ConstraintsM (Either MkUnbalancedTxError Unit) addFakeScriptDataHash = runExceptT do dats <- use _datums costModels <- use _costModels @@ -354,8 +326,7 @@ addFakeScriptDataHash = runExceptT do -- | Add the remaining balance of the total value that the tx must spend. -- | See note [Balance of value spent] addMissingValueSpent - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) + :: ConstraintsM (Either MkUnbalancedTxError Unit) addMissingValueSpent = do missing <- gets totalMissingValue networkId <- getNetworkId @@ -385,8 +356,7 @@ addMissingValueSpent = do _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut updateUsedUtxos - :: forall (a :: Type) - . ConstraintsM a (Either MkUnbalancedTxError Unit) + :: ConstraintsM (Either MkUnbalancedTxError Unit) updateUsedUtxos = runExceptT do txOutputs <- use _lookups <#> unwrap >>> _.txOutputs refScriptsUtxoMap <- use _refScriptsUtxoMap @@ -399,63 +369,6 @@ updateUsedUtxos = runExceptT do -- Left bias towards original map, hence `flip`: _cpsUsedUtxos %= flip union cTxOutputs --- Note, we don't use the redeemer here, unlike Plutus because of our lack of --- `TxIn` datatype. --- | Add a typed input, checking the type of the output it spends. Return the value --- | of the spent output. -addOwnInput - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => Proxy datum - -> InputConstraint redeemer - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) -addOwnInput _pd (InputConstraint { txOutRef }) = do - networkId <- getNetworkId - runExceptT do - ScriptLookups { txOutputs, typedValidator } <- use _lookups - -- Convert to Cardano type - let cTxOutputs = map (fromPlutusTxOutputWithRefScript networkId) txOutputs - inst <- liftM TypedValidatorMissing typedValidator - -- This line is to type check the `TransactionInput`. Plutus actually creates a `TxIn` - -- but we don't have such a datatype for our `TxBody`. Therefore, if we pass - -- this line, we just insert `TransactionInput` into the body. - typedTxOutRef <- ExceptT $ lift $ - typeTxOutRef networkId (flip lookup cTxOutputs) inst txOutRef - <#> lmap TypeCheckFailed - let value = typedTxOutRefValue typedTxOutRef - -- Must be inserted in order. Hopefully this matches the order under CSL - _cpsTransaction <<< _body <<< _inputs %= Set.insert txOutRef - _valueSpentBalancesInputs <>= provideValue value - --- | Add a typed output and return its value. -addOwnOutput - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => ToData datum - => OutputConstraint datum - -> ConstraintsM validator (Either MkUnbalancedTxError Unit) -addOwnOutput (OutputConstraint { datum: d, value }) = do - queryHandle <- lift $ getQueryHandle - networkId <- getNetworkId - runExceptT do - ScriptLookups { typedValidator } <- use _lookups - inst <- liftM TypedValidatorMissing typedValidator - let - value' = fromPlutusValue value - typedTxOut = mkTypedTxOut networkId inst d value' - txOut = typedTxOutTxOut typedTxOut - -- We are erroring if we don't have a datumhash given the polymorphic datum - -- in the `OutputConstraint`: - dHash <- liftM TypedTxOutHasNoDatumHash (typedTxOutDatumHash typedTxOut) - dat <- ExceptT $ liftAff $ queryHandle.getDatumByHash dHash <#> hush - >>> Bind.join - >>> note (CannotQueryDatum dHash) - _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut - ExceptT $ addDatum dat - _valueSpentBalancesOutputs <>= provideValue value' - resumeTimeConstraints :: Array TxConstraint -> Either MkUnbalancedTxError (Array TxConstraint) resumeTimeConstraints constraints = do @@ -490,10 +403,9 @@ resumeTimeConstraints constraints = do isTimeConstraint _ = false lookupTxOutRef - :: forall (a :: Type) - . TransactionInput + :: TransactionInput -> Maybe InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError TransactionOutput) + -> ConstraintsM (Either MkUnbalancedTxError TransactionOutput) lookupTxOutRef oref = case _ of Just inputWithRefScript -> lookup oref (utxoWithScriptRef inputWithRefScript) @@ -505,14 +417,13 @@ lookupTxOutRef oref = case _ of lift $ convertTxOutput txOutput where convertTxOutput - :: Plutus.TransactionOutputWithRefScript -> ConstraintsM a TransactionOutput + :: Plutus.TransactionOutputWithRefScript -> ConstraintsM TransactionOutput convertTxOutput txOutput = flip fromPlutusTxOutputWithRefScript txOutput <$> getNetworkId lookupDatum - :: forall (a :: Type) - . DataHash - -> ConstraintsM a (Either MkUnbalancedTxError Datum) + :: DataHash + -> ConstraintsM (Either MkUnbalancedTxError Datum) lookupDatum dh = do otherDt <- use _lookups <#> unwrap >>> _.datums pure $ note (DatumNotFound dh) $ lookup dh otherDt @@ -532,11 +443,11 @@ lookupValidator vh osMap = note (ValidatorHashNotFound vh) $ lookup vh osMap processScriptRefUnspentOut - :: forall (scriptHash :: Type) (a :: Type) + :: forall (scriptHash :: Type) . Newtype scriptHash ScriptHash => scriptHash -> InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) processScriptRefUnspentOut scriptHash inputWithRefScript = do unspentOut <- case inputWithRefScript of SpendInput unspentOut -> do @@ -552,28 +463,27 @@ processScriptRefUnspentOut scriptHash inputWithRefScript = do checkScriptRef unspentOut where updateRefScriptsUtxoMap - :: TransactionUnspentOutput -> ConstraintsM a Unit + :: TransactionUnspentOutput -> ConstraintsM Unit updateRefScriptsUtxoMap (TransactionUnspentOutput { input, output }) = _refScriptsUtxoMap %= Map.insert input output checkScriptRef :: TransactionUnspentOutput - -> ConstraintsM a (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) checkScriptRef (TransactionUnspentOutput { output }) = let refScriptHash :: Maybe ScriptHash refScriptHash = _.referenceScript $ unwrap $ (unwrap output).output - err :: ConstraintsM a (Either MkUnbalancedTxError Unit) + err :: ConstraintsM (Either MkUnbalancedTxError Unit) err = pure $ throwError $ WrongRefScriptHash refScriptHash in if Just (unwrap scriptHash) /= refScriptHash then err else pure (Right unit) checkRefNative - :: forall (a :: Type) - . InputWithScriptRef - -> ConstraintsM a (Either MkUnbalancedTxError Boolean) + :: InputWithScriptRef + -> ConstraintsM (Either MkUnbalancedTxError Boolean) checkRefNative scriptRef = pure $ note (WrongRefScriptHash Nothing) $ isNative (unwrap (unwrap uout).output).scriptRef where @@ -592,11 +502,10 @@ checkRefNative scriptRef = pure $ note (WrongRefScriptHash Nothing) $ isNative -- | possible. Fails if a hash is missing from the lookups, or if an output -- | of the wrong type is spent. processConstraint - :: forall (a :: Type) - . Map MintingPolicyHash MintingPolicy + :: Map MintingPolicyHash MintingPolicy -> Map ValidatorHash Validator -> TxConstraint - -> ConstraintsM a (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) processConstraint mpsMap osMap c = do queryHandle <- lift $ getQueryHandle case c of @@ -934,7 +843,7 @@ processConstraint mpsMap osMap c = do -- seen in the base case. tryNext :: List (List TxConstraint) - -> ConstraintsM a (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) tryNext Nil = pure $ throwError CannotSatisfyAny tryNext (Cons ys zs) = -- Note this implicitly resets state to original cps upon failure (see @@ -969,10 +878,10 @@ credentialToStakeCredential cred = case cred of -- Attach a Datum, Redeemer, or PlutusScript depending on the handler. They -- share error type anyway. attachToCps - :: forall (a :: Type) (b :: Type) + :: forall (a :: Type) . (a -> Transaction -> Effect (Either ModifyTxError Transaction)) -> a -- Redeemer, Datum, or PlutusScript. - -> ConstraintsM b (Either MkUnbalancedTxError Unit) + -> ConstraintsM (Either MkUnbalancedTxError Unit) attachToCps handler object = do tx <- use _cpsTransaction newTx <- liftEffect $ handler object tx <#> lmap ModifyTx @@ -983,9 +892,8 @@ attachToCps handler object = do -- Attaches datum to the transaction and to Array of datums in the state. addDatum - :: forall (a :: Type) - . Datum - -> ConstraintsM a (Either MkUnbalancedTxError Unit) + :: Datum + -> ConstraintsM (Either MkUnbalancedTxError Unit) addDatum dat = runExceptT do ExceptT $ attachToCps attachDatum dat _datums <>= Array.singleton dat @@ -993,25 +901,20 @@ addDatum dat = runExceptT do -- | Returns an index pointing to the location of the newly inserted certificate -- | in the array of transaction certificates. addCertificate - :: forall (a :: Type) - . Certificate - -> ConstraintsM a Unit + :: Certificate + -> ConstraintsM Unit addCertificate cert = do _cpsTransaction <<< _body <<< _certs <<< non [] %= Array.(:) cert getNetworkId - :: forall (a :: Type) - . ConstraintsM a NetworkId + :: ConstraintsM NetworkId getNetworkId = use (_cpsTransaction <<< _body <<< _networkId) >>= maybe (asks _.networkId) pure mkUnbalancedTxImpl :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ValidatorTypes validator datum redeemer - => IsData datum - => IsData redeemer - => ScriptLookups validator - -> TxConstraints redeemer datum + . ScriptLookups + -> TxConstraints -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTxImpl scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 8d762d672..5f9f5f57b 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -19,7 +19,6 @@ import Ctl.Internal.Types.Scripts ) import Ctl.Internal.Types.TokenName (TokenName) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.TypedTxOut (TypeCheckError) import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe) @@ -48,9 +47,6 @@ data MkUnbalancedTxError | OwnPubKeyAndStakeKeyMissing | TxOutRefNotFound TransactionInput | TxOutRefWrongType TransactionInput - | TypeCheckFailed TypeCheckError - | TypedTxOutHasNoDatumHash - | TypedValidatorMissing | ValidatorHashNotFound ValidatorHash | WrongRefScriptHash (Maybe ScriptHash) | CannotSatisfyAny diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 9874e3973..428e725b3 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -47,11 +47,11 @@ import Data.Tuple.Nested ((/\)) -- scriptlookups and a `defaultSlotConfig`. -- We write `ReaderT QueryConfig Aff` below since type synonyms need to be fully -- applied. -type ConstraintsM (a :: Type) (b :: Type) = - StateT (ConstraintProcessingState a) Contract b +type ConstraintsM (a :: Type) = + StateT ConstraintProcessingState Contract a -- This is the state for essentially creating an unbalanced transaction. -type ConstraintProcessingState (a :: Type) = +type ConstraintProcessingState = { transaction :: Transaction -- ^ The unbalanced transaction that we're building , usedUtxos :: Map TransactionInput TransactionOutput @@ -65,7 +65,7 @@ type ConstraintProcessingState (a :: Type) = , redeemers :: Array UnindexedRedeemer -- ^ Unindexed redeemers that will be attached to the Tx later, on balancing -- stage. - , lookups :: ScriptLookups a + , lookups :: ScriptLookups -- ^ ScriptLookups for resolving constraints. Should be treated as an immutable -- value despite living inside the processing state -- TODO: remove: https://github.com/Plutonomicon/cardano-transaction-lib/issues/843 @@ -75,44 +75,40 @@ type ConstraintProcessingState (a :: Type) = } _cpsTransaction - :: forall (a :: Type). Lens' (ConstraintProcessingState a) Transaction + :: Lens' ConstraintProcessingState Transaction _cpsTransaction = prop (SProxy :: SProxy "transaction") _cpsUsedUtxos - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) + :: Lens' ConstraintProcessingState (Map TransactionInput TransactionOutput) _cpsUsedUtxos = prop (SProxy :: SProxy "usedUtxos") _valueSpentBalancesInputs - :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances + :: Lens' ConstraintProcessingState ValueSpentBalances _valueSpentBalancesInputs = prop (SProxy :: SProxy "valueSpentBalancesInputs") _valueSpentBalancesOutputs - :: forall (a :: Type). Lens' (ConstraintProcessingState a) ValueSpentBalances + :: Lens' ConstraintProcessingState ValueSpentBalances _valueSpentBalancesOutputs = prop (SProxy :: SProxy "valueSpentBalancesOutputs") _datums - :: forall (a :: Type). Lens' (ConstraintProcessingState a) (Array Datum) + :: Lens' ConstraintProcessingState (Array Datum) _datums = prop (SProxy :: SProxy "datums") _costModels - :: forall (a :: Type). Lens' (ConstraintProcessingState a) Costmdls + :: Lens' ConstraintProcessingState Costmdls _costModels = prop (SProxy :: SProxy "costModels") _redeemers - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) - (Array UnindexedRedeemer) + :: Lens' ConstraintProcessingState (Array UnindexedRedeemer) _redeemers = prop (SProxy :: SProxy "redeemers") _lookups - :: forall (a :: Type). Lens' (ConstraintProcessingState a) (ScriptLookups a) + :: Lens' ConstraintProcessingState ScriptLookups _lookups = prop (SProxy :: SProxy "lookups") _refScriptsUtxoMap - :: forall (a :: Type) - . Lens' (ConstraintProcessingState a) + :: Lens' ConstraintProcessingState (Map TransactionInput Plutus.TransactionOutputWithRefScript) _refScriptsUtxoMap = prop (SProxy :: SProxy "refScriptsUtxoMap") @@ -145,7 +141,7 @@ missingValueSpent (ValueSpentBalances { required, provided }) = in missing -totalMissingValue :: forall (a :: Type). ConstraintProcessingState a -> Value +totalMissingValue :: ConstraintProcessingState -> Value totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = missingValueSpent valueSpentBalancesInputs `join` missingValueSpent valueSpentBalancesOutputs diff --git a/src/Internal/Scripts.purs b/src/Internal/Scripts.purs index cb3bd2b7d..d99b1de04 100644 --- a/src/Internal/Scripts.purs +++ b/src/Internal/Scripts.purs @@ -4,8 +4,6 @@ module Ctl.Internal.Scripts , nativeScriptStakeValidatorHash , plutusScriptStakeValidatorHash , scriptCurrencySymbol - , typedValidatorBaseAddress - , typedValidatorEnterpriseAddress , validatorHash , validatorHashBaseAddress , validatorHashEnterpriseAddress @@ -34,28 +32,12 @@ import Ctl.Internal.Types.Scripts , Validator , ValidatorHash ) -import Ctl.Internal.Types.TypedValidator (TypedValidator(TypedValidator)) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) -- | Helpers for `PlutusScript` and `ScriptHash` newtype wrappers, separate from -- | the data type definitions to prevent cylic dependencies. --- | Converts a Plutus-style `TypedValidator` to an `BaseAddress` -typedValidatorBaseAddress - :: forall (a :: Type). NetworkId -> TypedValidator a -> Address -typedValidatorBaseAddress networkId (TypedValidator typedVal) = - baseAddressToAddress $ scriptAddress networkId $ unwrap typedVal.validatorHash - --- | Converts a Plutus-style `TypedValidator` to an `Address` as an --- | `EnterpriseAddress`. This is likely what you will use since Plutus --- | currently uses `scriptHashAddress` on non-staking addresses which is --- | invoked in `validatorAddress` -typedValidatorEnterpriseAddress - :: forall (a :: Type). NetworkId -> TypedValidator a -> Address -typedValidatorEnterpriseAddress network (TypedValidator typedVal) = - validatorHashEnterpriseAddress network typedVal.validatorHash - -- | Converts a Plutus-style `MintingPolicy` to an `MintingPolicyHash` mintingPolicyHash :: MintingPolicy -> MintingPolicyHash mintingPolicyHash = case _ of diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 5b471652e..99db1305a 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -304,7 +304,7 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do \(wallet /\ walletDistr) -> flip foldMap walletDistr \value -> mustPayToKeyWallet wallet $ lovelaceValueOf value - txHash <- submitTxFromConstraints (mempty :: _ Void) constraints + txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash let fundTotal = Array.foldl (+) zero $ join distrArray -- Use log so we can see, regardless of suppression @@ -386,8 +386,7 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = <> foldMap mustBeSignedBy pkhs lookups = unspentOutputs utxos - unbalancedTx <- liftedE $ mkUnbalancedTxImpl (lookups :: _ Void) - constraints + unbalancedTx <- liftedE $ mkUnbalancedTxImpl lookups constraints balancedTx <- liftedE $ balanceTx unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) @@ -435,7 +434,7 @@ mustPayToKeyWallet :: forall (i :: Type) (o :: Type) . KeyWallet -> Value - -> TxConstraints i o + -> TxConstraints mustPayToKeyWallet wallet value = let convert = publicKeyHash <<< publicKeyFromPrivateKey diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index dfcbfed99..3647112ad 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -205,11 +205,11 @@ transferFundsFromEnterpriseToBase ourKey wallets = do ourPkh <- liftedM "Could not get our payment pkh" $ head <$> withKeyWallet ourWallet ownPaymentPubKeyHashes let - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs ourUtxos <> foldMap (_.utxos >>> Lookups.unspentOutputs) walletsInfo - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustBeSignedBy ourPkh <> foldMap constraintsForWallet walletsInfo unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -228,7 +228,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do cache <- asks (unwrap <<< _.usedTxOuts) liftEffect $ Ref.write Map.empty cache where - constraintsForWallet :: WalletInfo -> Constraints.TxConstraints Void Void + constraintsForWallet :: WalletInfo -> Constraints.TxConstraints constraintsForWallet { utxos, payPkh, stakePkh } = -- It's necessary to include `mustBeSignedBy`, we get a -- `feeTooSmall` error otherwise. See diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index d6fe1e15a..677ddbce3 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,6 +1,5 @@ module Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) - , generalise , mintingPolicy , mintingPolicyM , datum @@ -10,8 +9,6 @@ module Ctl.Internal.Types.ScriptLookups , ownPaymentPubKeyHashM , ownStakePubKeyHash , ownStakePubKeyHashM - , typedValidatorLookups - , typedValidatorLookupsM , unspentOutputs , unspentOutputsM ) where @@ -21,19 +18,16 @@ import Prelude hiding (join) import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers ((<\>)) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus -import Ctl.Internal.Types.Any (Any) import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey) import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) import Ctl.Internal.Types.Scripts (MintingPolicy, Validator) import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.TypedValidator (TypedValidator(TypedValidator)) -import Ctl.Internal.Types.TypedValidator (generalise) as TV import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype, over, wrap) +import Data.Newtype (class Newtype, over) import Data.Show.Generic (genericShow) -- Taken mainly from https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-constraints/html/Ledger-Constraints-OffChain.html @@ -51,7 +45,7 @@ import Data.Show.Generic (genericShow) -- `processLookupsAndConstraints`. -- The lookups uses the Plutus type `TransactionOutput` and does internal -- conversions to the Serialization/Cardano to append to the `TxBody` as needed. -newtype ScriptLookups (a :: Type) = ScriptLookups +newtype ScriptLookups = ScriptLookups { mps :: Array MintingPolicy -- Minting policies that the script interacts with , txOutputs :: @@ -63,31 +57,22 @@ newtype ScriptLookups (a :: Type) = ScriptLookups -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 , paymentPubKeyHashes :: Map PaymentPubKeyHash PaymentPubKey -- Public keys that we might need - , typedValidator :: - Maybe (TypedValidator a) -- The script instance with the typed validator hash & actual compiled program , ownPaymentPubKeyHash :: Maybe PaymentPubKeyHash -- The contract's payment public key hash, used for depositing tokens etc. , ownStakePubKeyHash :: Maybe StakePubKeyHash -- The contract's stake public key hash (optional) } -derive instance Generic (ScriptLookups a) _ -derive instance Newtype (ScriptLookups a) _ -derive newtype instance Eq (ScriptLookups a) +derive instance Generic ScriptLookups _ +derive instance Newtype ScriptLookups _ +derive newtype instance Eq ScriptLookups -instance Show (ScriptLookups a) where +instance Show ScriptLookups where show = genericShow -generalise :: forall (a :: Type). ScriptLookups a -> ScriptLookups Any -generalise (ScriptLookups sl) = - let - tv = TV.generalise <$> sl.typedValidator - in - wrap sl { typedValidator = tv } - -- Using `Data.Map.union`, we can replicate left-biased <> from Data.Map used -- in Plutus (*not* Plutus' internal Map that uses something like unionWith (<>)) -instance Semigroup (ScriptLookups a) where +instance Semigroup ScriptLookups where append (ScriptLookups l) (ScriptLookups r) = ScriptLookups { mps: l.mps `Array.union` r.mps @@ -96,19 +81,17 @@ instance Semigroup (ScriptLookups a) where , datums: l.datums `union` r.datums , paymentPubKeyHashes: l.paymentPubKeyHashes `union` r.paymentPubKeyHashes -- 'First' to match the semigroup instance of Map (left-biased) - , typedValidator: l.typedValidator <\> r.typedValidator , ownPaymentPubKeyHash: l.ownPaymentPubKeyHash <\> r.ownPaymentPubKeyHash , ownStakePubKeyHash: l.ownStakePubKeyHash <\> r.ownStakePubKeyHash } -instance Monoid (ScriptLookups a) where +instance Monoid ScriptLookups where mempty = ScriptLookups { mps: mempty , txOutputs: empty , scripts: mempty , datums: empty , paymentPubKeyHashes: empty - , typedValidator: Nothing , ownPaymentPubKeyHash: Nothing , ownStakePubKeyHash: Nothing } @@ -116,39 +99,13 @@ instance Monoid (ScriptLookups a) where -------------------------------------------------------------------------------- -- Create ScriptLookups helpers -------------------------------------------------------------------------------- --- | The lookup functions come in pairs with the exception of `datum`. --- | If the function cannot fail, there is another version contained in a `Maybe` --- | context (that also does not fail). --- | This is to aid users who wish to utilise the underlying `ScriptLookups` --- | `Monoid` for `foldMap` etc. --- | --- | Otherwise, there are lookups that may fail with `Maybe` (because of --- | hashing) and an unsafe counterpart via `fromJust`. - --- | A script lookups value with a script instance. For convenience this also --- | includes the minting policy script that forwards all checks to the --- | instance's validator. -typedValidatorLookups :: forall (a :: Type). TypedValidator a -> ScriptLookups a -typedValidatorLookups tv@(TypedValidator inst) = - over ScriptLookups - _ - { mps = Array.singleton inst.forwardingMPS - , typedValidator = Just tv - } - mempty - --- | Same as `typedValidatorLookups` but in `Maybe` context for convenience. --- | This should not fail. -typedValidatorLookupsM - :: forall (a :: Type). TypedValidator a -> Maybe (ScriptLookups a) -typedValidatorLookupsM = pure <<< typedValidatorLookups -- | A script lookups value that uses the map of unspent outputs to resolve -- | input constraints. unspentOutputs :: forall (a :: Type) . Map TransactionInput Plutus.TransactionOutputWithRefScript - -> ScriptLookups a + -> ScriptLookups unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty -- | Same as `unspentOutputs` but in `Maybe` context for convenience. @@ -156,51 +113,51 @@ unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty unspentOutputsM :: forall (a :: Type) . Map TransactionInput Plutus.TransactionOutputWithRefScript - -> Maybe (ScriptLookups a) + -> Maybe ScriptLookups unspentOutputsM = pure <<< unspentOutputs -- | A script lookups value with a minting policy script. -mintingPolicy :: forall (a :: Type). MintingPolicy -> ScriptLookups a +mintingPolicy :: MintingPolicy -> ScriptLookups mintingPolicy pl = over ScriptLookups _ { mps = Array.singleton pl } mempty -- | Same as `mintingPolicy` but in `Maybe` context for convenience. This -- | should not fail. -mintingPolicyM :: forall (a :: Type). MintingPolicy -> Maybe (ScriptLookups a) +mintingPolicyM :: forall (a :: Type). MintingPolicy -> Maybe ScriptLookups mintingPolicyM = pure <<< mintingPolicy -- | A script lookups value with a validator script. -validator :: forall (a :: Type). Validator -> ScriptLookups a +validator :: forall (a :: Type). Validator -> ScriptLookups validator vl = over ScriptLookups _ { scripts = Array.singleton vl } mempty -- | Same as `validator` but in `Maybe` context for convenience. This -- | should not fail. -validatorM :: forall (a :: Type). Validator -> Maybe (ScriptLookups a) +validatorM :: forall (a :: Type). Validator -> Maybe ScriptLookups validatorM = pure <<< validator -- | A script lookups value with a datum. -datum :: forall (a :: Type). Datum -> ScriptLookups a +datum :: Datum -> ScriptLookups datum dt = over ScriptLookups _ { datums = singleton (Hashing.datumHash dt) dt } mempty -- | Add your own `PaymentPubKeyHash` to the lookup. -ownPaymentPubKeyHash :: forall (a :: Type). PaymentPubKeyHash -> ScriptLookups a +ownPaymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups ownPaymentPubKeyHash pkh = over ScriptLookups _ { ownPaymentPubKeyHash = Just pkh } mempty -- | Same as `ownPaymentPubKeyHash` but in `Maybe` context for convenience. This -- | should not fail. ownPaymentPubKeyHashM - :: forall (a :: Type). PaymentPubKeyHash -> Maybe (ScriptLookups a) + :: PaymentPubKeyHash -> Maybe ScriptLookups ownPaymentPubKeyHashM = pure <<< ownPaymentPubKeyHash -- | Add your own `StakePubKeyHash` to the lookup. -ownStakePubKeyHash :: forall (a :: Type). StakePubKeyHash -> ScriptLookups a +ownStakePubKeyHash :: StakePubKeyHash -> ScriptLookups ownStakePubKeyHash skh = over ScriptLookups _ { ownStakePubKeyHash = Just skh } mempty -- | Same as `ownStakePubKeyHash` but in `Maybe` context for convenience. This -- | should not fail. ownStakePubKeyHashM - :: forall (a :: Type). StakePubKeyHash -> Maybe (ScriptLookups a) + :: StakePubKeyHash -> Maybe ScriptLookups ownStakePubKeyHashM = pure <<< ownStakePubKeyHash diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 416319cae..4fec99e66 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -36,7 +36,6 @@ module Ctl.Internal.Types.TxConstraints , MustWithdrawStakePubKey ) , TxConstraints(TxConstraints) - , addTxIn , isSatisfiable , mustBeSignedBy , mustDelegateStakeNativeScript @@ -122,6 +121,7 @@ import Ctl.Internal.Types.Interval , intersection , isEmpty ) +import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) import Ctl.Internal.Types.Scripts @@ -133,9 +133,7 @@ import Ctl.Internal.Types.Scripts ) import Ctl.Internal.Types.TokenName (TokenName) import Ctl.Internal.Types.Transaction (DataHash, TransactionInput) -import Data.Array ((:)) import Data.Array as Array -import Data.Bifunctor (class Bifunctor) import Data.BigInt (BigInt) import Data.Foldable (class Foldable, foldMap, foldl, foldr) import Data.Generic.Rep (class Generic) @@ -244,190 +242,157 @@ derive instance Generic DatumPresence _ instance Show DatumPresence where show x = genericShow x -newtype InputConstraint (i :: Type) = InputConstraint - { redeemer :: i +newtype InputConstraint = InputConstraint + { redeemer :: PlutusData , txOutRef :: TransactionInput } -derive instance Generic (InputConstraint i) _ -derive instance Newtype (InputConstraint i) _ -derive instance Functor InputConstraint -derive newtype instance Eq i => Eq (InputConstraint i) +derive instance Generic InputConstraint _ +derive instance Newtype InputConstraint _ +derive newtype instance Eq InputConstraint -instance Show i => Show (InputConstraint i) where +instance Show InputConstraint where show = genericShow -newtype OutputConstraint (o :: Type) = OutputConstraint - { datum :: o +newtype OutputConstraint = OutputConstraint + { datum :: PlutusData , value :: Value } -derive instance Generic (OutputConstraint o) _ -derive instance Newtype (OutputConstraint o) _ -derive instance Functor OutputConstraint -derive newtype instance Eq o => Eq (OutputConstraint o) +derive instance Generic OutputConstraint _ +derive instance Newtype OutputConstraint _ +derive newtype instance Eq OutputConstraint -instance Show o => Show (OutputConstraint o) where +instance Show OutputConstraint where show = genericShow -- | Restrictions placed on the allocation of funds to outputs of transactions. -newtype TxConstraints (i :: Type) (o :: Type) = TxConstraints +newtype TxConstraints = TxConstraints { constraints :: Array TxConstraint - , ownInputs :: Array (InputConstraint i) - , ownOutputs :: Array (OutputConstraint o) } -derive instance Generic (TxConstraints i o) _ -derive instance Newtype (TxConstraints i o) _ -derive newtype instance (Eq i, Eq o) => Eq (TxConstraints i o) +derive instance Generic TxConstraints _ +derive instance Newtype TxConstraints _ +derive newtype instance Eq TxConstraints -- Array concatenation allowing duplicates like Plutus -derive newtype instance Semigroup (TxConstraints i o) -derive newtype instance Monoid (TxConstraints i o) +derive newtype instance Semigroup TxConstraints +derive newtype instance Monoid TxConstraints -instance (Show i, Show o) => Show (TxConstraints i o) where +instance Show TxConstraints where show = genericShow -instance Bifunctor TxConstraints where - bimap f g (TxConstraints txc@{ ownInputs, ownOutputs }) = - TxConstraints txc - { ownInputs = map (map f) ownInputs - , ownOutputs = map (map g) ownOutputs - } - -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- --- | Adds a `TransactionInput` as an input constraint with an arbitrary --- | redeemer. -addTxIn - :: forall (i :: Type) (o :: Type) - . TransactionInput - -> i - -> TxConstraints i o - -> TxConstraints i o -addTxIn outRef red (TxConstraints txc@{ ownInputs }) = - let - ic = InputConstraint { redeemer: red, txOutRef: outRef } - in - TxConstraints txc { ownInputs = ic : ownInputs } - singleton - :: forall (i :: Type) (o :: Type). TxConstraint -> TxConstraints i o + :: TxConstraint -> TxConstraints singleton a = over TxConstraints _ { constraints = Array.singleton a } mempty -- | `mustValidateIn r` requires the transaction's time range to be contained -- | in `r`. mustValidateIn - :: forall (i :: Type) (o :: Type). POSIXTimeRange -> TxConstraints i o + :: POSIXTimeRange -> TxConstraints mustValidateIn = singleton <<< MustValidateIn -- | Require the transaction to be signed by the public key. mustBeSignedBy - :: forall (i :: Type) (o :: Type). PaymentPubKeyHash -> TxConstraints i o + :: PaymentPubKeyHash -> TxConstraints mustBeSignedBy = singleton <<< MustBeSignedBy -- | Require the transaction to include a datum. -mustIncludeDatum :: forall (i :: Type) (o :: Type). Datum -> TxConstraints i o +mustIncludeDatum :: Datum -> TxConstraints mustIncludeDatum = singleton <<< MustIncludeDatum -- | Require the transaction to reference (not spend!) the given unspent -- | transaction output. mustReferenceOutput - :: forall (i :: Type) (o :: Type). TransactionInput -> TxConstraints i o + :: TransactionInput -> TxConstraints mustReferenceOutput = singleton <<< MustReferenceOutput -- | Lock the value with a public key address. (Base Address) mustPayToPubKeyAddress - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> StakePubKeyHash -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyAddress pkh skh = singleton <<< MustPayToPubKeyAddress pkh (Just skh) Nothing Nothing -- | Lock the value and datum with a public key address. mustPayToPubKeyAddressWithDatum - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> StakePubKeyHash -> Datum -> DatumPresence -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyAddressWithDatum pkh skh datum dtp = singleton <<< MustPayToPubKeyAddress pkh (Just skh) (Just $ datum /\ dtp) Nothing -- | Lock the value and reference script with a public key address. mustPayToPubKeyAddressWithScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> StakePubKeyHash -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyAddressWithScriptRef pkh skh scriptRef = singleton <<< MustPayToPubKeyAddress pkh (Just skh) Nothing (Just scriptRef) -- | Lock the value, datum and reference script with a public key address. mustPayToPubKeyAddressWithDatumAndScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> StakePubKeyHash -> Datum -> DatumPresence -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyAddressWithDatumAndScriptRef pkh skh datum dtp scriptRef = singleton <<< MustPayToPubKeyAddress pkh (Just skh) (Just $ datum /\ dtp) (Just scriptRef) -- | Lock the value with a public key. (Enterprise Address) mustPayToPubKey - :: forall (i :: Type) (o :: Type) - . Warn + :: Warn ( Text "Some wallets may not recognize addresses without a staking key component. Consider using mustPayToPubKeyAddress" ) => PaymentPubKeyHash -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKey pkh = singleton <<< MustPayToPubKeyAddress pkh Nothing Nothing Nothing -- | Lock the value and datum with a payment public key hash. mustPayToPubKeyWithDatum - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> Datum -> DatumPresence -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyWithDatum pkh datum dtp = singleton <<< MustPayToPubKeyAddress pkh Nothing (Just $ datum /\ dtp) Nothing -- | Lock the value and reference script with a payment public key hash. mustPayToPubKeyWithScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyWithScriptRef pkh scriptRef = singleton <<< MustPayToPubKeyAddress pkh Nothing Nothing (Just scriptRef) -- | Lock the value, datum and reference script with a payment public key hash. mustPayToPubKeyWithDatumAndScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> Datum -> DatumPresence -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToPubKeyWithDatumAndScriptRef pkh datum dtp scriptRef = singleton <<< MustPayToPubKeyAddress pkh Nothing (Just $ datum /\ dtp) (Just scriptRef) @@ -438,24 +403,22 @@ mustPayToPubKeyWithDatumAndScriptRef pkh datum dtp scriptRef = -- | `mustPayToScript`, and all scripts must be explicitly provided to build -- | the transaction. mustPayToScript - :: forall (i :: Type) (o :: Type) - . ValidatorHash + :: ValidatorHash -> Datum -> DatumPresence -> Value - -> TxConstraints i o + -> TxConstraints mustPayToScript vh dt dtp vl = singleton (MustPayToScript vh Nothing dt dtp Nothing vl) <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) mustPayToScriptAddress - :: forall (i :: Type) (o :: Type) - . ValidatorHash + :: ValidatorHash -> Credential -> Datum -> DatumPresence -> Value - -> TxConstraints i o + -> TxConstraints mustPayToScriptAddress vh credential dt dtp vl = singleton (MustPayToScript vh (Just credential) dt dtp Nothing vl) <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) @@ -464,13 +427,12 @@ mustPayToScriptAddress vh credential dt dtp vl = -- | Note that the provided reference script does *not* necessarily need to -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptWithScriptRef - :: forall (i :: Type) (o :: Type) - . ValidatorHash + :: ValidatorHash -> Datum -> DatumPresence -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToScriptWithScriptRef vh dt dtp scriptRef vl = singleton (MustPayToScript vh Nothing dt dtp (Just scriptRef) vl) <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) @@ -486,7 +448,7 @@ mustPayToScriptAddressWithScriptRef -> DatumPresence -> ScriptRef -> Value - -> TxConstraints i o + -> TxConstraints mustPayToScriptAddressWithScriptRef vh credential dt dtp scriptRef vl = singleton (MustPayToScript vh (Just credential) dt dtp (Just scriptRef) vl) <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) @@ -495,7 +457,7 @@ mustPayToNativeScript :: forall (i :: Type) (o :: Type) . NativeScriptHash -> Value - -> TxConstraints i o + -> TxConstraints mustPayToNativeScript nsHash vl = singleton (MustPayToNativeScript nsHash Nothing vl) @@ -504,13 +466,13 @@ mustPayToNativeScriptAddress . NativeScriptHash -> Credential -> Value - -> TxConstraints i o + -> TxConstraints mustPayToNativeScriptAddress nsHash credential vl = singleton (MustPayToNativeScript nsHash (Just credential) vl) -- | Mint the given `Value` -- | The amount to mint must not be zero. -mustMintValue :: forall (i :: Type) (o :: Type). Value -> TxConstraints i o +mustMintValue :: Value -> TxConstraints mustMintValue = mustMintValueWithRedeemer unitRedeemer -- | Mint the given `Value` by accessing non-Ada assets. @@ -519,12 +481,12 @@ mustMintValueWithRedeemer :: forall (i :: Type) (o :: Type) . Redeemer -> Value - -> TxConstraints i o + -> TxConstraints mustMintValueWithRedeemer redeemer = Array.fold <<< map tokenConstraint <<< flattenNonAdaAssets where tokenConstraint - :: CurrencySymbol /\ TokenName /\ BigInt -> TxConstraints i o + :: CurrencySymbol /\ TokenName /\ BigInt -> TxConstraints tokenConstraint (cs /\ tn /\ amount) = let mintingPolicyHash = currencyMPSHash cs @@ -538,7 +500,7 @@ mustMintCurrency . MintingPolicyHash -> TokenName -> BigInt - -> TxConstraints i o + -> TxConstraints mustMintCurrency mph = mustMintCurrencyWithRedeemer mph unitRedeemer @@ -547,7 +509,7 @@ mustMintCurrencyUsingNativeScript . NativeScript -> TokenName -> BigInt - -> TxConstraints i o + -> TxConstraints mustMintCurrencyUsingNativeScript ns tk i = singleton (MustMintValueUsingNativeScript ns tk i) @@ -559,7 +521,7 @@ mustMintCurrencyUsingScriptRef -> TokenName -> BigInt -> InputWithScriptRef - -> TxConstraints i o + -> TxConstraints mustMintCurrencyUsingScriptRef mph = mustMintCurrencyWithRedeemerUsingScriptRef mph unitRedeemer @@ -571,7 +533,7 @@ mustMintCurrencyWithRedeemer -> Redeemer -> TokenName -> BigInt - -> TxConstraints i o + -> TxConstraints mustMintCurrencyWithRedeemer mph red tn amount = singleton (MustMintValue mph red tn amount Nothing) @@ -584,21 +546,21 @@ mustMintCurrencyWithRedeemerUsingScriptRef -> TokenName -> BigInt -> InputWithScriptRef - -> TxConstraints i o + -> TxConstraints mustMintCurrencyWithRedeemerUsingScriptRef mph red tn amount = singleton <<< MustMintValue mph red tn amount <<< Just -- | Requirement to spend inputs with at least the given value -mustSpendAtLeast :: forall (i :: Type) (o :: Type). Value -> TxConstraints i o +mustSpendAtLeast :: Value -> TxConstraints mustSpendAtLeast = singleton <<< MustSpendAtLeast -- | Requirement to produce outputs with at least the given value -mustProduceAtLeast :: forall (i :: Type) (o :: Type). Value -> TxConstraints i o +mustProduceAtLeast :: Value -> TxConstraints mustProduceAtLeast = singleton <<< MustProduceAtLeast -- | Spend the given unspent transaction public key output. mustSpendPubKeyOutput - :: forall (i :: Type) (o :: Type). TransactionInput -> TxConstraints i o + :: TransactionInput -> TxConstraints mustSpendPubKeyOutput = singleton <<< MustSpendPubKeyOutput -- | Spend the given unspent transaction script output. @@ -606,7 +568,7 @@ mustSpendScriptOutput :: forall (i :: Type) (o :: Type) . TransactionInput -> Redeemer - -> TxConstraints i o + -> TxConstraints mustSpendScriptOutput txOutRef red = singleton (MustSpendScriptOutput txOutRef red Nothing) @@ -617,7 +579,7 @@ mustSpendScriptOutputUsingScriptRef . TransactionInput -> Redeemer -> InputWithScriptRef - -> TxConstraints i o + -> TxConstraints mustSpendScriptOutputUsingScriptRef txOutRef red = singleton <<< MustSpendScriptOutput txOutRef red <<< Just @@ -625,56 +587,56 @@ mustSpendNativeScriptOutput :: forall (i :: Type) (o :: Type) . TransactionInput -> NativeScript - -> TxConstraints i o + -> TxConstraints mustSpendNativeScriptOutput txOutRef = singleton <<< MustSpendNativeScriptOutput txOutRef mustHashDatum - :: forall (i :: Type) (o :: Type). DataHash -> Datum -> TxConstraints i o + :: DataHash -> Datum -> TxConstraints mustHashDatum dhsh = singleton <<< MustHashDatum dhsh mustRegisterStakePubKey - :: forall (i :: Type) (o :: Type). StakePubKeyHash -> TxConstraints i o + :: StakePubKeyHash -> TxConstraints mustRegisterStakePubKey = singleton <<< MustRegisterStakePubKey mustDeregisterStakePubKey - :: forall (i :: Type) (o :: Type). StakePubKeyHash -> TxConstraints i o + :: StakePubKeyHash -> TxConstraints mustDeregisterStakePubKey = singleton <<< MustDeregisterStakePubKey mustRegisterStakeScript - :: forall (i :: Type) (o :: Type). StakeValidatorHash -> TxConstraints i o + :: StakeValidatorHash -> TxConstraints mustRegisterStakeScript = singleton <<< MustRegisterStakeScript mustDeregisterStakePlutusScript :: forall (i :: Type) (o :: Type) . PlutusScriptStakeValidator -> Redeemer - -> TxConstraints i o + -> TxConstraints mustDeregisterStakePlutusScript sv = singleton <<< MustDeregisterStakePlutusScript sv mustDeregisterStakeNativeScript :: forall (i :: Type) (o :: Type) . NativeScriptStakeValidator - -> TxConstraints i o + -> TxConstraints mustDeregisterStakeNativeScript = singleton <<< MustDeregisterStakeNativeScript mustRegisterPool - :: forall (i :: Type) (o :: Type). PoolRegistrationParams -> TxConstraints i o + :: PoolRegistrationParams -> TxConstraints mustRegisterPool = singleton <<< MustRegisterPool mustRetirePool :: forall (i :: Type) (o :: Type) . PoolPubKeyHash -> Epoch - -> TxConstraints i o + -> TxConstraints mustRetirePool poolPubKeyHash = singleton <<< MustRetirePool poolPubKeyHash mustDelegateStakePubKey :: forall (i :: Type) (o :: Type) . StakePubKeyHash -> PoolPubKeyHash - -> TxConstraints i o + -> TxConstraints mustDelegateStakePubKey spkh ppkh = singleton $ MustDelegateStakePubKey spkh ppkh @@ -683,7 +645,7 @@ mustDelegateStakePlutusScript . PlutusScriptStakeValidator -> Redeemer -> PoolPubKeyHash - -> TxConstraints i o + -> TxConstraints mustDelegateStakePlutusScript sv redeemer ppkh = singleton $ MustDelegateStakePlutusScript sv redeemer ppkh @@ -691,26 +653,26 @@ mustDelegateStakeNativeScript :: forall (i :: Type) (o :: Type) . NativeScriptStakeValidator -> PoolPubKeyHash - -> TxConstraints i o + -> TxConstraints mustDelegateStakeNativeScript sv ppkh = singleton $ MustDelegateStakeNativeScript sv ppkh mustWithdrawStakePubKey - :: forall (i :: Type) (o :: Type). StakePubKeyHash -> TxConstraints i o + :: StakePubKeyHash -> TxConstraints mustWithdrawStakePubKey spkh = singleton $ MustWithdrawStakePubKey spkh mustWithdrawStakePlutusScript :: forall (i :: Type) (o :: Type) . PlutusScriptStakeValidator -> Redeemer - -> TxConstraints i o + -> TxConstraints mustWithdrawStakePlutusScript validator redeemer = singleton $ MustWithdrawStakePlutusScript validator redeemer mustWithdrawStakeNativeScript :: forall (i :: Type) (o :: Type) . NativeScriptStakeValidator - -> TxConstraints i o + -> TxConstraints mustWithdrawStakeNativeScript = singleton <<< MustWithdrawStakeNativeScript @@ -721,8 +683,8 @@ mustWithdrawStakeNativeScript = mustSatisfyAnyOf :: forall (f :: Type -> Type) (i :: Type) (o :: Type) . Foldable f - => f (TxConstraints i o) - -> TxConstraints i o + => f (TxConstraints) + -> TxConstraints mustSatisfyAnyOf = Array.fromFoldable >>> map (_.constraints <<< unwrap) @@ -732,11 +694,11 @@ mustSatisfyAnyOf = -- | Marks the transaction as invalid, requiring at least one script execution -- | to fail. Despite failure, the transaction can still be submitted into the -- | chain and collateral will be lost. -mustNotBeValid :: forall (i :: Type) (o :: Type). TxConstraints i o +mustNotBeValid :: TxConstraints mustNotBeValid = singleton $ MustNotBeValid -- | Are the constraints satisfiable given the time intervals? -isSatisfiable :: forall (i :: Type) (o :: Type). TxConstraints i o -> Boolean +isSatisfiable :: TxConstraints -> Boolean isSatisfiable (TxConstraints { constraints }) = let intervals = @@ -751,8 +713,7 @@ isSatisfiable (TxConstraints { constraints }) = not (isEmpty itvl) pubKeyPayments - :: forall (i :: Type) (o :: Type) - . TxConstraints i o + :: TxConstraints -> Array (PaymentPubKeyHash /\ Value) pubKeyPayments (TxConstraints { constraints }) = toUnfoldable @@ -764,7 +725,7 @@ pubKeyPayments (TxConstraints { constraints }) = -- | The minimum `Value` that satisfies all `MustSpendAtLeast` constraints mustSpendAtLeastTotal - :: forall (i :: Type) (o :: Type). TxConstraints i o -> Value + :: TxConstraints -> Value mustSpendAtLeastTotal = foldr (join <<< f) mempty <<< _.constraints <<< unwrap where @@ -774,7 +735,7 @@ mustSpendAtLeastTotal = -- | The minimum `Value` that satisfies all `MustProduceAtLeast` constraints mustProduceAtLeastTotal - :: forall (i :: Type) (o :: Type). TxConstraints i o -> Value + :: TxConstraints -> Value mustProduceAtLeastTotal = foldr (join <<< f) mempty <<< _.constraints <<< unwrap where @@ -783,8 +744,7 @@ mustProduceAtLeastTotal = f _ = mempty requiredSignatories - :: forall (i :: Type) (o :: Type) - . TxConstraints i o + :: TxConstraints -> Array PaymentPubKeyHash requiredSignatories = foldMap f <<< _.constraints <<< unwrap where @@ -793,8 +753,7 @@ requiredSignatories = foldMap f <<< _.constraints <<< unwrap f _ = [] requiredMonetaryPolicies - :: forall (i :: Type) (o :: Type) - . TxConstraints i o + :: TxConstraints -> Array MintingPolicyHash requiredMonetaryPolicies = foldMap f <<< _.constraints <<< unwrap where @@ -803,7 +762,7 @@ requiredMonetaryPolicies = foldMap f <<< _.constraints <<< unwrap f _ = [] requiredDatums - :: forall (i :: Type) (o :: Type). TxConstraints i o -> Array Datum + :: TxConstraints -> Array Datum requiredDatums = foldMap f <<< _.constraints <<< unwrap where f :: TxConstraint -> Array Datum diff --git a/src/Internal/Types/TypedTxOut.purs b/src/Internal/Types/TypedTxOut.purs deleted file mode 100644 index 2d7deaa54..000000000 --- a/src/Internal/Types/TypedTxOut.purs +++ /dev/null @@ -1,293 +0,0 @@ -module Ctl.Internal.Types.TypedTxOut - ( TypeCheckError - ( WrongValidatorAddress - , ExpectedScriptGotPubkey - , WrongRedeemerType - , WrongDatumType - , CannotQueryDatum - , CannotMakeTypedTxOut - , UnknownRef - ) - , TypedTxOut - , TypedTxOutRef - , mkTypedTxOut - , typeTxOut - , typeTxOutRef - , typedTxOutAddress - , typedTxOutDatumHash - , typedTxOutRefAddress - , typedTxOutRefDatumHash - , typedTxOutRefInput - , typedTxOutRefValue - , typedTxOutTxOut - , typedTxOutValue - ) where - --- DO NOT export data constructors for `TypedTxOut` and `TypedTxOutRef`. - --- | This module defines typed versions the transaction input and output types --- | to ensure that the validator script type agrees with the attached inputs --- | and outputs. --- | https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger/html/src/Ledger.Typed.Tx.html - -import Prelude - -import Control.Monad.Error.Class (throwError) -import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) -import Ctl.Internal.Cardano.Types.Value (Value) -import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.IsData (class IsData) -import Ctl.Internal.Scripts (typedValidatorEnterpriseAddress) -import Ctl.Internal.Serialization.Address (Address, NetworkId) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(OutputDatumHash) - , outputDatumDataHash - ) -import Ctl.Internal.Types.PlutusData (PlutusData) -import Ctl.Internal.Types.Transaction (TransactionInput) -import Ctl.Internal.Types.TypedValidator (class DatumType, TypedValidator) -import Data.Either (Either, hush, note) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (unwrap, wrap) -import Data.Show.Generic (genericShow) -import Effect.Aff.Class (liftAff) - --- | A `TransactionInput` tagged by a phantom type: and the --- | connection type of the output. --- | Plutus uses wraps this type with a `TxIn` data type instead with optionally --- | carries the address type. We don't include such a type in our setup. --- | Note that `TypedTxOut` is implicitly constrained by its smart --- | constructor. -newtype TypedTxOutRef (validator :: Type) (datum :: Type) = TypedTxOutRef - { txOutRef :: TransactionInput, typedTxOut :: TypedTxOut validator datum } - --- `DatumType validator datum` not needed but this replicates Plutus and provides extra --- type safety. -derive newtype instance - ( DatumType validator datum - , Eq datum - ) => - Eq (TypedTxOutRef validator datum) - --- | Extract the `Address` of a `TypedTxOutRef` -typedTxOutRefAddress - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOutRef validator datum - -> Address -typedTxOutRefAddress (TypedTxOutRef { typedTxOut }) = - typedTxOutAddress typedTxOut - --- | Extract the `DataHash` of a `TypedTxOutRef` -typedTxOutRefDatumHash - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOutRef validator datum - -> Maybe DataHash -typedTxOutRefDatumHash (TypedTxOutRef { typedTxOut }) = - typedTxOutDatumHash typedTxOut - --- | Extract the `Value` of a `TypedTxOutRef` -typedTxOutRefValue - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOutRef validator datum - -> Value -typedTxOutRefValue (TypedTxOutRef { typedTxOut }) = typedTxOutValue typedTxOut - --- | Extract the `TransactionInput` of a `TypedTxOutRef` -typedTxOutRefInput - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOutRef validator datum - -> TransactionInput -typedTxOutRefInput (TypedTxOutRef { txOutRef }) = txOutRef - --- A `TransactionOutput` tagged by a phantom type: and the connection type of --- the output. DO NOT import as extra constraints are required so only import --- the smart constructor `mkTypedTxOut` -newtype TypedTxOut (validator :: Type) (datum :: Type) = TypedTxOut - { txOut :: TransactionOutput, data :: datum } - --- `DatumType a b` not needed but this replicates Plutus and provides extra --- type safety. -derive newtype instance - ( DatumType validator datum - , Eq datum - ) => - Eq (TypedTxOut validator datum) - --- | Extract the `Address` of a `TypedTxOut` -typedTxOutAddress - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOut validator datum - -> Address -typedTxOutAddress (TypedTxOut { txOut }) = (unwrap txOut).address - --- | Extract the `DataHash` of a `TypedTxOut` -typedTxOutDatumHash - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOut validator datum - -> Maybe DataHash -typedTxOutDatumHash (TypedTxOut { txOut }) = outputDatumDataHash - (unwrap txOut).datum - --- | Extract the `Value` of a `TypedTxOut` -typedTxOutValue - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOut validator datum - -> Value -typedTxOutValue (TypedTxOut { txOut }) = (unwrap txOut).amount - --- | Extract the `TxOut` ~ `TransactionOutput` of a `TypedTxOut` -typedTxOutTxOut - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => TypedTxOut validator datum - -> TransactionOutput -typedTxOutTxOut (TypedTxOut { txOut }) = txOut - --- Purescript's lack of dependent types requires this smart constructor as we --- cannot constrain the `TypedTxOut` datatype. --- | Smart constructor to create a `TypedTxOut` from a network ID, --- | a correctly-typed data, script, an address, and a value. A smart --- | constructor is required because extra constraints are needed. --- | `TransactionOutput` is tagged by a phantom type. -mkTypedTxOut - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => ToData datum - => NetworkId - -> TypedValidator validator - -> datum - -> Value - -> TypedTxOut validator datum -mkTypedTxOut networkId typedVal dt amount = - let - dHash = Hashing.datumHash $ Datum $ toData dt - -- FIX ME: This is hardcoded to enterprise address, it seems like Plutus' - -- "validatorAddress" also currently doesn't account for staking. - address = typedValidatorEnterpriseAddress networkId typedVal - in - mkTypedTxOut' dt $ - wrap - { address - , amount - , datum: OutputDatumHash dHash - , scriptRef: Nothing - } - where - mkTypedTxOut' - :: datum -- Data - -> TransactionOutput - -> TypedTxOut validator datum - mkTypedTxOut' dat txOut = TypedTxOut { txOut, data: dat } - --- | An error we can get while trying to type an existing transaction part. -data TypeCheckError - = WrongValidatorAddress Address Address - | ExpectedScriptGotPubkey - | WrongRedeemerType PlutusData - | WrongDatumType PlutusData - | CannotQueryDatum DataHash - | CannotMakeTypedTxOut - | UnknownRef - -derive instance Generic TypeCheckError _ -derive instance Eq TypeCheckError -derive instance Ord TypeCheckError - -instance Show TypeCheckError where - show = genericShow - --- | Checks that the given validator hash is consistent with the actual validator. -checkValidatorAddress - :: forall (validator :: Type) (m :: Type -> Type) - . Monad m - => NetworkId - -> TypedValidator validator - -> Address - -> m (Either TypeCheckError Unit) -checkValidatorAddress networkId typedVal actualAddr = runExceptT do - let expectedAddr = typedValidatorEnterpriseAddress networkId typedVal - unless (expectedAddr == actualAddr) - $ throwError - $ WrongValidatorAddress expectedAddr actualAddr - --- -- | Checks that the given redeemer script has the right type. --- checkRedeemer --- :: forall (a :: Type) (b :: Type) (m :: Type -> Type) --- . Monad m --- => RedeemerType a b --- => FromData b --- => TypedValidator a --- -> Redeemer --- -> m (Either TypeCheckError b) --- checkRedeemer _ (Redeemer pd) = --- runExceptT $ liftM (WrongRedeemerType pd) (fromData pd :: Maybe b) - --- | Checks that the given datum has the right type. -checkDatum - :: forall (validator :: Type) (datum :: Type) (m :: Type -> Type) - . Monad m - => DatumType validator datum - => FromData datum - => TypedValidator validator - -> Datum - -> m (Either TypeCheckError datum) -checkDatum _ (Datum pd) = - runExceptT $ liftM (WrongDatumType pd) (fromData pd :: Maybe datum) - --- | Create a `TypedTxOut` from an existing `TransactionInput` by --- | checking the types of its parts. -typeTxOut - :: forall (validator :: Type) (datum :: Type) - . DatumType validator datum - => IsData datum - => NetworkId - -> TypedValidator validator - -> TransactionOutput - -> Contract (Either TypeCheckError (TypedTxOut validator datum)) -typeTxOut - networkId - typedVal - (TransactionOutput { address, amount, datum }) = do - queryHandle <- getQueryHandle - runExceptT do - -- Assume `Nothing` is a public key. - dHash <- liftM ExpectedScriptGotPubkey $ outputDatumDataHash datum - void $ checkValidatorAddress networkId typedVal address - pd <- ExceptT $ liftAff $ queryHandle.getDatumByHash dHash <#> hush >>> join - >>> note (CannotQueryDatum dHash) - dtOut <- ExceptT $ checkDatum typedVal pd - pure $ mkTypedTxOut networkId typedVal dtOut amount - --- | Create a `TypedTxOutRef` from an existing `TransactionInput` --- | by checking the types of its parts. To do this we need to cross-reference --- | against the validator script and be able to look up the `TransactionInput` to --- | which this reference points. -typeTxOutRef - :: forall (validator :: Type) (datum :: Type) (m :: Type -> Type) - . DatumType validator datum - => IsData datum - => NetworkId - -> (TransactionInput -> Maybe TransactionOutput) - -> TypedValidator validator - -> TransactionInput - -> Contract (Either TypeCheckError (TypedTxOutRef validator datum)) -typeTxOutRef networkId lookupRef typedVal txOutRef = runExceptT do - out <- liftM UnknownRef (lookupRef txOutRef) - typedTxOut <- ExceptT $ typeTxOut networkId typedVal out - pure $ TypedTxOutRef { txOutRef, typedTxOut } diff --git a/src/Internal/Types/TypedValidator.purs b/src/Internal/Types/TypedValidator.purs deleted file mode 100644 index 4dd6e5311..000000000 --- a/src/Internal/Types/TypedValidator.purs +++ /dev/null @@ -1,185 +0,0 @@ -module Ctl.Internal.Types.TypedValidator - ( TypedValidator(TypedValidator) - , ValidatorType - , WrappedValidatorType - , class DatumType - , class RedeemerType - , class ValidatorTypes - , forwardingMintingPolicy - , generalise - , typedValidatorHash - , typedValidatorScript - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , (.:) - ) -import Ctl.Internal.Cardano.Types.Transaction (Transaction) -import Ctl.Internal.Types.Any (Any) -import Ctl.Internal.Types.PlutusData (PlutusData) -import Ctl.Internal.Types.Scripts - ( MintingPolicy - , MintingPolicyHash - , Validator - , ValidatorHash - ) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) -import Effect (Effect) - --- We don't need c, d because a determines the same type b for `DatumType` and --- `RedeemerType`. Plutus uses associated typed families, but we don't have --- such capabilities and therefore use functional dependencies instead. --- An alternative formulation could be: --- `ValidatorTypes (a :: Type) (b :: Type) | a -> b` --- then --- class ValidatorType a b <= DatumType (a :: Type) (b :: Type) | a -> b --- class ValidatorType a b <= RedeemerType (a :: Type) (b :: Type) | a -> b --- separately. We'll use the below implementation for now and determine whether --- it suffices. --- | A typeclass that associates a type standing for a connection type with two --- | types, the type of the redeemer and the data script for that connection type. -class ValidatorTypes :: Type -> Type -> Type -> Constraint -class - ( DatumType validator datum - , RedeemerType validator redeemer - ) <= - ValidatorTypes validator datum redeemer - -instance - ( DatumType validator datum - , RedeemerType validator redeemer - ) => - ValidatorTypes validator datum redeemer - --- | The type of the data of this connection type. -class DatumType :: Type -> Type -> Constraint -class DatumType validator datum | validator -> datum - -instance DatumType Void Void - -instance DatumType Any PlutusData - -instance DatumType PlutusData Unit - --- | The type of the redeemers of this connection type. -class RedeemerType :: Type -> Type -> Constraint -class RedeemerType validator redeemer | validator -> redeemer - -instance RedeemerType Void Void - -instance RedeemerType Any PlutusData - -instance RedeemerType PlutusData Unit - --- Replace `ScriptContext` by `Transaction` which contains all the scripts --- anyway: --- | The type of validators for the given connection type. -type ValidatorType (validator :: Type) (datum :: Type) (redeemer :: Type) = - DatumType validator datum - => RedeemerType validator redeemer - => datum - -> redeemer - -> Transaction - -> Boolean - -type WrappedValidatorType = - PlutusData -> PlutusData -> PlutusData -> Effect Unit - --- Would require `ToData/FromData` for `Transaction`: --- wrapValidator --- :: forall (d :: Type) (r :: Type) --- . FromData d --- => FromData r --- => (d -> r -> Transaction -> Boolean) --- -> WrappedValidatorType --- wrapValidator f d r p = --- map (const unit) $ fromJustEff "Failed wrapValidator" $ --- f <$> fromData d <*> fromData r <*> fromData p - --- Plutus rev: cc72a56eafb02333c96f662581b57504f8f8992f via Plutus-apps (localhost): abe4785a4fc4a10ba0c4e6417f0ab9f1b4169b26 --- | A typed validator script with its `ValidatorScript` and `Address`. -newtype TypedValidator (a :: Type) = TypedValidator - { validator :: Validator - , validatorHash :: ValidatorHash - , forwardingMPS :: MintingPolicy - , forwardingMPSHash :: MintingPolicyHash -- Can maybe remove as unused in lookups. - -- The hash of the minting policy that checks whether the validator - -- is run in this transaction - } - -derive instance Generic (TypedValidator a) _ -derive instance Newtype (TypedValidator a) _ -derive newtype instance Eq (TypedValidator a) - -instance Show (TypedValidator a) where - show = genericShow - -instance DecodeAeson (TypedValidator a) where - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected Object") - ( \o -> do - validator <- o .: "validator" - validatorHash <- o .: "validatorHash" - forwardingMPS <- o .: "forwardingMPS" - forwardingMPSHash <- o .: "forwardingMPSHash" - pure $ TypedValidator - { validator, validatorHash, forwardingMPS, forwardingMPSHash } - ) - --- Not sure how necessary this is: --- | Generalise the typed validator to one that works with the `PlutusData` type. -generalise :: forall (a :: Type). TypedValidator a -> TypedValidator Any -generalise - ( TypedValidator - { validator, validatorHash: vh, forwardingMPS, forwardingMPSHash } - ) = - -- we can do this safely because the on-chain validators are untyped, so they always - -- take 'PlutusData' arguments. The validator script stays the same, so the conversion - -- from 'PlutusData' to 'a' still takes place, even if it's not reflected in the type - -- signature anymore. - TypedValidator - { validator, validatorHash: vh, forwardingMPS, forwardingMPSHash } - --- | The hash of the validator. -typedValidatorHash :: forall (a :: Type). TypedValidator a -> ValidatorHash -typedValidatorHash = _.validatorHash <<< unwrap - --- | The validator script itself. -typedValidatorScript :: forall (a :: Type). TypedValidator a -> Validator -typedValidatorScript = _.validator <<< unwrap - --- | The minting policy that forwards all checks to the instance's validator. -forwardingMintingPolicy - :: forall (a :: Type). TypedValidator a -> MintingPolicy -forwardingMintingPolicy = _.forwardingMPS <<< unwrap - --- We have a few functions, I'm not sure if we even need these for off chain --- code: --- -- Broken, see below (we need some notion of `applyCode`) https://github.com/Plutonomicon/cardano-transaction-lib/issues/24 --- -- | Make a `TypedValidator` (with no type constraints) from an untyped --- -- |`Validator` script. --- unsafeMkTypedValidator :: Scripts.Validator -> Maybe (TypedValidator Any) --- unsafeMkTypedValidator validator = do --- validatorHash <- validatorHash validator --- let forwardingMPS = mkForwardingMintingPolicy validatorHash --- forwardingMPSHash <- mintingPolicyHash fowardingMPS --- TypedValidator --- { validator --- , validatorHash --- , forwardingMPS --- , forwardingMPSHash --- } - --- -- mkTypedValidator, mkForwardingMintingPolicy and --- -- mkTypedValidatorParam requires some notion --- -- of compiled code and `applyCode` also --- mkForwardingMintingPolicy :: ValidatorHash -> MintingPolicy --- mkForwardingMintingPolicy = undefined diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index e537fdf9f..c910f46b0 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -129,7 +129,7 @@ mkTestMultipleInterval intervals expected = do -- Fixtures -------------------------------------------------------------------------------- -emptyLookup :: ScriptLookups Void +emptyLookup :: ScriptLookups emptyLookup = mempty now :: POSIXTime diff --git a/test/Blockfrost/GenerateFixtures/NativeScript.purs b/test/Blockfrost/GenerateFixtures/NativeScript.purs index 5b0b42b0e..256674a30 100644 --- a/test/Blockfrost/GenerateFixtures/NativeScript.purs +++ b/test/Blockfrost/GenerateFixtures/NativeScript.purs @@ -13,7 +13,6 @@ import Contract.Config ) import Contract.Hashing (scriptRefHash) as Hashing import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.ScriptLookups (ScriptLookups) as Lookups import Contract.Scripts (NativeScript, ScriptHash) import Contract.Transaction ( ScriptRef(NativeScriptRef) @@ -85,15 +84,12 @@ generateFixtures numFixtures = do pkh <- liftedM "Failed to get own PKH" ownPaymentPubKeyHash skh <- ownStakePubKeyHash let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddressWithScriptRef pkh skh nativeScriptRef (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) - lookups :: Lookups.ScriptLookups Void - lookups = mempty - - txHash <- submitTxFromConstraints lookups constraints + txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash -- TODO: diff --git a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs index d749bd3ea..ed1d754f8 100644 --- a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs +++ b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs @@ -96,12 +96,12 @@ generateFixtures = do value :: Value value = Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat $ scriptRefs <#> flip (mustPayToPubKeyStakeAddressWithScriptRef pkh skh) value - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty txHash <- submitTxFromConstraints lookups constraints diff --git a/test/MustSpendTotal.purs b/test/MustSpendTotal.purs index 1846e31b6..4de25b9b4 100644 --- a/test/MustSpendTotal.purs +++ b/test/MustSpendTotal.purs @@ -43,9 +43,8 @@ suite = do -- Properties prop_roundtripOverMonoid - :: forall i o - . (Value.Value -> TxConstraints i o) - -> (TxConstraints i o -> Value.Value) + :: (Value.Value -> TxConstraints) + -> (TxConstraints -> Value.Value) -> Value.Value -> Value.Value -> Result @@ -54,9 +53,8 @@ prop_roundtripOverMonoid must total x y = "On value 1 " <> show x <> " and value 2 " <> show y prop_roundtrip - :: forall i o - . (Value.Value -> TxConstraints i o) - -> (TxConstraints i o -> Value.Value) + :: (Value.Value -> TxConstraints) + -> (TxConstraints -> Value.Value) -> Value.Value -> Result prop_roundtrip must total x = (must >>> total) x === x diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 605d8a9ae..c80552922 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -231,12 +231,12 @@ suite = do ownStakePubKeyHashes utxos <- fromMaybe Map.empty <$> getWalletUtxos let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints res <- @@ -446,12 +446,12 @@ suite = do -- Alice locks 10 ADA at mutlisig script txId <- withKeyWallet alice do let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToNativeScript nsHash $ Value.lovelaceValueOf $ BigInt.fromInt 10_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -471,7 +471,7 @@ suite = do txInput <- liftContractM "Unable to get UTxO" $ view _input <$> lookupTxHash txId utxos !! 0 let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToPubKey (coerce alicePaymentPKH) (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) @@ -489,7 +489,7 @@ suite = do -- the script itself, so we know how much space to allocate -- for signatures on fee calculation stage. - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -543,12 +543,12 @@ suite = do -- Alice locks 10 ADA at mutlisig script txId <- withKeyWallet alice do let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToNativeScript nsHash $ Value.lovelaceValueOf $ BigInt.fromInt 10_000_000 - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -569,14 +569,14 @@ suite = do txInput <- liftContractM "Unable to get UTxO" $ view _input <$> lookupTxHash txId utxos !! 0 let - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToPubKey (coerce alicePaymentPKH) (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) <> Constraints.mustSpendNativeScriptOutput txInput nativeScript - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -605,12 +605,12 @@ suite = do =<< byteArrayFromAscii "TheToken" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -633,12 +633,12 @@ suite = do -- Minting let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txHash <- submitTxFromConstraints lookups constraints @@ -650,7 +650,7 @@ suite = do liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let - constraints' :: Constraints.TxConstraints Void Void + constraints' :: Constraints.TxConstraints constraints' = Constraints.mustProduceAtLeast $ Value.singleton cs tn $ BigInt.fromInt 100 @@ -675,12 +675,12 @@ suite = do -- Minting let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txHash <- submitTxFromConstraints lookups constraints @@ -692,7 +692,7 @@ suite = do liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let - constraints' :: Constraints.TxConstraints Void Void + constraints' :: Constraints.TxConstraints constraints' = Constraints.mustProduceAtLeast $ Value.singleton cs tn $ BigInt.fromInt 101 @@ -718,12 +718,12 @@ suite = do -- Minting let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txHash <- submitTxFromConstraints lookups constraints @@ -735,7 +735,7 @@ suite = do liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let - constraints' :: Constraints.TxConstraints Void Void + constraints' :: Constraints.TxConstraints constraints' = Constraints.mustSpendAtLeast $ Value.singleton cs tn $ BigInt.fromInt 100 @@ -760,12 +760,12 @@ suite = do -- Minting let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Value.singleton cs tn $ BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp txHash <- submitTxFromConstraints lookups constraints @@ -777,7 +777,7 @@ suite = do liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes let - constraints' :: Constraints.TxConstraints Void Void + constraints' :: Constraints.TxConstraints constraints' = Constraints.mustSpendAtLeast $ Value.singleton cs tn $ BigInt.fromInt 101 @@ -855,7 +855,7 @@ suite = do Constraints.DatumWitness (Value.lovelaceValueOf $ BigInt.fromInt 1_000_000) - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty submitTxFromConstraints lookups constraints @@ -932,10 +932,10 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mempty - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty givenMetadata = GeneralTransactionMetadata $ Map.fromFoldable [ TransactionMetadatumLabel (BigInt.fromInt 8) /\ Text "foo" ] @@ -964,13 +964,13 @@ suite = do mp2 /\ _ <- mkCurrencySymbol alwaysMintsPolicyV2 let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintCurrency (mintingPolicyHash mp1) tn1 zero , Constraints.mustMintCurrency (mintingPolicyHash mp2) tn1 one ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp1 <> Lookups.mintingPolicy mp2 result <- Lookups.mkUnbalancedTx lookups constraints @@ -992,7 +992,7 @@ suite = do mp3 /\ cs3 <- mkCurrencySymbol mintingPolicyRdmrInt3 let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValueWithRedeemer (Redeemer $ Integer (BigInt.fromInt 1)) @@ -1005,7 +1005,7 @@ suite = do (Value.singleton cs3 tn1 one <> Value.singleton cs3 tn2 one) ] - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp1 <> Lookups.mintingPolicy mp2 @@ -1162,7 +1162,7 @@ suite = do value :: Value.Value value = Value.lovelaceValueOf $ BigInt.fromInt 50_000_000 - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = fold [ Constraints.mustSpendScriptOutput (view _input alwaysSucceedsUtxo) @@ -1170,7 +1170,7 @@ suite = do , Constraints.mustPayToPubKey alicePkh value ] - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs additionalUtxos @@ -1387,7 +1387,7 @@ suite = do txId <- withKeyWallet seed do logInfo' "Minting asset to Alice" let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue (asset <> asset) <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh ( asset <> @@ -1398,7 +1398,7 @@ suite = do (Value.lovelaceValueOf $ BigInt.fromInt 50_000_000) ) - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -1554,7 +1554,7 @@ suite = do ownPaymentPubKeyHashes let - constraints0 :: TxConstraints Unit Unit + constraints0 :: TxConstraints constraints0 = Constraints.mustPayToPubKeyWithScriptRef pkh @@ -1591,7 +1591,7 @@ suite = do (NativeScriptRef nativeScriptFixture7) (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) - lookups0 :: Lookups.ScriptLookups PlutusData + lookups0 :: Lookups.ScriptLookups lookups0 = mempty unbalancedTx0 <- @@ -1606,12 +1606,12 @@ suite = do length additionalUtxos `shouldNotEqual` 0 let - constraints1 :: TxConstraints Unit Unit + constraints1 :: TxConstraints constraints1 = Constraints.mustPayToPubKey pkh (Value.lovelaceValueOf $ BigInt.fromInt 70_000_000) - lookups1 :: Lookups.ScriptLookups PlutusData + lookups1 :: Lookups.ScriptLookups lookups1 = Lookups.unspentOutputs additionalUtxos balanceTxConstraints @@ -1691,7 +1691,7 @@ suite = do , Integer $ BigInt.fromInt 7295143 ] - constraints0 :: TxConstraints Unit Unit + constraints0 :: TxConstraints constraints0 = Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh @@ -1714,7 +1714,7 @@ suite = do let datumLookup = Lookups.datum datum' let - lookups0 :: Lookups.ScriptLookups PlutusData + lookups0 :: Lookups.ScriptLookups lookups0 = Lookups.mintingPolicy mp <> datumLookup unbalancedTx0 <- @@ -1729,13 +1729,13 @@ suite = do length additionalUtxos `shouldNotEqual` 0 let - constraints1 :: TxConstraints Unit Unit + constraints1 :: TxConstraints constraints1 = Constraints.mustPayToPubKey pkh $ Value.lovelaceValueOf (BigInt.fromInt 60_000_000) <> Value.singleton cs tn (BigInt.fromInt 50) - lookups1 :: Lookups.ScriptLookups PlutusData + lookups1 :: Lookups.ScriptLookups lookups1 = Lookups.unspentOutputs additionalUtxos balanceTxConstraints @@ -1967,12 +1967,12 @@ signMultipleContract = do pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes stakePkh <- join <<< head <$> ownStakePubKeyHashes let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -1996,12 +1996,12 @@ pkh2PkhContract -> Contract Unit pkh2PkhContract pkh stakePkh = do let - constraints :: Constraints.TxConstraints Void Void + constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< liftedE (balanceTx ubTx) diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index efa11a1da..538913c37 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -152,7 +152,7 @@ suite = do let constraints = mustRegisterStakePubKey aliceStakePkh - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -165,7 +165,7 @@ suite = do let constraints = mustDeregisterStakePubKey aliceStakePkh - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -200,7 +200,7 @@ suite = do constraints = mustRegisterStakeScript validatorHash1 <> mustRegisterStakeScript validatorHash2 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -217,7 +217,7 @@ suite = do <> mustDeregisterStakePlutusScript validator2 unitRedeemer - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -250,7 +250,7 @@ suite = do let constraints = mustRegisterStakeScript stakeValidatorHash - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -263,7 +263,7 @@ suite = do let constraints = mustDeregisterStakeNativeScript validator - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -288,7 +288,7 @@ suite = do let constraints = mustRegisterStakePubKey aliceStakePkh - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -337,7 +337,7 @@ suite = do constraints = mustRegisterPool poolParams - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -364,7 +364,7 @@ suite = do let constraints = mustRetirePool poolOperator retirementEpoch - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -419,7 +419,7 @@ suite = do $ lovelaceValueOf $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -431,7 +431,7 @@ suite = do constraints = mustRegisterStakeScript stakeValidatorHash - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -446,7 +446,7 @@ suite = do constraints = mustDelegateStakePlutusScript validator unitRedeemer poolId - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -476,7 +476,7 @@ suite = do constraints = mustWithdrawStakePlutusScript validator unitRedeemer - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -534,7 +534,7 @@ suite = do $ lovelaceValueOf $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -546,7 +546,7 @@ suite = do constraints = mustRegisterStakeScript stakeValidatorHash - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints @@ -565,7 +565,7 @@ suite = do constraints = mustDelegateStakeNativeScript validator poolId - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh @@ -595,7 +595,7 @@ suite = do constraints = mustWithdrawStakeNativeScript validator - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh @@ -631,7 +631,7 @@ suite = do let constraints = mustRegisterStakePubKey aliceStakePkh - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -647,7 +647,7 @@ suite = do constraints = mustDelegateStakePubKey aliceStakePkh poolId - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh @@ -680,7 +680,7 @@ suite = do constraints = mustWithdrawStakePubKey aliceStakePkh - lookups :: Lookups.ScriptLookups Void + lookups :: Lookups.ScriptLookups lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 5ae6b367e..7692d6a35 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -10,7 +10,7 @@ import Contract.Config , testnetConfig ) import Contract.Monad (liftedE, runContract) -import Contract.ScriptLookups (ScriptLookups, mkUnbalancedTx, unspentOutputs) +import Contract.ScriptLookups (mkUnbalancedTx, unspentOutputs) import Contract.Transaction ( awaitTxConfirmed , balanceTx @@ -119,8 +119,7 @@ run privateKey walletsDir = runContract config do <> foldMap (_.pkh >>> mustBeSignedBy) usedWallets lookups = unspentOutputs utxos - unbalancedTx <- liftedE $ mkUnbalancedTx (lookups :: ScriptLookups Void) - constraints + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints balancedTx <- liftedE $ balanceTx unbalancedTx balancedSignedTx <- Array.foldM From 72976aaddc56ad56441c75f3d2898a26bfce7b9a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 22 Sep 2023 16:48:19 +0400 Subject: [PATCH 301/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..6ba217f41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -112,6 +112,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) +- Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. ## [v5.0.0] From 0a09825949671bd8a40cfafe5ad824ceb5b42ae0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 22 Sep 2023 20:17:49 +0400 Subject: [PATCH 302/478] Fix ChangeGeneration: create exact number of outputs to self --- examples/ChangeGeneration.purs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 725c989d7..9e74a9822 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -26,7 +26,7 @@ import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds -import Data.Array (fold, length, replicate, zip) +import Data.Array (fold, length, replicate, take, zip) import Data.BigInt (fromInt) as BigInt import Data.Lens (to, (^.)) import Data.Maybe (Maybe(Just, Nothing)) @@ -48,7 +48,8 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = value = Value.lovelaceValueOf $ BigInt.fromInt 1000001 constraintsToSelf :: TxConstraints Unit Unit - constraintsToSelf = fold <<< fold $ replicate outputsToSelf + constraintsToSelf = fold <<< take outputsToSelf <<< fold + $ replicate outputsToSelf $ zip pkhs skhs <#> \(Tuple pkh mbSkh) -> case mbSkh of Nothing -> Constraints.mustPayToPubKey pkh value Just skh -> Constraints.mustPayToPubKeyAddress pkh skh value From 2a1894e4efe911cf7256ffe00bf02d6f3272d96c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 25 Sep 2023 15:58:23 +0400 Subject: [PATCH 303/478] Hardcode collateral value on the PS side, not in JS FFI --- src/Internal/Serialization/ToBytes.purs | 2 ++ src/Internal/Wallet/Cip30.js | 17 +++------------ src/Internal/Wallet/Cip30.purs | 29 ++++++++++++++++++++----- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/Internal/Serialization/ToBytes.purs b/src/Internal/Serialization/ToBytes.purs index f46868ccd..e9b14b87e 100644 --- a/src/Internal/Serialization/ToBytes.purs +++ b/src/Internal/Serialization/ToBytes.purs @@ -32,6 +32,7 @@ import Ctl.Internal.Serialization.Types , Vkeywitness , Vkeywitnesses ) +import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Untagged.Castable (class Castable) @@ -63,6 +64,7 @@ type SerializableData = Address |+| VRFKeyHash |+| Vkeywitness |+| Vkeywitnesses + |+| BigNum -- Add more as needed diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js index ad274ce3d..dd46b8800 100644 --- a/src/Internal/Wallet/Cip30.js +++ b/src/Internal/Wallet/Cip30.js @@ -5,21 +5,10 @@ exports._getNetworkId = conn => () => conn.getNetworkId(); exports._getUtxos = maybe => conn => () => conn.getUtxos().then(res => (res === null ? maybe.nothing : maybe.just(res))); -exports._getCollateral = maybe => conn => () => - /* Notes regarding the quirks of various wallets: - - Yoroi will throw an error if no amount argument is provided, and will - break if the following expression is written as - (conn.getCollateral || conn.experimental.getCollateral)("5000000") due to - JavaScript object binding - - Typhon will throw an error if the amount argument is not a string - - Nami only provides `getCollateral` under the experimental API - */ +exports._getCollateral = maybe => conn => requiredValue => () => (typeof conn.getCollateral === "function" - ? conn.getCollateral("5000000") - : conn.experimental.getCollateral("5000000") + ? conn.getCollateral(requiredValue) + : conn.experimental.getCollateral(requiredValue) ).then(utxos => utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing ); diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 32e0dfb80..57e05150d 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -18,7 +18,7 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) -import Ctl.Internal.Cardano.Types.Value (Value) +import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.UnspentOutput (convertValue) import Ctl.Internal.Deserialization.UnspentOutput as Deserialization.UnspentOuput @@ -36,6 +36,8 @@ import Ctl.Internal.Serialization.Address , rewardAddressBytes , rewardAddressFromAddress ) +import Ctl.Internal.Serialization.ToBytes (toBytes) +import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes ( CborBytes @@ -44,6 +46,7 @@ import Ctl.Internal.Types.CborBytes , rawBytesAsCborBytes ) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) +import Data.BigInt (fromInt) as BigInt import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) @@ -140,12 +143,15 @@ getWalletAddresses conn = Promise.toAffE (_getAddresses conn) <#> hexStringToAddress :: String -> Maybe Address hexStringToAddress = fromBytes <<< rawBytesAsCborBytes <=< hexToRawBytes +defaultCollateralAmount :: Coin +defaultCollateralAmount = Coin $ BigInt.fromInt 5_000_000 + -- | Get collateral using CIP-30 `getCollateral` method. -- | Throws on `Promise` rejection by wallet, returns `Nothing` if no collateral -- | is available. getCollateral :: Cip30Connection -> Aff (Maybe (Array TransactionUnspentOutput)) getCollateral conn = do - mbUtxoStrs <- toAffE $ getCip30Collateral conn + mbUtxoStrs <- toAffE $ getCip30Collateral conn defaultCollateralAmount let (mbUtxoBytes :: Maybe (Array RawBytes)) = join $ map (traverse hexToRawBytes) mbUtxoStrs @@ -238,12 +244,23 @@ foreign import _getUtxos foreign import _getCollateral :: MaybeFfiHelper -> Cip30Connection + -> String -> Effect (Promise (Maybe (Array String))) -getCip30Collateral :: Cip30Connection -> Effect (Promise (Maybe (Array String))) -getCip30Collateral conn = - _getCollateral maybeFfiHelper conn `catchError` - \_ -> throwError $ error "Wallet doesn't implement `getCollateral`." +getCip30Collateral + :: Cip30Connection -> Coin -> Effect (Promise (Maybe (Array String))) +getCip30Collateral conn requiredValue = do + bigNumValue <- maybe (throw convertError) pure + $ BigNum.fromBigInt + $ unwrap requiredValue + let requiredValueStr = byteArrayToHex $ unwrap $ toBytes bigNumValue + _getCollateral maybeFfiHelper conn requiredValueStr `catchError` + \err -> throwError $ error $ + "Failed to call `getCollateral`: " <> show err + where + convertError = + "Unable to convert CIP-30 getCollateral required value: " <> + show requiredValue foreign import _getBalance :: Cip30Connection -> Effect (Promise String) From 73df14b10a6e3d8950a76149be746b7e4974d7b7 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 25 Sep 2023 16:07:40 +0200 Subject: [PATCH 304/478] Provide additional utxos to Blockfrost `evaluateTx` --- examples/AdditionalUtxos.purs | 132 +++++++++++++++++++++++++ examples/ByUrl.purs | 4 +- src/Internal/Contract/QueryHandle.purs | 6 +- src/Internal/Service/Blockfrost.purs | 33 ++++--- test/Plutip/Contract.purs | 11 +++ 5 files changed, 167 insertions(+), 19 deletions(-) create mode 100644 examples/AdditionalUtxos.purs diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs new file mode 100644 index 000000000..e57d746e1 --- /dev/null +++ b/examples/AdditionalUtxos.purs @@ -0,0 +1,132 @@ +module Ctl.Examples.AdditionalUtxos + ( contract + , main + ) where + +import Contract.Prelude + +import Contract.Address (scriptHashAddress) +import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) +import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, liftedE, runContract) +import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) +import Contract.ScriptLookups (ScriptLookups, mkUnbalancedTx) +import Contract.ScriptLookups (datum, unspentOutputs, validator) as Lookups +import Contract.Scripts (Validator, ValidatorHash, validatorHash) +import Contract.Sync (withoutSync) +import Contract.Transaction + ( ScriptRef(NativeScriptRef) + , TransactionInput + , awaitTxConfirmed + , balanceTx + , balanceTxWithConstraints + , createAdditionalUtxos + , signTransaction + , submit + ) +import Contract.TxConstraints + ( DatumPresence(DatumInline, DatumWitness) + , TxConstraints + ) +import Contract.TxConstraints + ( mustPayToScript + , mustPayToScriptWithScriptRef + , mustSpendPubKeyOutput + , mustSpendScriptOutput + ) as Constraints +import Contract.Utxos (UtxoMap) +import Contract.Value (Value) +import Contract.Value (lovelaceValueOf) as Value +import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) +import Data.Array (fromFoldable) as Array +import Data.BigInt (fromInt) as BigInt +import Data.Map (difference, filter, keys) as Map +import Test.QuickCheck (arbitrary) +import Test.QuickCheck.Gen (randomSampleOne) + +main :: Effect Unit +main = example testnetNamiConfig + +example :: ContractParams -> Effect Unit +example contractParams = launchAff_ $ runContract contractParams contract + +contract :: Contract Unit +contract = withoutSync do + logInfo' "Running Examples.AdditionalUtxos" + validator <- alwaysSucceedsScriptV2 + let vhash = validatorHash validator + { additionalUtxos, datum } <- payToValidator vhash + spendFromValidator validator additionalUtxos datum + +payToValidator + :: ValidatorHash + -> Contract { additionalUtxos :: UtxoMap, datum :: Datum } +payToValidator vhash = do + scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) + let + value :: Value + value = Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 + + datum :: Datum + datum = wrap $ Integer $ BigInt.fromInt 42 + + constraints :: TxConstraints Unit Unit + constraints = + Constraints.mustPayToScript vhash datum DatumWitness value + <> Constraints.mustPayToScriptWithScriptRef vhash datum DatumInline + scriptRef + value + + lookups :: ScriptLookups PlutusData + lookups = Lookups.datum datum + + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + balancedTx <- liftedE $ balanceTx unbalancedTx + balancedSignedTx <- signTransaction balancedTx + void $ submit balancedSignedTx + logInfo' "Successfully locked two outputs at the validator address." + + additionalUtxos <- createAdditionalUtxos balancedSignedTx + pure { additionalUtxos, datum } + +spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit +spendFromValidator validator additionalUtxos datum = do + let + scriptUtxos :: UtxoMap + scriptUtxos = + additionalUtxos # Map.filter \out -> + (unwrap (unwrap out).output).address + == scriptHashAddress (validatorHash validator) Nothing + + scriptOrefs :: Array TransactionInput + scriptOrefs = Array.fromFoldable $ Map.keys scriptUtxos + + pubKeyOrefs :: Array TransactionInput + pubKeyOrefs = + Array.fromFoldable $ Map.keys $ Map.difference additionalUtxos scriptUtxos + + constraints :: TxConstraints Unit Unit + constraints = + foldMap (flip Constraints.mustSpendScriptOutput unitRedeemer) scriptOrefs + <> foldMap Constraints.mustSpendPubKeyOutput pubKeyOrefs + + lookups :: ScriptLookups PlutusData + lookups = + Lookups.validator validator + <> Lookups.unspentOutputs additionalUtxos + <> Lookups.datum datum + + balancerConstraints :: BalanceTxConstraintsBuilder + balancerConstraints = + BalancerConstraints.mustUseAdditionalUtxos additionalUtxos + + unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + balancedTx <- liftedE $ balanceTxWithConstraints unbalancedTx + balancerConstraints + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + + awaitTxConfirmed txHash + logInfo' "Successfully spent additional utxos from the validator address." diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index f5d12f6de..82abbb8da 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -32,6 +32,7 @@ import Contract.Config ) import Contract.Monad (Contract) import Contract.Test.E2E (E2EConfigName, E2ETestName, addLinks, route) +import Ctl.Examples.AdditionalUtxos as AdditionalUtxos import Ctl.Examples.AlwaysMints as AlwaysMints import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Ctl.Examples.ChangeGeneration as ChangeGeneration @@ -192,7 +193,8 @@ mkBlockfrostPreprodConfig apiKey = examples :: Map E2ETestName (Contract Unit) examples = Map.fromFoldable - [ "AlwaysMints" /\ AlwaysMints.contract + [ "AdditionalUtxos" /\ AdditionalUtxos.contract + , "AlwaysMints" /\ AlwaysMints.contract , "NativeScriptMints" /\ NativeScriptMints.contract , "AlwaysSucceeds" /\ AlwaysSucceeds.contract , "AlwaysSucceedsV2" /\ AlwaysSucceedsV2.contract diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index af8d17468..1e42dfd41 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -107,10 +107,8 @@ queryHandleForBlockfrostBackend logParams backend = Right epoch -> pure $ wrap epoch Left err -> throwError $ error $ show err , submitTx: runBlockfrostServiceM' <<< Blockfrost.submitTx - , evaluateTx: \tx additionalUtxos -> runBlockfrostServiceM' do - unless (Map.isEmpty $ unwrap additionalUtxos) do - logWarn' "Blockfrost does not support explicit additional utxos" - Blockfrost.evaluateTx tx + , evaluateTx: \tx additionalUtxos -> + runBlockfrostServiceM' $ Blockfrost.evaluateTx tx additionalUtxos , getEraSummaries: runBlockfrostServiceM' Blockfrost.getEraSummaries , getPoolIds: runBlockfrostServiceM' Blockfrost.getPoolIds , getPubKeyHashDelegationsAndRewards: \networkId stakePubKeyHash -> diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 3c09cf979..b746e6cec 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -67,6 +67,7 @@ import Aeson , JsonDecodeError(TypeMismatch, MissingValue, AtKey) , decodeAeson , decodeJsonString + , encodeAeson , getField , getFieldOptional , getFieldOptional' @@ -136,7 +137,7 @@ import Ctl.Internal.Deserialization.PlutusData (deserializeData) import Ctl.Internal.Deserialization.Transaction ( convertGeneralTransactionMetadata ) -import Ctl.Internal.QueryM.Ogmios (TxEvaluationR) +import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, TxEvaluationR) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.Serialization as Serialization import Ctl.Internal.Serialization.Address @@ -224,6 +225,7 @@ import Data.Log.Message (Message) import Data.Map (empty, fromFoldable, isEmpty, unions) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) import Data.MediaType (MediaType(MediaType)) +import Data.MediaType.Common (applicationJSON) as MediaType import Data.Newtype (class Newtype, unwrap, wrap) import Data.Number (infinity) import Data.Show.Generic (genericShow) @@ -314,7 +316,7 @@ data BlockfrostEndpoint | DatumCbor DataHash -- /network/eras | EraSummaries - -- /utils/txs/evaluate + -- /utils/txs/evaluate/utxos | EvaluateTransaction -- /blocks/latest | LatestBlock @@ -362,7 +364,7 @@ realizeEndpoint endpoint = EraSummaries -> "/network/eras" EvaluateTransaction -> - "/utils/txs/evaluate" + "/utils/txs/evaluate/utxos" LatestBlock -> "/blocks/latest" LatestEpoch -> @@ -637,10 +639,10 @@ submitTx tx = do blockfrostPostRequest SubmitTransaction (MediaType "application/cbor") (Just $ Affjax.arrayView $ unwrap $ unwrap cbor) -evaluateTx :: Transaction -> BlockfrostServiceM TxEvaluationR -evaluateTx tx = do - cslTx <- liftEffect $ Serialization.convertTransaction tx - resp <- handleBlockfrostResponse <$> request (Serialization.toBytes cslTx) +evaluateTx + :: Transaction -> AdditionalUtxoSet -> BlockfrostServiceM TxEvaluationR +evaluateTx tx additionalUtxos = do + resp <- handleBlockfrostResponse <$> request case unwrapBlockfrostEvaluateTx <$> resp of Left err -> throwError $ error $ show err Right (Left err) -> @@ -649,13 +651,16 @@ evaluateTx tx = do err Right (Right eval) -> pure eval where - -- Hex encoded, not binary like submission - request - :: CborBytes - -> BlockfrostServiceM (Either Affjax.Error (Affjax.Response String)) - request cbor = - blockfrostPostRequest EvaluateTransaction (MediaType "application/cbor") - (Just $ Affjax.string $ cborBytesToHex cbor) + request :: BlockfrostServiceM (Either Affjax.Error (Affjax.Response String)) + request = do + cslTx <- liftEffect $ Serialization.convertTransaction tx + blockfrostPostRequest EvaluateTransaction MediaType.applicationJSON + ( Just $ Affjax.string $ stringifyAeson $ + encodeAeson + { cbor: cborBytesToHex $ Serialization.toBytes cslTx + , additionalUtxoSet: additionalUtxos + } + ) -------------------------------------------------------------------------------- -- Check transaction confirmation status diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 5a6f8583c..446f76896 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -100,6 +100,7 @@ import Contract.Wallet import Control.Monad.Error.Class (try) import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) +import Ctl.Examples.AdditionalUtxos (contract) as AdditionalUtxos import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Ctl.Examples.AwaitTxConfirmedWithTimeout as AwaitTxConfirmedWithTimeout @@ -1035,6 +1036,16 @@ suite = do checkUtxoDistribution distribution alice withKeyWallet alice signMultipleContract + test "AdditionalUtxos example" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 10_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> + withKeyWallet alice AdditionalUtxos.contract + test "Locking & unlocking on an always succeeding script (AlwaysSucceeds example)" do From 854a4aa3f058c65987651fd9430bfbbaa041ee01 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 25 Sep 2023 17:08:57 +0200 Subject: [PATCH 305/478] Handle Ogmios AdditionalUtxoOverlap exception --- examples/AdditionalUtxos.purs | 15 +++--- examples/ByUrl.purs | 2 +- src/Internal/BalanceTx/Error.purs | 4 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 52 +++++++++++--------- src/Internal/Contract/QueryHandle.purs | 3 +- src/Internal/QueryM/Ogmios.purs | 28 +++++++++-- test/Plutip/Contract.purs | 12 ++++- 7 files changed, 79 insertions(+), 37 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index e57d746e1..eff0265ca 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -50,20 +50,22 @@ main :: Effect Unit main = example testnetNamiConfig example :: ContractParams -> Effect Unit -example contractParams = launchAff_ $ runContract contractParams contract +example contractParams = + launchAff_ $ runContract contractParams $ contract false -contract :: Contract Unit -contract = withoutSync do +contract :: Boolean -> Contract Unit +contract testAdditionalUtxoOverlap = withoutSync do logInfo' "Running Examples.AdditionalUtxos" validator <- alwaysSucceedsScriptV2 let vhash = validatorHash validator - { additionalUtxos, datum } <- payToValidator vhash + { additionalUtxos, datum } <- payToValidator vhash testAdditionalUtxoOverlap spendFromValidator validator additionalUtxos datum payToValidator :: ValidatorHash + -> Boolean -> Contract { additionalUtxos :: UtxoMap, datum :: Datum } -payToValidator vhash = do +payToValidator vhash testAdditionalUtxoOverlap = do scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) let value :: Value @@ -85,7 +87,8 @@ payToValidator vhash = do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints balancedTx <- liftedE $ balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx - void $ submit balancedSignedTx + txHash <- submit balancedSignedTx + when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash logInfo' "Successfully locked two outputs at the validator address." additionalUtxos <- createAdditionalUtxos balancedSignedTx diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 82abbb8da..8f00edce0 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -193,7 +193,7 @@ mkBlockfrostPreprodConfig apiKey = examples :: Map E2ETestName (Contract Unit) examples = Map.fromFoldable - [ "AdditionalUtxos" /\ AdditionalUtxos.contract + [ "AdditionalUtxos" /\ AdditionalUtxos.contract false , "AlwaysMints" /\ AlwaysMints.contract , "NativeScriptMints" /\ NativeScriptMints.contract , "AlwaysSucceeds" /\ AlwaysSucceeds.contract diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d4678387f..d2ebd8429 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -45,7 +45,7 @@ import Ctl.Internal.QueryM.Ogmios , IllFormedExecutionBudget , NoCostModelForLanguage ) - , TxEvaluationFailure(UnparsedError, ScriptFailures) + , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) ) as Ogmios import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) @@ -173,6 +173,8 @@ printTxEvaluationFailure printTxEvaluationFailure transaction e = runPrettyString $ case e of Ogmios.UnparsedError error -> line $ "Unknown error: " <> error + Ogmios.AdditionalUtxoOverlap utxos -> + line $ "AdditionalUtxoOverlap: " <> show utxos Ogmios.ScriptFailures sf -> line "Script failures:" <> bullet (foldMapWithIndex printScriptFailures sf) where diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index ade5c9ac3..964ddc89e 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -45,6 +45,7 @@ import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet + , TxEvaluationFailure(AdditionalUtxoOverlap) , TxEvaluationResult(TxEvaluationResult) ) as Ogmios import Ctl.Internal.QueryM.Ogmios (TxEvaluationFailure(UnparsedError)) @@ -58,14 +59,14 @@ import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Scripts (Language, PlutusScript) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes) -import Data.Array (fromFoldable) as Array +import Data.Array (fromFoldable, notElem) as Array import Data.Bifunctor (bimap) import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap) import Data.Lens.Getter ((^.)) import Data.Lens.Setter ((?~)) -import Data.Map (empty, fromFoldable, lookup, toUnfoldable) as Map +import Data.Map (empty, filterKeys, fromFoldable, lookup, toUnfoldable) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) @@ -80,28 +81,33 @@ evalTxExecutionUnits :: Transaction -> BalanceTxM Ogmios.TxEvaluationResult evalTxExecutionUnits tx = do - queryHandle <- liftContract getQueryHandle - additionalUtxos <- getOgmiosAdditionalUtxoSet - evalResult <- - unwrap <$> liftContract - (liftAff $ queryHandle.evaluateTx tx additionalUtxos) - - case evalResult of - Right a -> pure a - Left evalFailure | tx ^. _isValid -> - throwError $ ExUnitsEvaluationFailed tx evalFailure - Left _ -> pure $ wrap Map.empty + networkId <- askNetworkId + additionalUtxos <- + fromPlutusUtxoMap networkId <$> asksConstraints Constraints._additionalUtxos + worker additionalUtxos where - getOgmiosAdditionalUtxoSet :: BalanceTxM Ogmios.AdditionalUtxoSet - getOgmiosAdditionalUtxoSet = do - networkId <- askNetworkId - additionalUtxos <- - asksConstraints Constraints._additionalUtxos - <#> fromPlutusUtxoMap networkId - pure $ wrap $ Map.fromFoldable - ( bimap transactionInputToTxOutRef transactionOutputToOgmiosTxOut - <$> (Map.toUnfoldable :: _ -> Array _) additionalUtxos - ) + worker :: UtxoMap -> BalanceTxM Ogmios.TxEvaluationResult + worker additionalUtxos = do + queryHandle <- liftContract getQueryHandle + evalResult <- + unwrap <$> liftContract + (liftAff $ queryHandle.evaluateTx tx ogmiosAdditionalUtxos) + case evalResult of + Right a -> pure a + Left (Ogmios.AdditionalUtxoOverlap overlappingUtxos) -> + -- Remove overlapping additional utxos and retry evaluation: + worker $ Map.filterKeys (flip Array.notElem overlappingUtxos) + additionalUtxos + Left evalFailure | tx ^. _isValid -> + throwError $ ExUnitsEvaluationFailed tx evalFailure + Left _ -> pure $ wrap Map.empty + where + ogmiosAdditionalUtxos :: Ogmios.AdditionalUtxoSet + ogmiosAdditionalUtxos = + wrap $ Map.fromFoldable + ( bimap transactionInputToTxOutRef transactionOutputToOgmiosTxOut + <$> (Map.toUnfoldable :: _ -> Array _) additionalUtxos + ) -- Calculates the execution units needed for each script in the transaction -- and the minimum fee, including the script fees. diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 1e42dfd41..5531fe5ae 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -6,7 +6,7 @@ module Ctl.Internal.Contract.QueryHandle import Prelude -import Contract.Log (logDebug', logWarn') +import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend, CtlBackend) @@ -40,7 +40,6 @@ import Ctl.Internal.Service.Blockfrost import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Data.Either (Either(Left, Right)) -import Data.Map as Map import Data.Maybe (fromMaybe, isJust) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 89e4f338c..188953674 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -38,7 +38,7 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosTxIn , OgmiosTxId , SubmitTxR(SubmitTxSuccess, SubmitFail) - , TxEvaluationFailure(UnparsedError, ScriptFailures) + , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) , PoolIdsR @@ -180,6 +180,7 @@ import Ctl.Internal.Types.SystemStart , sysStartToOgmiosTimestamp ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) +import Ctl.Internal.Types.Transaction (TransactionInput) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array @@ -768,11 +769,11 @@ instance Show ScriptFailure where -- The following cases are fine to fall through into unparsed error: -- IncompatibleEra --- AdditionalUtxoOverlap -- NotEnoughSynced -- CannotCreateEvaluationContext data TxEvaluationFailure = UnparsedError String + | AdditionalUtxoOverlap (Array TransactionInput) | ScriptFailures (Map RedeemerPointer (Array ScriptFailure)) derive instance Generic TxEvaluationFailure _ @@ -852,7 +853,7 @@ instance DecodeAeson TxEvaluationFailure where decodeAeson = aesonObject $ runReaderT cases where cases :: ObjectParser TxEvaluationFailure - cases = decodeScriptFailures <|> defaultCase + cases = decodeScriptFailures <|> decodeAdditionalUtxoOverlap <|> defaultCase defaultCase :: ObjectParser TxEvaluationFailure defaultCase = ReaderT \o -> @@ -868,6 +869,27 @@ instance DecodeAeson TxEvaluationFailure where (_ /\ v') <$> decodeRedeemerPointer k pure $ ScriptFailures scriptFailures + decodeAdditionalUtxoOverlap :: ObjectParser TxEvaluationFailure + decodeAdditionalUtxoOverlap = ReaderT \o -> do + ogmiosOrefs <- + flip getField "AdditionalUtxoOverlap" =<< getField o "EvaluationFailure" + orefs <- + note orefConversionError $ + traverse ogmiosOrefToTransactionInput ogmiosOrefs + pure $ AdditionalUtxoOverlap orefs + where + orefConversionError :: JsonDecodeError + orefConversionError = + TypeMismatch "Could not convert OgmiosTxOutRef to TransactionInput" + + ogmiosOrefToTransactionInput :: OgmiosTxOutRef -> Maybe TransactionInput + ogmiosOrefToTransactionInput { txId, index } = + hexToByteArray txId <#> \transactionId -> + wrap + { transactionId: wrap transactionId + , index + } + ---------------- PROTOCOL PARAMETERS QUERY RESPONSE & PARSING -- | A version of `Rational` with Aeson instance that decodes from `x/y` diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 446f76896..0f362876e 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -1044,7 +1044,17 @@ suite = do , BigInt.fromInt 50_000_000 ] withWallets distribution \alice -> - withKeyWallet alice AdditionalUtxos.contract + withKeyWallet alice $ AdditionalUtxos.contract false + + test "Handles AdditionalUtxoOverlap exception (AdditionalUtxos example)" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 10_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> + withKeyWallet alice $ AdditionalUtxos.contract true test "Locking & unlocking on an always succeeding script (AlwaysSucceeds example)" From 2909b9342d2d59d74160e319144c86f244e37f9f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 25 Sep 2023 17:54:50 +0200 Subject: [PATCH 306/478] Fix `AdditionalUtxos` example by locking spent utxos --- examples/AdditionalUtxos.purs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index eff0265ca..f939a22fd 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -12,7 +12,7 @@ import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedE, runContract) import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) -import Contract.ScriptLookups (ScriptLookups, mkUnbalancedTx) +import Contract.ScriptLookups (ScriptLookups, UnbalancedTx, mkUnbalancedTx) import Contract.ScriptLookups (datum, unspentOutputs, validator) as Lookups import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.Sync (withoutSync) @@ -25,6 +25,7 @@ import Contract.Transaction , createAdditionalUtxos , signTransaction , submit + , withBalancedTx ) import Contract.TxConstraints ( DatumPresence(DatumInline, DatumWitness) @@ -58,14 +59,19 @@ contract testAdditionalUtxoOverlap = withoutSync do logInfo' "Running Examples.AdditionalUtxos" validator <- alwaysSucceedsScriptV2 let vhash = validatorHash validator - { additionalUtxos, datum } <- payToValidator vhash testAdditionalUtxoOverlap - spendFromValidator validator additionalUtxos datum + { unbalancedTx, datum } <- payToValidator vhash + withBalancedTx unbalancedTx \balancedTx -> do + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash + logInfo' "Successfully locked two outputs at the validator address." + + additionalUtxos <- createAdditionalUtxos balancedSignedTx + spendFromValidator validator additionalUtxos datum payToValidator - :: ValidatorHash - -> Boolean - -> Contract { additionalUtxos :: UtxoMap, datum :: Datum } -payToValidator vhash testAdditionalUtxoOverlap = do + :: ValidatorHash -> Contract { unbalancedTx :: UnbalancedTx, datum :: Datum } +payToValidator vhash = do scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) let value :: Value @@ -85,14 +91,7 @@ payToValidator vhash testAdditionalUtxoOverlap = do lookups = Lookups.datum datum unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx - balancedSignedTx <- signTransaction balancedTx - txHash <- submit balancedSignedTx - when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash - logInfo' "Successfully locked two outputs at the validator address." - - additionalUtxos <- createAdditionalUtxos balancedSignedTx - pure { additionalUtxos, datum } + pure { unbalancedTx, datum } spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit spendFromValidator validator additionalUtxos datum = do From ce5c267221461ad819fe8ced20c87d717ea9ab4a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 25 Sep 2023 18:12:39 +0200 Subject: [PATCH 307/478] Update `CHANGELOG.md`, Fix warnings --- CHANGELOG.md | 2 ++ examples/AdditionalUtxos.purs | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0bd4a7d3..e5af7a216 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) - New `mustSendChangeWithDatum` balancer constraint that adds datum to all change outputs ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) +- Full additional utxos support for Blockfrost backend ([#1537](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1537)) ### Changed @@ -109,6 +110,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Index `Reward` redeemers properly ([#1419](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1419), [#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) - A problem with too many change UTxOs being generated ([#1530](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530)) +- A problem where tx evaluation with additional utxos failed with an Ogmios `AdditionalUtxoOverlap` exception if some additional utxos got confirmed in the meantime ([#1537](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1537)) ### Removed diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index f939a22fd..18294ed2a 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -20,7 +20,6 @@ import Contract.Transaction ( ScriptRef(NativeScriptRef) , TransactionInput , awaitTxConfirmed - , balanceTx , balanceTxWithConstraints , createAdditionalUtxos , signTransaction From b78d3b0ff72fbea5aaa3ccd77676d49e4270de11 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 26 Sep 2023 08:07:38 +1300 Subject: [PATCH 308/478] scriptCurrencySymbol no longer returns Maybe --- CHANGELOG.md | 2 ++ examples/Helpers.purs | 2 +- examples/PlutusV2/ReferenceInputsAndScripts.purs | 2 +- src/Internal/Plutus/Types/CurrencySymbol.purs | 5 +++++ src/Internal/Scripts.purs | 16 ++++++++++++---- test/Plutip/Contract.purs | 6 +++--- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0bd4a7d3..bce1b464d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed +- `scriptCurrencySymbol` no longer returns `Maybe` + ([#1538](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1538) - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Slot to/from POSIXTime conversion functions now live outside of `Effect` ([#1490](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1490)) - All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) diff --git a/examples/Helpers.purs b/examples/Helpers.purs index 461903a66..3b0716e98 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -31,7 +31,7 @@ mkCurrencySymbol -> Contract (MintingPolicy /\ CurrencySymbol) mkCurrencySymbol mintingPolicy = do mp <- mintingPolicy - cs <- liftContractM "Cannot get cs" $ Value.scriptCurrencySymbol mp + let cs = Value.scriptCurrencySymbol mp pure (mp /\ cs) mkTokenName :: String -> Contract TokenName diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 00a4a2c8c..f0f254861 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -190,7 +190,7 @@ mintAlwaysMintsV2ToTheScript :: TokenName -> Validator -> Int -> Contract Unit mintAlwaysMintsV2ToTheScript tokenName validator sum = do mp <- alwaysMintsPolicyV2 - cs <- liftContractM "Cannot get cs" $ Value.scriptCurrencySymbol mp + let cs = Value.scriptCurrencySymbol mp let vhash = validatorHash validator diff --git a/src/Internal/Plutus/Types/CurrencySymbol.purs b/src/Internal/Plutus/Types/CurrencySymbol.purs index 53f970acc..b3d8d121d 100644 --- a/src/Internal/Plutus/Types/CurrencySymbol.purs +++ b/src/Internal/Plutus/Types/CurrencySymbol.purs @@ -4,6 +4,7 @@ module Ctl.Internal.Plutus.Types.CurrencySymbol , currencyMPSHash , getCurrencySymbol , mkCurrencySymbol + , mkCurrencySymbolUnsafe , mpsSymbol , scriptHashAsCurrencySymbol ) where @@ -98,6 +99,10 @@ mkCurrencySymbol byteArr | otherwise = scriptHashFromBytes byteArr $> CurrencySymbol byteArr +-- | Bypasses the usual checks of mkCurrencySymbol: use with extreme care! +mkCurrencySymbolUnsafe :: ByteArray -> CurrencySymbol +mkCurrencySymbolUnsafe = CurrencySymbol + -------------------------------------------------------------------------------- -- Internal -------------------------------------------------------------------------------- diff --git a/src/Internal/Scripts.purs b/src/Internal/Scripts.purs index cb3bd2b7d..295793b1e 100644 --- a/src/Internal/Scripts.purs +++ b/src/Internal/Scripts.purs @@ -15,7 +15,10 @@ import Prelude import Ctl.Internal.Hashing (plutusScriptHash) import Ctl.Internal.NativeScripts (NativeScriptHash, nativeScriptHash) -import Ctl.Internal.Plutus.Types.CurrencySymbol (CurrencySymbol, mpsSymbol) +import Ctl.Internal.Plutus.Types.CurrencySymbol + ( CurrencySymbol + , mkCurrencySymbolUnsafe + ) import Ctl.Internal.Serialization.Address ( Address , NetworkId @@ -25,6 +28,7 @@ import Ctl.Internal.Serialization.Address , scriptAddress , scriptHashCredential ) +import Ctl.Internal.Serialization.Hash (scriptHashToBytes) import Ctl.Internal.Types.Scripts ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) , MintingPolicyHash @@ -35,7 +39,6 @@ import Ctl.Internal.Types.Scripts , ValidatorHash ) import Ctl.Internal.Types.TypedValidator (TypedValidator(TypedValidator)) -import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) -- | Helpers for `PlutusScript` and `ScriptHash` newtype wrappers, separate from @@ -99,5 +102,10 @@ nativeScriptStakeValidatorHash nativeScriptStakeValidatorHash = unwrap >>> nativeScriptHash >>> unwrap >>> wrap -- | Converts a `MintingPolicy` to a `CurrencySymbol`. -scriptCurrencySymbol :: MintingPolicy -> Maybe CurrencySymbol -scriptCurrencySymbol = mpsSymbol <<< mintingPolicyHash +scriptCurrencySymbol :: MintingPolicy -> CurrencySymbol +scriptCurrencySymbol = mkCurrencySymbolUnsafe + <<< unwrap + <<< scriptHashToBytes + <<< unwrap + <<< + mintingPolicyHash diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 5a6f8583c..fb1c425d8 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -597,7 +597,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - cs <- liftContractM "Cannot get cs" $ Value.scriptCurrencySymbol mp + let cs = Value.scriptCurrencySymbol mp tn <- liftContractM "Cannot make token name" $ Value.mkTokenName =<< byteArrayFromAscii "TheToken" @@ -1374,7 +1374,7 @@ suite = do pure $ pkh /\ stakePkh mp <- alwaysMintsPolicy - cs <- liftContractM "Cannot get cs" $ Value.scriptCurrencySymbol mp + let cs = Value.scriptCurrencySymbol mp tn <- liftContractM "Cannot make token name" $ byteArrayFromAscii "TheToken" >>= Value.mkTokenName let asset = Value.singleton cs tn $ BigInt.fromInt 50 @@ -1650,7 +1650,7 @@ suite = do logInfo' $ "wUtxos0 " <> show wUtxos0 mp <- alwaysMintsPolicyV2 - cs <- liftContractM "Cannot get cs" $ Value.scriptCurrencySymbol mp + let cs = Value.scriptCurrencySymbol mp tn <- liftContractM "Cannot make token name" $ byteArrayFromAscii "TheToken" >>= Value.mkTokenName From 810790095ac32efa95035e96467a4b6d00b0f9c8 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 26 Sep 2023 12:22:23 +1300 Subject: [PATCH 309/478] Clearer Plutip sub-service failure messages --- src/Internal/Plutip/Server.purs | 52 +++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4b2e52c3d..687c37ed7 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -20,7 +20,7 @@ import Contract.Address (NetworkId(MainnetId)) import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) -import Control.Monad.Error.Class (liftEither) +import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) @@ -78,7 +78,7 @@ import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) import Data.BigInt as BigInt -import Data.Either (Either(Left), either, isLeft) +import Data.Either (Either(Left, Right), either, isLeft) import Data.Foldable (sum) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) @@ -103,7 +103,7 @@ import Effect.Aff.Retry , recovering ) import Effect.Class (liftEffect) -import Effect.Exception (error, throw) +import Effect.Exception (error, message, throw) import Effect.Ref (Ref) import Effect.Ref as Ref import Mote (bracket) as Mote @@ -270,19 +270,39 @@ startPlutipContractEnv , clearLogs :: Aff Unit } startPlutipContractEnv plutipCfg distr cleanupRef = do - configCheck plutipCfg - startPlutipServer' - ourKey /\ response <- startPlutipCluster' - startOgmios' response - startKupo' response - { env, printLogs, clearLogs } <- mkContractEnv' - wallets <- mkWallets' env ourKey response - pure - { env - , wallets - , printLogs - , clearLogs - } + configChecked <- try (configCheck plutipCfg) + case configChecked of + Left err -> throwError $ error $ "Config check failed: " <> message err + Right _ -> do + serverStarted <- try startPlutipServer' + case serverStarted of + Left err -> throwError $ error $ "Could not start Plutip server: " <> + message err + Right _ -> do + clusterStarted <- try startPlutipCluster' + case clusterStarted of + Left err -> throwError $ error $ "Could not start Plutip cluster: " + <> message err + Right (ourKey /\ response) -> do + ogmiosStarted <- try (startOgmios' response) + case ogmiosStarted of + Left err -> throwError $ error $ "Could not start Ogmios: " <> + message err + Right _ -> do + kupoStarted <- try (startKupo' response) + case kupoStarted of + Left err -> throwError $ error $ "Could not start Kupo: " <> + message err + Right _ -> do + { env, printLogs, clearLogs } <- + mkContractEnv' + wallets <- mkWallets' env ourKey response + pure + { env + , wallets + , printLogs + , clearLogs + } where -- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run -- later. From a3286aabf43acf301effb349e31a4f257ee34419 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 26 Sep 2023 14:51:27 +0400 Subject: [PATCH 310/478] Fixup --- examples/ChangeGeneration.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 9e74a9822..7f38681c1 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -47,14 +47,14 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = vhash = validatorHash validator value = Value.lovelaceValueOf $ BigInt.fromInt 1000001 - constraintsToSelf :: TxConstraints Unit Unit + constraintsToSelf :: TxConstraints constraintsToSelf = fold <<< take outputsToSelf <<< fold $ replicate outputsToSelf $ zip pkhs skhs <#> \(Tuple pkh mbSkh) -> case mbSkh of Nothing -> Constraints.mustPayToPubKey pkh value Just skh -> Constraints.mustPayToPubKeyAddress pkh skh value - constraintsToScripts :: TxConstraints Unit Unit + constraintsToScripts :: TxConstraints constraintsToScripts = fold $ replicate outputsToScript $ Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness @@ -62,7 +62,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = constraints = constraintsToSelf <> constraintsToScripts - lookups :: Lookups.ScriptLookups PlutusData + lookups :: Lookups.ScriptLookups lookups = mempty unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints balancedTx <- liftedE $ balanceTxWithConstraints unbalancedTx From 08baebd531d4a89b0dca501d3b168cdde494f70e Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 27 Sep 2023 07:54:33 +1300 Subject: [PATCH 311/478] Remove mkCurrencySymbolUnsafe, use constructor instead --- src/Internal/Plutus/Types/CurrencySymbol.purs | 7 +------ src/Internal/Scripts.purs | 6 ++---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/Internal/Plutus/Types/CurrencySymbol.purs b/src/Internal/Plutus/Types/CurrencySymbol.purs index b3d8d121d..3bc9af231 100644 --- a/src/Internal/Plutus/Types/CurrencySymbol.purs +++ b/src/Internal/Plutus/Types/CurrencySymbol.purs @@ -1,10 +1,9 @@ module Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol + ( CurrencySymbol(CurrencySymbol) , adaSymbol , currencyMPSHash , getCurrencySymbol , mkCurrencySymbol - , mkCurrencySymbolUnsafe , mpsSymbol , scriptHashAsCurrencySymbol ) where @@ -99,10 +98,6 @@ mkCurrencySymbol byteArr | otherwise = scriptHashFromBytes byteArr $> CurrencySymbol byteArr --- | Bypasses the usual checks of mkCurrencySymbol: use with extreme care! -mkCurrencySymbolUnsafe :: ByteArray -> CurrencySymbol -mkCurrencySymbolUnsafe = CurrencySymbol - -------------------------------------------------------------------------------- -- Internal -------------------------------------------------------------------------------- diff --git a/src/Internal/Scripts.purs b/src/Internal/Scripts.purs index 0411c98b3..187fcb588 100644 --- a/src/Internal/Scripts.purs +++ b/src/Internal/Scripts.purs @@ -14,8 +14,7 @@ import Prelude import Ctl.Internal.Hashing (plutusScriptHash) import Ctl.Internal.NativeScripts (NativeScriptHash, nativeScriptHash) import Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol - , mkCurrencySymbolUnsafe + ( CurrencySymbol(CurrencySymbol) ) import Ctl.Internal.Serialization.Address ( Address @@ -36,7 +35,6 @@ import Ctl.Internal.Types.Scripts , Validator , ValidatorHash ) -import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) -- | Helpers for `PlutusScript` and `ScriptHash` newtype wrappers, separate from @@ -86,7 +84,7 @@ nativeScriptStakeValidatorHash = unwrap >>> nativeScriptHash >>> unwrap >>> wrap -- | Converts a `MintingPolicy` to a `CurrencySymbol`. scriptCurrencySymbol :: MintingPolicy -> CurrencySymbol -scriptCurrencySymbol = mkCurrencySymbolUnsafe +scriptCurrencySymbol = CurrencySymbol <<< unwrap <<< scriptHashToBytes <<< unwrap From 94c800ef4cb7265283685827fae5c0920d8e1198 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 27 Sep 2023 09:32:07 +1300 Subject: [PATCH 312/478] Reduce nesting using helper, remove additional checks on config --- src/Internal/Plutip/Server.purs | 58 ++++++++++++++------------------- 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index e399f2691..d1f1b5610 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -270,40 +270,32 @@ startPlutipContractEnv , clearLogs :: Aff Unit } startPlutipContractEnv plutipCfg distr cleanupRef = do - configChecked <- try (configCheck plutipCfg) - case configChecked of - Left err -> throwError $ error $ "Config check failed: " <> message err - Right _ -> do - serverStarted <- try startPlutipServer' - case serverStarted of - Left err -> throwError $ error $ "Could not start Plutip server: " <> - message err - Right _ -> do - clusterStarted <- try startPlutipCluster' - case clusterStarted of - Left err -> throwError $ error $ "Could not start Plutip cluster: " - <> message err - Right (ourKey /\ response) -> do - ogmiosStarted <- try (startOgmios' response) - case ogmiosStarted of - Left err -> throwError $ error $ "Could not start Ogmios: " <> - message err - Right _ -> do - kupoStarted <- try (startKupo' response) - case kupoStarted of - Left err -> throwError $ error $ "Could not start Kupo: " <> - message err - Right _ -> do - { env, printLogs, clearLogs } <- - mkContractEnv' - wallets <- mkWallets' env ourKey response - pure - { env - , wallets - , printLogs - , clearLogs - } + configCheck plutipCfg + tryWithReport startPlutipServer' "Could not start Plutip server" + (ourKey /\ response) <- tryWithReport startPlutipCluster' + "Could not start Plutip cluster" + tryWithReport (startOgmios' response) "Could not start Ogmios" + tryWithReport (startKupo' response) "Could not start Kupo" + { env, printLogs, clearLogs } <- mkContractEnv' + wallets <- mkWallets' env ourKey response + pure + { env + , wallets + , printLogs + , clearLogs + } where + tryWithReport + :: forall (a :: Type) + . Aff a + -> String + -> Aff a + tryWithReport what prefix = do + result <- try what + case result of + Left err -> throwError $ error $ prefix <> ": " <> message err + Right result' -> pure result' + -- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run -- later. bracket From cbe0eca3449039c0433f2fdd0e62535f7efbedf2 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 27 Sep 2023 11:21:00 +1300 Subject: [PATCH 313/478] Rename error around Ogmios balance --- src/Internal/BalanceTx/Error.purs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d4678387f..739b9ec78 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -230,7 +230,9 @@ printTxEvaluationFailure transaction e = Ogmios.UnknownInputReferencedByRedeemer txIn -> line ("Unknown input referenced by redeemer: " <> show txIn) Ogmios.NonScriptInputReferencedByRedeemer txIn -> line - ("Non script input referenced by redeemer: " <> show txIn) + ( "Non-script input, or input without datum, referenced by redeemer: " <> + show txIn + ) Ogmios.IllFormedExecutionBudget Nothing -> line ("Ill formed execution budget: Execution budget missing") Ogmios.IllFormedExecutionBudget (Just { memory, steps }) -> From 5c99ac01a2a0f4754f2c83756d3fe277668e45a8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 27 Sep 2023 20:48:19 +0400 Subject: [PATCH 314/478] Add tests for mustUseCollateralUtxos --- test/Plutip/Contract.purs | 90 +++++++++++++++++++++++++++------------ 1 file changed, 62 insertions(+), 28 deletions(-) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index e8e8d9b46..fbf81645d 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -39,7 +39,7 @@ import Contract.PlutusData , getDatumsByHashesWithErrors , unitRedeemer ) -import Contract.Prelude (mconcat) +import Contract.Prelude (liftM, mconcat) import Contract.Prim.ByteArray ( byteArrayFromAscii , hexToByteArrayUnsafe @@ -171,9 +171,8 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) -import Effect.Console as Console -import Effect.Exception (throw) -import Mote (group, only, skip, test) +import Effect.Exception (error, throw) +import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -272,8 +271,8 @@ suite = do withWallets distribution \_ → pure unit - only $ group "Contract interface" do - only $ test + group "Contract interface" do + test "mustUseCollateralUtxos should not fail if enough UTxOs are provided" do let @@ -285,18 +284,36 @@ suite = do bobsCollateral <- withKeyWallet bob do fromMaybe Map.empty <$> getWalletUtxos withKeyWallet alice do - pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeyHashes - stakePkh <- join <<< head <$> withKeyWallet alice - ownStakePubKeyHashes + + validator <- AlwaysSucceeds.alwaysSucceedsScript + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- AlwaysSucceeds.payToAlwaysSucceeds vhash + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + let - constraints :: Constraints.TxConstraints Void Void - constraints = mustPayToPubKeyStakeAddress pkh stakePkh - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + scriptAddress = scriptHashAddress vhash Nothing + utxos <- utxosAt scriptAddress + txInput <- + liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + (view _input <$> head (lookupTxHash txId utxos)) + let + lookups :: Lookups.ScriptLookups PlutusData + lookups = Lookups.validator validator + <> Lookups.unspentOutputs utxos + + constraints :: TxConstraints Unit Unit + constraints = + Constraints.mustSpendScriptOutput txInput unitRedeemer - lookups :: Lookups.ScriptLookups Void - lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints res <- ( balanceTxWithConstraints ubTx @@ -304,7 +321,7 @@ suite = do ) res `shouldSatisfy` isRight - only $ test + test "mustUseCollateralUtxos should fail if not enough UTxOs are provided" do let @@ -314,24 +331,41 @@ suite = do ] withWallets someUtxos \alice -> do withKeyWallet alice do - pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeyHashes - stakePkh <- join <<< head <$> withKeyWallet alice - ownStakePubKeyHashes + + validator <- AlwaysSucceeds.alwaysSucceedsScript + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- AlwaysSucceeds.payToAlwaysSucceeds vhash + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + let - constraints :: Constraints.TxConstraints Void Void - constraints = mustPayToPubKeyStakeAddress pkh stakePkh - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + scriptAddress = scriptHashAddress vhash Nothing + utxos <- utxosAt scriptAddress + txInput <- + liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + (view _input <$> head (lookupTxHash txId utxos)) + let + lookups :: Lookups.ScriptLookups PlutusData + lookups = Lookups.validator validator + <> Lookups.unspentOutputs utxos + + constraints :: TxConstraints Unit Unit + constraints = + Constraints.mustSpendScriptOutput txInput unitRedeemer - lookups :: Lookups.ScriptLookups Void - lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints res <- ( balanceTxWithConstraints ubTx $ mustUseCollateralUtxos Map.empty ) - liftEffect $ Console.log $ show $ res res `shouldSatisfy` case _ of Left InsufficientCollateralUtxos -> true _ -> false From 8b99e2894128a630de965380b3735fb635cc8d94 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Thu, 28 Sep 2023 10:36:04 +1300 Subject: [PATCH 315/478] New interface for era and time intervals --- CHANGELOG.md | 3 ++ src/Contract/Time.purs | 82 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 77 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9743d7070..87748134e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +- `Contract.Time.currentEra` and `Contract.Time.mkTimeRangeWithinSummary`, + providing an improved interface for eras and time ranges + ([#1542](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1542)). - Added `extraSources` and `data` features to CTL's Nix build function ([#1516](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1516)) - Added several `Ring`-like numeric instances for `Coin` ([#1485](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1485)) - Added `ToData` and `FromData` instances for `PoolPubKeyHash` ([#1483](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1483)) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index deae988fa..4350b4fdc 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -3,7 +3,10 @@ module Contract.Time ( getCurrentEpoch , getEraSummaries , getSystemStart + , currentEra + , mkTimeRangeWithinSummary , module Chain + , module TipChain , module ExportEraSummaries , module ExportOgmios , module ExportSystemStart @@ -13,15 +16,12 @@ module Contract.Time import Prelude -import Contract.Chain - ( BlockHeaderHash(BlockHeaderHash) - , ChainTip(ChainTip) - , Tip(Tip, TipAtGenesis) - , getTip - ) as Chain -import Contract.Monad (Contract, liftedE) +import Contract.Chain (getTip) as TipChain +import Contract.Log (logInfo') +import Contract.Monad (Contract, liftContractM, liftedE) import Control.Monad.Reader.Class (asks) import Ctl.Internal.Cardano.Types.Transaction (Epoch(Epoch)) +import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.QueryM.Ogmios (CurrentEpoch(CurrentEpoch)) @@ -30,6 +30,12 @@ import Ctl.Internal.QueryM.Ogmios , OgmiosEraSummaries(OgmiosEraSummaries) ) as ExportOgmios import Ctl.Internal.Serialization.Address (BlockId(BlockId), Slot(Slot)) as SerializationAddress +import Ctl.Internal.Serialization.Address (Slot) +import Ctl.Internal.Types.Chain + ( BlockHeaderHash(BlockHeaderHash) + , ChainTip(ChainTip) + , Tip(TipAtGenesis, Tip) + ) as Chain import Ctl.Internal.Types.EraSummaries ( EpochLength(EpochLength) , EraSummaries(EraSummaries) @@ -44,7 +50,7 @@ import Ctl.Internal.Types.Interval ( AbsTime(AbsTime) , Closure , Extended(NegInf, Finite, PosInf) - , Interval + , Interval(FiniteInterval) , LowerBound(LowerBound) , ModTime(ModTime) , OnchainPOSIXTimeRange(OnchainPOSIXTimeRange) @@ -98,10 +104,70 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) as ExportSystemStart import Data.BigInt as BigInt +import Data.Foldable (find) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) import Data.UInt as UInt +import Effect.Aff (delay) import Effect.Aff.Class (liftAff) import Effect.Exception (error) +-- | Get a summary of the current era. +currentEra :: Contract ExportEraSummaries.EraSummary +currentEra = do + eraSummaries <- getEraSummaries + currentSlot <- getCurrentSlot + logInfo' $ show eraSummaries + logInfo' $ show currentSlot + -- Assumes that eras are sorted: this may not be stable in the future. + liftContractM "Could not find era summary" + $ find (go currentSlot) + $ unwrap eraSummaries + where + go :: Slot -> ExportEraSummaries.EraSummary -> Boolean + go currentSlot era = + let + eraStartSlot = era # unwrap # _.start # unwrap # _.slot + startNotAfterUs = eraStartSlot <= currentSlot + in + case era # unwrap # _.end of + Nothing -> startNotAfterUs + Just eraEnd -> startNotAfterUs && + ( (eraEnd # unwrap # _.slot) > + currentSlot + ) + + getCurrentSlot :: Contract Slot + getCurrentSlot = do + { delay: delayMs } <- asks $ _.timeParams >>> _.awaitTxConfirmed + getChainTip >>= case _ of + Chain.TipAtGenesis -> do + liftAff $ delay delayMs + getCurrentSlot + Chain.Tip (Chain.ChainTip { slot }) -> pure slot + +-- | Given a desired range, tighten it to fit onchain. +mkTimeRangeWithinSummary + :: Interval.Interval Interval.POSIXTime + -> Contract (Interval.Interval Interval.POSIXTime) +mkTimeRangeWithinSummary = case _ of + desired@(Interval.FiniteInterval start end) -> do + era <- currentEra + let params = unwrap (unwrap era).parameters + slotLength <- liftContractM "Could not get slot length" $ BigInt.fromNumber + $ unwrap params.slotLength + let offset = unwrap params.safeZone + slotLength + let endTime = start + Interval.POSIXTime offset + let oneSecond = Interval.POSIXTime $ BigInt.fromInt 1_000 + let + range = Interval.FiniteInterval (start + oneSecond) + (min end (endTime - oneSecond)) + logInfo' $ "Desired range: " <> show desired + logInfo' $ "Computed range: " <> show range + pure range + i -> liftContractM ("Could not convert to start-end range: " <> show i) + Nothing + -- | Get the current Epoch. getCurrentEpoch :: Contract Epoch getCurrentEpoch = do From d995f3a838e358b494b84d64182f6767a6e26319 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 28 Sep 2023 15:39:03 +0200 Subject: [PATCH 316/478] Apply suggestions --- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 27 ++++++++++---------- src/Internal/QueryM/Ogmios.purs | 19 ++------------ 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 964ddc89e..a5f3040fc 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -84,30 +84,31 @@ evalTxExecutionUnits tx = do networkId <- askNetworkId additionalUtxos <- fromPlutusUtxoMap networkId <$> asksConstraints Constraints._additionalUtxos - worker additionalUtxos + worker $ toOgmiosAdditionalUtxos additionalUtxos where - worker :: UtxoMap -> BalanceTxM Ogmios.TxEvaluationResult + toOgmiosAdditionalUtxos :: UtxoMap -> Ogmios.AdditionalUtxoSet + toOgmiosAdditionalUtxos additionalUtxos = + wrap $ Map.fromFoldable + ( bimap transactionInputToTxOutRef transactionOutputToOgmiosTxOut + <$> (Map.toUnfoldable :: _ -> Array _) additionalUtxos + ) + + worker :: Ogmios.AdditionalUtxoSet -> BalanceTxM Ogmios.TxEvaluationResult worker additionalUtxos = do queryHandle <- liftContract getQueryHandle evalResult <- unwrap <$> liftContract - (liftAff $ queryHandle.evaluateTx tx ogmiosAdditionalUtxos) + (liftAff $ queryHandle.evaluateTx tx additionalUtxos) case evalResult of Right a -> pure a Left (Ogmios.AdditionalUtxoOverlap overlappingUtxos) -> -- Remove overlapping additional utxos and retry evaluation: - worker $ Map.filterKeys (flip Array.notElem overlappingUtxos) - additionalUtxos + worker $ wrap $ Map.filterKeys (flip Array.notElem overlappingUtxos) + (unwrap additionalUtxos) Left evalFailure | tx ^. _isValid -> throwError $ ExUnitsEvaluationFailed tx evalFailure - Left _ -> pure $ wrap Map.empty - where - ogmiosAdditionalUtxos :: Ogmios.AdditionalUtxoSet - ogmiosAdditionalUtxos = - wrap $ Map.fromFoldable - ( bimap transactionInputToTxOutRef transactionOutputToOgmiosTxOut - <$> (Map.toUnfoldable :: _ -> Array _) additionalUtxos - ) + Left _ -> + pure $ wrap Map.empty -- Calculates the execution units needed for each script in the transaction -- and the minimum fee, including the script fees. diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 188953674..2f2a898eb 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -773,7 +773,7 @@ instance Show ScriptFailure where -- CannotCreateEvaluationContext data TxEvaluationFailure = UnparsedError String - | AdditionalUtxoOverlap (Array TransactionInput) + | AdditionalUtxoOverlap (Array OgmiosTxOutRef) | ScriptFailures (Map RedeemerPointer (Array ScriptFailure)) derive instance Generic TxEvaluationFailure _ @@ -873,22 +873,7 @@ instance DecodeAeson TxEvaluationFailure where decodeAdditionalUtxoOverlap = ReaderT \o -> do ogmiosOrefs <- flip getField "AdditionalUtxoOverlap" =<< getField o "EvaluationFailure" - orefs <- - note orefConversionError $ - traverse ogmiosOrefToTransactionInput ogmiosOrefs - pure $ AdditionalUtxoOverlap orefs - where - orefConversionError :: JsonDecodeError - orefConversionError = - TypeMismatch "Could not convert OgmiosTxOutRef to TransactionInput" - - ogmiosOrefToTransactionInput :: OgmiosTxOutRef -> Maybe TransactionInput - ogmiosOrefToTransactionInput { txId, index } = - hexToByteArray txId <#> \transactionId -> - wrap - { transactionId: wrap transactionId - , index - } + pure $ AdditionalUtxoOverlap ogmiosOrefs ---------------- PROTOCOL PARAMETERS QUERY RESPONSE & PARSING From 9c762512e4be2effe12c918fb3ed4aa338e741fa Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 28 Sep 2023 16:16:50 +0200 Subject: [PATCH 317/478] Fix warnings --- src/Internal/QueryM/Ogmios.purs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2f2a898eb..6058faa20 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -180,7 +180,6 @@ import Ctl.Internal.Types.SystemStart , sysStartToOgmiosTimestamp ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) -import Ctl.Internal.Types.Transaction (TransactionInput) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array From fda55a10bfcd30907a0065421d0002ec39f0141f Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 29 Sep 2023 07:24:29 +1300 Subject: [PATCH 318/478] Rename new era and time interval functions --- CHANGELOG.md | 2 +- src/Contract/Time.purs | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87748134e..c1cfb1dc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,7 +56,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- `Contract.Time.currentEra` and `Contract.Time.mkTimeRangeWithinSummary`, +- `Contract.Time.getCurrentEra` and `Contract.Time.normalizeTimeInterval`, providing an improved interface for eras and time ranges ([#1542](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1542)). - Added `extraSources` and `data` features to CTL's Nix build function ([#1516](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1516)) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 4350b4fdc..e7350baa9 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -3,8 +3,8 @@ module Contract.Time ( getCurrentEpoch , getEraSummaries , getSystemStart - , currentEra - , mkTimeRangeWithinSummary + , getCurrentEra + , normalizeTimeInterval , module Chain , module TipChain , module ExportEraSummaries @@ -113,19 +113,19 @@ import Effect.Aff.Class (liftAff) import Effect.Exception (error) -- | Get a summary of the current era. -currentEra :: Contract ExportEraSummaries.EraSummary -currentEra = do +getCurrentEra :: Contract ExportEraSummaries.EraSummary +getCurrentEra = do eraSummaries <- getEraSummaries currentSlot <- getCurrentSlot logInfo' $ show eraSummaries logInfo' $ show currentSlot -- Assumes that eras are sorted: this may not be stable in the future. liftContractM "Could not find era summary" - $ find (go currentSlot) + $ find (slotInRange currentSlot) $ unwrap eraSummaries where - go :: Slot -> ExportEraSummaries.EraSummary -> Boolean - go currentSlot era = + slotInRange :: Slot -> ExportEraSummaries.EraSummary -> Boolean + slotInRange currentSlot era = let eraStartSlot = era # unwrap # _.start # unwrap # _.slot startNotAfterUs = eraStartSlot <= currentSlot @@ -147,12 +147,12 @@ currentEra = do Chain.Tip (Chain.ChainTip { slot }) -> pure slot -- | Given a desired range, tighten it to fit onchain. -mkTimeRangeWithinSummary +normalizeTimeInterval :: Interval.Interval Interval.POSIXTime -> Contract (Interval.Interval Interval.POSIXTime) -mkTimeRangeWithinSummary = case _ of +normalizeTimeInterval = case _ of desired@(Interval.FiniteInterval start end) -> do - era <- currentEra + era <- getCurrentEra let params = unwrap (unwrap era).parameters slotLength <- liftContractM "Could not get slot length" $ BigInt.fromNumber $ unwrap params.slotLength From 9b3e68eccb03f9193c15d5a973ac73737aca2868 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 29 Sep 2023 07:35:27 +1300 Subject: [PATCH 319/478] Sort era summaries for getCurrentEra --- src/Contract/Time.purs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index e7350baa9..9c56f6351 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -103,6 +103,7 @@ import Ctl.Internal.Types.Interval ) as Interval import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) as ExportSystemStart +import Data.Array as Array import Data.BigInt as BigInt import Data.Foldable (find) import Data.Maybe (Maybe(Just, Nothing)) @@ -119,15 +120,18 @@ getCurrentEra = do currentSlot <- getCurrentSlot logInfo' $ show eraSummaries logInfo' $ show currentSlot - -- Assumes that eras are sorted: this may not be stable in the future. liftContractM "Could not find era summary" $ find (slotInRange currentSlot) + $ Array.sortBy (comparing getStartSlot) $ unwrap eraSummaries where + getStartSlot :: ExportEraSummaries.EraSummary -> Slot + getStartSlot = unwrap >>> _.start >>> unwrap >>> _.slot + slotInRange :: Slot -> ExportEraSummaries.EraSummary -> Boolean slotInRange currentSlot era = let - eraStartSlot = era # unwrap # _.start # unwrap # _.slot + eraStartSlot = getStartSlot era startNotAfterUs = eraStartSlot <= currentSlot in case era # unwrap # _.end of From b59f345113d547dbe4a6dd6ea29e8533a7cb337d Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 29 Sep 2023 07:37:07 +1300 Subject: [PATCH 320/478] Ensure functions log their names as well --- src/Contract/Time.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 9c56f6351..256310acc 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -118,8 +118,8 @@ getCurrentEra :: Contract ExportEraSummaries.EraSummary getCurrentEra = do eraSummaries <- getEraSummaries currentSlot <- getCurrentSlot - logInfo' $ show eraSummaries - logInfo' $ show currentSlot + logInfo' $ "getCurrentEra: " <> show eraSummaries + logInfo' $ "getCurrentEra: " <> show currentSlot liftContractM "Could not find era summary" $ find (slotInRange currentSlot) $ Array.sortBy (comparing getStartSlot) @@ -166,8 +166,8 @@ normalizeTimeInterval = case _ of let range = Interval.FiniteInterval (start + oneSecond) (min end (endTime - oneSecond)) - logInfo' $ "Desired range: " <> show desired - logInfo' $ "Computed range: " <> show range + logInfo' $ "normalizeTimeInterval: desired range: " <> show desired + logInfo' $ "normalizeTimeInterval: computed range: " <> show range pure range i -> liftContractM ("Could not convert to start-end range: " <> show i) Nothing From 13b618a2a040dd1d5d67bf00ef90e085238b0577 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 29 Sep 2023 09:41:21 +1300 Subject: [PATCH 321/478] Better error output for MkUnbalancedTxError --- CHANGELOG.md | 1 + src/Contract/UnbalancedTx.purs | 76 +++++++++++++++++++++++++++++++- src/Internal/Transaction.purs | 7 +++ src/Internal/Types/Interval.purs | 20 +++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9743d7070..6441aaeec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed +- Expose `ValidatorHashNotFound` constructor of `MkUnbalancedTxError`. - `scriptCurrencySymbol` no longer returns `Maybe` ([#1538](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1538) - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 4f4a6851e..750629239 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -3,12 +3,15 @@ module Contract.UnbalancedTx ( mkUnbalancedTx , mkUnbalancedTxM + , mkUnbalancedTxE + , explainMkUnbalancedTxError , module X ) where import Prelude import Contract.Monad (Contract) +import Control.Monad.Error.Class (throwError) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError @@ -38,6 +41,7 @@ import Ctl.Internal.ProcessConstraints.Error , TxOutRefNotFound , TxOutRefWrongType , WrongRefScriptHash + , ValidatorHashNotFound , CannotSatisfyAny , ExpectedPlutusScriptGotNativeScript , CannotMintZero @@ -45,22 +49,92 @@ import Ctl.Internal.ProcessConstraints.Error ) as X import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X +import Ctl.Internal.Transaction (explainModifyTxError) +import Ctl.Internal.Types.Interval (explainPosixTimeToSlotError) import Ctl.Internal.Types.ScriptLookups ( ScriptLookups ) import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Data.Either (Either, hush) +import Data.Either (Either(Left, Right), hush) import Data.Maybe (Maybe) +import Effect.Exception (error) -- | Create an `UnbalancedTx` given `ScriptLookups` and -- | `TxConstraints`. This should be called in conjuction with -- | `balanceTx` and `signTransaction`. +-- | +-- | This is a 'non-throwing' variant; use this when failure is expected, and +-- | can be handled gracefully. mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx = PC.mkUnbalancedTxImpl +-- | As `mkUnbalancedTx`, but 'throwing'; use this when failure is _not_ +-- | expected, and graceful handling is either impossible, or wouldn't make +-- | sense. +mkUnbalancedTxE :: ScriptLookups -> TxConstraints -> Contract UnbalancedTx +mkUnbalancedTxE lookups constraints = + mkUnbalancedTx lookups constraints >>= case _ of + Left err -> throwError $ error $ explainMkUnbalancedTxError err + Right res -> pure res + +-- | Helper to pretty-print `MkUnbalancedTxError`s. +explainMkUnbalancedTxError :: MkUnbalancedTxError -> String +explainMkUnbalancedTxError = case _ of + X.CannotConvertPaymentPubKeyHash ppkh -> + "Cannot convert payment pubkey hash: " <> show ppkh + X.CannotFindDatum -> "Cannot find datum." + X.CannotQueryDatum dh -> "Cannot query datum: " <> show dh + X.CannotConvertPOSIXTimeRange tr ttsErr -> + "Cannot convert POSIX time range: " <> show tr <> "\nReason: " <> + explainPosixTimeToSlotError ttsErr + X.CannotSolveTimeConstraints tr tr' -> + "Unsolvable time constraints: " <> show tr <> " and " <> show tr' <> + " do not overlap." + X.CannotGetMintingPolicyScriptIndex -> + "Cannot get minting policy script index. This should be impossible." + X.CannotGetValidatorHashFromAddress addr -> + "Cannot get a validator hash from address " <> show addr + X.CannotHashDatum datum -> + "Cannot hash datum: " <> show datum + X.CannotHashMintingPolicy mp -> + "Cannot hash minting policy: " <> show mp + X.CannotHashValidator validator -> + "Cannot hash validator: " <> show validator + X.CannotMakeValue cs tn amount -> + "Cannot make " <> show amount <> " of token " <> show tn <> " of currency " + <> show cs + X.CannotWithdrawRewardsPubKey spkh -> + "Cannot withdraw rewards from staking pubkey " <> show spkh + X.CannotWithdrawRewardsPlutusScript pssv -> + "Cannot withdraw rewards from Plutus staking script " <> show pssv + X.CannotWithdrawRewardsNativeScript nssv -> + "Cannot withdraw rewards from native staking script " <> show nssv + X.DatumNotFound hash -> "Datum with hash " <> show hash <> " not found." + X.DatumWrongHash hash datum -> "Datum " <> show datum + <> " does not have the hash " + <> show hash + X.MintingPolicyHashNotCurrencySymbol mph -> + "Minting policy hash " <> show mph <> + " is not the hash of a CurrencySymbol." + X.MintingPolicyNotFound mp -> "Minting policy not found: " <> show mp + X.ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr + X.OwnPubKeyAndStakeKeyMissing -> "Own pubkey and staking key is missing." + X.TxOutRefNotFound ti -> "Cannot find transaction input: " <> show ti + X.TxOutRefWrongType ti -> + "Transaction input is missing an expected datum: " <> show ti + X.ValidatorHashNotFound vh -> "Cannot find validator hash: " <> show vh + X.WrongRefScriptHash msh -> + "Output is missing a reference script hash: " <> show msh + X.CannotSatisfyAny -> "List of constraints is empty." + X.ExpectedPlutusScriptGotNativeScript mph -> + "Expected a Plutus script, but " <> show mph <> "is a native script." + X.CannotMintZero cs tn -> "Cannot mint zero of token " <> show tn + <> " of currency " + <> show cs + -- | Same as `mkUnbalancedTx` but hushes the error. -- TODO: remove, reason: it's trivial -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1047 diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index ca24229cf..f6c96c525 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -5,6 +5,7 @@ module Ctl.Internal.Transaction , attachPlutusScript , attachNativeScript , setScriptDataHash + , explainModifyTxError ) where import Prelude @@ -49,6 +50,12 @@ derive instance Eq ModifyTxError instance Show ModifyTxError where show = genericShow +-- | Helper for showing `ModifyTxError` in a human-readable way. +explainModifyTxError :: ModifyTxError -> String +explainModifyTxError = case _ of + ConvertWitnessesError -> "Could not convert witnesses." + ConvertDatumError -> "Could not convert datum." + -- | Set the `Transaction` body's script data hash. NOTE: Must include *all* of -- | the datums and redeemers for the given transaction setScriptDataHash diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 6f13edd7c..b1573270d 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -50,6 +50,7 @@ module Ctl.Internal.Types.Interval , posixTimeRangeToSlotRange , posixTimeRangeToTransactionValidity , posixTimeToSlot + , explainPosixTimeToSlotError , singleton , slotRangeToPosixTimeRange , slotToPosixTime @@ -861,6 +862,25 @@ derive instance Eq PosixTimeToSlotError instance Show PosixTimeToSlotError where show = genericShow +explainPosixTimeToSlotError :: PosixTimeToSlotError -> String +explainPosixTimeToSlotError = case _ of + CannotFindTimeInEraSummaries atime -> + "Time " <> show atime <> " is not in era summaries." + PosixTimeBeforeSystemStart t -> + "Time " <> show t <> " is before the system start." + StartTimeGreaterThanTime atime -> + "Time " <> show atime <> " is before the era start time." + EndSlotLessThanSlotOrModNonZero slot mtime -> + "Time is after the era end time. Calculated slot: " <> show slot + <> ", calculated residual time after end: " + <> show mtime + CannotGetBigIntFromNumber' -> + "Internal error: cannot convert a time to a usable value. " <> + "This should be impossible." + CannotGetBigNumFromBigInt' -> + "Internal error: cannot convert a slot number to a usable value. " <> + "This should be impossible." + posixTimeToSlotErrorStr :: String posixTimeToSlotErrorStr = "posixTimeToSlotError" From 0bdd178ec7ab505c9f9f9ce6572a27c41656907f Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 29 Sep 2023 11:26:24 +1300 Subject: [PATCH 322/478] Better error messages for balanceTx and related functions --- CHANGELOG.md | 10 ++++++++- src/Contract/Transaction.purs | 35 ++++++++++++++++++++++++++++++- src/Internal/BalanceTx/Error.purs | 32 ++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6441aaeec..94e5a8fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +- `mkUnbalancedTxE`, as a 'throwing' version of `mkUnbalancedTx`. This version + throws an exception on failure, instead of returning in `Either` + ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `balanceTxE` and `balanceTxWithConstraintsE`, as 'throwing' versions of + `balanceTx` and `balanceTxWithConstraints`. These throw exceptions on failure, + instead of returning in `Either`. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `explainMkUnbalancedTxError` and `explainBalanceTxError`, which prettyprint + `MkUnbalancedTxError` and `BalanceTxError` for a more human-readable output. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - Added `extraSources` and `data` features to CTL's Nix build function ([#1516](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1516)) - Added several `Ring`-like numeric instances for `Coin` ([#1485](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1485)) - Added `ToData` and `FromData` instances for `PoolPubKeyHash` ([#1483](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1483)) @@ -76,7 +84,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed -- Expose `ValidatorHashNotFound` constructor of `MkUnbalancedTxError`. +- Expose `ValidatorHashNotFound` constructor of `MkUnbalancedTxError`. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `scriptCurrencySymbol` no longer returns `Maybe` ([#1538](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1538) - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 84e5492ef..d920ce57c 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -3,8 +3,10 @@ module Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) , balanceTx + , balanceTxE , balanceTxM , balanceTxWithConstraints + , balanceTxWithConstraintsE , balanceTxs , balanceTxsWithConstraints , calculateMinFee @@ -72,6 +74,7 @@ import Ctl.Internal.BalanceTx.Error , Expected(Expected) , ImpossibleError(Impossible) , InvalidInContext(InvalidInContext) + , explainBalanceTxError ) as BalanceTxError import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) import Ctl.Internal.Cardano.Types.NativeScript @@ -238,7 +241,7 @@ import Ctl.Internal.Types.VRFKeyHash import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) import Data.BigInt (BigInt) -import Data.Either (Either, hush) +import Data.Either (Either(Left, Right), hush) import Data.Foldable (foldl, length) import Data.Generic.Rep (class Generic) import Data.Lens.Getter (view) @@ -407,6 +410,9 @@ unUnbalancedTx -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. +-- | +-- | This is a 'non-throwing' variant of this functionality. Use this when +-- | errors are expected, and graceful recovery is possible. balanceTxWithConstraints :: UnbalancedTx -> BalanceTxConstraintsBuilder @@ -417,13 +423,40 @@ balanceTxWithConstraints tx = in BalanceTx.balanceTxWithConstraints tx' ix +-- | 'Throwing' variant of `balanceTxWithConstraints`. Instead of returning in +-- | `Either`, it throws an exception on failure. Use this when errors are not +-- | expected, and graceful recovery is either impossible or wouldn't make +-- | sense. +balanceTxWithConstraintsE + :: UnbalancedTx + -> BalanceTxConstraintsBuilder + -> Contract FinalizedTransaction +balanceTxWithConstraintsE tx bcb = do + result <- balanceTxWithConstraints tx bcb + case result of + Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err + Right ftx -> pure ftx + -- | Same as `balanceTxWithConstraints`, but uses the default balancer -- | constraints. +-- | +-- | This is a 'non-throwing' variant of this functionality. Use this when +-- | errors are expected, and graceful recovery is possible. balanceTx :: UnbalancedTx -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) balanceTx = flip balanceTxWithConstraints mempty +-- | 'Throwing' variant of `balanceTx`. Instead of returning in `Either`, it +-- | throws an exception on failure. Use this when errors are not expected, and +-- | graceful recovery is either impossible or wouldn't make sense. +balanceTxE :: UnbalancedTx -> Contract FinalizedTransaction +balanceTxE utx = do + result <- balanceTx utx + case result of + Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err + Right ftx -> pure ftx + -- | Balances each transaction using specified balancer constraint sets and -- | locks the used inputs so that they cannot be reused by subsequent -- | transactions. diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 739b9ec78..0777d8033 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -21,6 +21,7 @@ module Ctl.Internal.BalanceTx.Error , Expected(Expected) , ImpossibleError(Impossible) , printTxEvaluationFailure + , explainBalanceTxError ) where import Prelude @@ -89,6 +90,37 @@ instance Show BalanceTxError where "ExUnitsEvaluationFailed: " <> printTxEvaluationFailure tx failure show e = genericShow e +explainBalanceTxError :: BalanceTxError -> String +explainBalanceTxError = case _ of + BalanceInsufficientError expected actual ctx -> + "Insufficient balance. Expected: " <> show expected + <> ", actual: " + <> show actual + <> ". Context: " + <> show ctx + CouldNotConvertScriptOutputToTxInput -> + "Could not convert script output to transaction input." + CouldNotGetChangeAddress -> + "Could not get change address." + CouldNotGetCollateral -> "Could not get collateral." + CouldNotGetUtxos -> "Could not get UTxOs." + CollateralReturnError err -> + "Collateral return error: " <> show err + CollateralReturnMinAdaValueCalcError -> + "Could not calculate minimum Ada for collateral return." + ExUnitsEvaluationFailed tx txEvalErr -> + "Script evaluation failure. Transaction: " <> show tx + <> "Error: " + <> show txEvalErr + InsufficientUtxoBalanceToCoverAsset _ asset -> + "Insufficient UTxO balance to cover asset " <> show asset + ReindexRedeemersError uir -> + "Could not reindex redeemer " <> show uir + UtxoLookupFailedFor ti -> + "Could not look up UTxO for " <> show ti + UtxoMinAdaValueCalculationFailed -> + "Could not calculate min ADA for UTxO." + newtype Actual = Actual Value derive instance Generic Actual _ From 17156ae397377fe25e54e6a3036e8039729be797 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Mon, 2 Oct 2023 07:21:01 +1300 Subject: [PATCH 323/478] Export UseMnemonic and ConnectToGenericCip30 from Contract.Config --- CHANGELOG.md | 3 +++ src/Contract/Config.purs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9743d7070..07604d1d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,6 +100,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- `UseMnemonic` and `ConnectToGenericCip30` constructors now exported from + `Contract.Config` + ([#1546])(https://github.com/Plutonomicon/cardano-transaction-lib/pull/1546)) - `waitUntilSlot` can now be used with a slot far in the future ([#1490](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1490)) - `Unable to convert Slot to POSIXTime` error of `waitUntilSlot` doesn't omit important error details anymore ([#1458](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1458)) - Performance issues when using Eternl in multi-address mode ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 22eb6ac7a..9bf4a5dee 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -82,6 +82,7 @@ import Ctl.Internal.Wallet.Spec , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , WalletSpec ( UseKeys + , UseMnemonic , ConnectToNami , ConnectToGero , ConnectToFlint @@ -89,6 +90,7 @@ import Ctl.Internal.Wallet.Spec , ConnectToLode , ConnectToNuFi , ConnectToLace + , ConnectToGenericCip30 ) ) import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) From 84c6fa32f5c6c3e24486e32dbddf655e06069e91 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Mon, 2 Oct 2023 10:12:23 +1300 Subject: [PATCH 324/478] Remove unnecessary *M functions --- CHANGELOG.md | 2 ++ src/Contract/ScriptLookups.purs | 13 +------------ src/Contract/Transaction.purs | 10 +--------- src/Contract/UnbalancedTx.purs | 15 +-------------- 4 files changed, 5 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9743d7070..f5e6f9391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -117,6 +117,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +- `mkUnbalancedTxM` and `balanceTxM` + ([#1547](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1547)) - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 7b33c504e..f106d0afa 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -2,12 +2,9 @@ -- | transaction. module Contract.ScriptLookups ( mkUnbalancedTx - , mkUnbalancedTxM , module X ) where -import Prelude - import Contract.Monad (Contract) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error @@ -66,8 +63,7 @@ import Ctl.Internal.Types.ScriptLookups , validatorM ) as X import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Data.Either (Either, hush) -import Data.Maybe (Maybe) +import Data.Either (Either) -- | Create an `UnbalancedTx` given `ScriptLookups` and -- | `TxConstraints`. You will probably want to use this version as it returns @@ -79,10 +75,3 @@ mkUnbalancedTx -> TxConstraints -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx = PC.mkUnbalancedTxImpl - --- | Same as `mkUnbalancedTx` but hushes the error. -mkUnbalancedTxM - :: ScriptLookups - -> TxConstraints - -> Contract (Maybe UnbalancedTx) -mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 84e5492ef..6256dde89 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -3,7 +3,6 @@ module Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) , balanceTx - , balanceTxM , balanceTxWithConstraints , balanceTxs , balanceTxsWithConstraints @@ -238,13 +237,12 @@ import Ctl.Internal.Types.VRFKeyHash import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) import Data.BigInt (BigInt) -import Data.Either (Either, hush) +import Data.Either (Either) import Data.Foldable (foldl, length) import Data.Generic.Rep (class Generic) import Data.Lens.Getter (view) import Data.Map (Map) import Data.Map (empty, insert) as Map -import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.Traversable (class Traversable, for_, traverse) @@ -453,12 +451,6 @@ balanceTxs -> Contract (t FinalizedTransaction) balanceTxs = balanceTxsWithConstraints <<< map (flip Tuple mempty) --- | Attempts to balance an `UnbalancedTx` hushing the error. -balanceTxM - :: UnbalancedTx - -> Contract (Maybe FinalizedTransaction) -balanceTxM = map hush <<< balanceTx - balanceAndLockWithConstraints :: UnbalancedTx /\ BalanceTxConstraintsBuilder -> Contract FinalizedTransaction diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 4f4a6851e..7d6feee55 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -2,12 +2,9 @@ -- | transaction. module Contract.UnbalancedTx ( mkUnbalancedTx - , mkUnbalancedTxM , module X ) where -import Prelude - import Contract.Monad (Contract) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error @@ -49,8 +46,7 @@ import Ctl.Internal.Types.ScriptLookups ( ScriptLookups ) import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Data.Either (Either, hush) -import Data.Maybe (Maybe) +import Data.Either (Either) -- | Create an `UnbalancedTx` given `ScriptLookups` and -- | `TxConstraints`. This should be called in conjuction with @@ -60,12 +56,3 @@ mkUnbalancedTx -> TxConstraints -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTx = PC.mkUnbalancedTxImpl - --- | Same as `mkUnbalancedTx` but hushes the error. --- TODO: remove, reason: it's trivial --- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1047 -mkUnbalancedTxM - :: ScriptLookups - -> TxConstraints - -> Contract (Maybe UnbalancedTx) -mkUnbalancedTxM lookups = map hush <<< mkUnbalancedTx lookups From d874701e8573f4c418b76de3f3594064bf9efc60 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 2 Oct 2023 18:03:01 +0400 Subject: [PATCH 325/478] Add funding acknowledgements --- README.md | 25 +++++++++++++++++++++++++ doc/ctl-as-dependency.md | 1 + 2 files changed, 26 insertions(+) diff --git a/README.md b/README.md index 6a8fb1ab6..e96a722be 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ - [Architecture](#architecture) - [Additional resources/tools:](#additional-resourcestools) - [Available support channels info](#available-support-channels-info) +- [Funding acknowledgements](#funding-acknowledgements) +- [Use in production](#use-in-production) @@ -113,3 +115,26 @@ You can find help, more information and ongoing discusion about the project here - [Plutonomicon Discord](https://discord.gg/JhbexnV9Pc) - #ctl channel at MLabs' Slack + +## Funding acknowledgements + +CTL is being developed by MLabs. The following companies/funds have contributed significan resources to development: + +- [IOHK](https://iohk.io/en/about/) +- [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) +- [Catalyst Fund9](https://cardano.ideascale.com/c/idea/420791) +- [Catalyst Fund10](https://cardano.ideascale.com/c/idea/101478) +- [MLabs](https://mlabs.city/) +- [Indigo Protocol](https://indigoprotocol.io/) +- [Equine](https://www.equine.gg/) +- [Liqwid Labs](https://liqwid.finance/) +- [PlayerMint](https://www.playermint.com/) +- Ardana + +## Use in production + +- [Indigo Protocol](https://indigoprotocol.io/) +- [Liqwid](https://liqwid.finance/) +- [Clarity](https://clarity.community/) +- [PlayerMint](https://www.playermint.com/) +- [SingularityNet](https://singularitynet.io/) diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 4026f93a8..551e7a121 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -88,3 +88,4 @@ Make sure to perform **all** of the following steps, otherwise you **will** enco - [How to use CTL-based apps from JS](./using-from-js.md) - [Managing Contract environment correctly](./contract-environment.md) +- [Alternative setup with purs-nix instead of spago2nix](https://github.com/LovelaceAcademy/cardano-transaction-lib/tree/develop/templates/la-scaffold) From bcce9ee0b80c52aba906c54e854b5cb419521a3d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 2 Oct 2023 18:21:58 +0400 Subject: [PATCH 326/478] Ignore snet in link checker --- .mlc_config.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mlc_config.json b/.mlc_config.json index b93bc278f..b7e3f107c 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -3,6 +3,9 @@ { "pattern": "^https://gerowallet.io" }, + { + "pattern": "^https://singularitynet.io" + }, { "pattern": "^https://iohk.io" } From 5a152a856c833dccf4a5a7ccc6259a4f70483b77 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 3 Oct 2023 07:37:28 +1300 Subject: [PATCH 327/478] Remove bad re-export --- src/Contract/Time.purs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 256310acc..5c30db7ec 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -6,7 +6,6 @@ module Contract.Time , getCurrentEra , normalizeTimeInterval , module Chain - , module TipChain , module ExportEraSummaries , module ExportOgmios , module ExportSystemStart @@ -16,7 +15,7 @@ module Contract.Time import Prelude -import Contract.Chain (getTip) as TipChain +import Contract.Chain (getTip) as Chain import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM, liftedE) import Control.Monad.Reader.Class (asks) From f4b4603e4e2322892d5091074a97b2c5a80a9afa Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 3 Oct 2023 11:26:16 +1300 Subject: [PATCH 328/478] Address feedback for Contract.UnbalancedTx --- src/Contract/UnbalancedTx.purs | 127 ++++++++++++++++++++++++--------- 1 file changed, 93 insertions(+), 34 deletions(-) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 1288c788b..96c2ced80 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -15,6 +15,37 @@ import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotConvertPaymentPubKeyHash + , CannotFindDatum + , CannotQueryDatum + , CannotConvertPOSIXTimeRange + , CannotSolveTimeConstraints + , CannotGetMintingPolicyScriptIndex + , CannotGetValidatorHashFromAddress + , CannotHashDatum + , CannotHashMintingPolicy + , CannotHashValidator + , CannotMakeValue + , CannotWithdrawRewardsPubKey + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsNativeScript + , DatumNotFound + , DatumWrongHash + , MintingPolicyHashNotCurrencySymbol + , MintingPolicyNotFound + , ModifyTx + , OwnPubKeyAndStakeKeyMissing + , TxOutRefNotFound + , TxOutRefWrongType + , WrongRefScriptHash + , ValidatorHashNotFound + , CannotSatisfyAny + , ExpectedPlutusScriptGotNativeScript + , CannotMintZero + ) + ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError ( CannotConvertPaymentPubKeyHash @@ -81,54 +112,82 @@ mkUnbalancedTxE lookups constraints = -- | Helper to pretty-print `MkUnbalancedTxError`s. explainMkUnbalancedTxError :: MkUnbalancedTxError -> String explainMkUnbalancedTxError = case _ of - X.CannotConvertPaymentPubKeyHash ppkh -> + CannotConvertPaymentPubKeyHash ppkh -> "Cannot convert payment pubkey hash: " <> show ppkh - X.CannotFindDatum -> "Cannot find datum." - X.CannotQueryDatum dh -> "Cannot query datum: " <> show dh - X.CannotConvertPOSIXTimeRange tr ttsErr -> - "Cannot convert POSIX time range: " <> show tr <> "\nReason: " <> - explainPosixTimeToSlotError ttsErr - X.CannotSolveTimeConstraints tr tr' -> + CannotFindDatum -> "Cannot find datum" + CannotQueryDatum dh -> + "Querying for datum by datum hash (" + <> show dh + <> + ") failed: no datum found" + CannotConvertPOSIXTimeRange tr ttsErr -> + "Cannot convert POSIX time range to slot time range.\nRange: " + <> show tr + <> "\nReason: " + <> + explainPosixTimeToSlotError ttsErr + CannotSolveTimeConstraints tr tr' -> "Unsolvable time constraints: " <> show tr <> " and " <> show tr' <> " do not overlap." - X.CannotGetMintingPolicyScriptIndex -> - "Cannot get minting policy script index. This should be impossible." - X.CannotGetValidatorHashFromAddress addr -> + CannotGetMintingPolicyScriptIndex -> + "Cannot get minting policy script index. This should be impossible.\n" + <> "Please report this as a bug here: " + <> bugTrackerLink + CannotGetValidatorHashFromAddress addr -> "Cannot get a validator hash from address " <> show addr - X.CannotHashDatum datum -> + CannotHashDatum datum -> "Cannot hash datum: " <> show datum - X.CannotHashMintingPolicy mp -> + CannotHashMintingPolicy mp -> "Cannot hash minting policy: " <> show mp - X.CannotHashValidator validator -> + CannotHashValidator validator -> "Cannot hash validator: " <> show validator - X.CannotMakeValue cs tn amount -> - "Cannot make " <> show amount <> " of token " <> show tn <> " of currency " - <> show cs - X.CannotWithdrawRewardsPubKey spkh -> - "Cannot withdraw rewards from staking pubkey " <> show spkh - X.CannotWithdrawRewardsPlutusScript pssv -> + CannotMakeValue _ tn _ -> + "Attempted to make an amount with the ADA currency symbol, and non-empty token name " + <> show tn + <> + ". This is not allowed, as the ADA currency symbol can only be combined with the empty token name." + CannotWithdrawRewardsPubKey spkh -> + "Cannot withdraw rewards, as pubkey " <> show spkh <> " is not registered" + CannotWithdrawRewardsPlutusScript pssv -> "Cannot withdraw rewards from Plutus staking script " <> show pssv - X.CannotWithdrawRewardsNativeScript nssv -> + CannotWithdrawRewardsNativeScript nssv -> "Cannot withdraw rewards from native staking script " <> show nssv - X.DatumNotFound hash -> "Datum with hash " <> show hash <> " not found." - X.DatumWrongHash hash datum -> "Datum " <> show datum + DatumNotFound hash -> "Datum with hash " <> show hash <> " not found." + DatumWrongHash hash datum -> "Datum " <> show datum <> " does not have the hash " <> show hash - X.MintingPolicyHashNotCurrencySymbol mph -> + MintingPolicyHashNotCurrencySymbol mph -> "Minting policy hash " <> show mph <> " is not the hash of a CurrencySymbol." - X.MintingPolicyNotFound mp -> "Minting policy not found: " <> show mp - X.ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr - X.OwnPubKeyAndStakeKeyMissing -> "Own pubkey and staking key is missing." - X.TxOutRefNotFound ti -> "Cannot find transaction input: " <> show ti - X.TxOutRefWrongType ti -> - "Transaction input is missing an expected datum: " <> show ti - X.ValidatorHashNotFound vh -> "Cannot find validator hash: " <> show vh - X.WrongRefScriptHash msh -> + MintingPolicyNotFound mp -> "Minting policy not found: " <> show mp + ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr + OwnPubKeyAndStakeKeyMissing -> + "Could not build own address: both payment pubkey and stake pubkey are missing" + TxOutRefNotFound ti -> + "Could not find a reference input (" + <> show ti + <> + "). It maybe have been consumed, or was never created." + TxOutRefWrongType ti -> + "Transaction output is missing an expected datum: " + <> show ti + <> + "\nContext: we were trying to spend a script output." + ValidatorHashNotFound vh -> "Cannot find validator hash: " <> show vh + WrongRefScriptHash msh -> "Output is missing a reference script hash: " <> show msh - X.CannotSatisfyAny -> "List of constraints is empty." - X.ExpectedPlutusScriptGotNativeScript mph -> + CannotSatisfyAny -> "One of the following happened:\n" + <> "1. List of constraints is empty.\n" + <> + "2. All alternatives of a 'mustSatisfyAnyOf' have failed." + ExpectedPlutusScriptGotNativeScript mph -> "Expected a Plutus script, but " <> show mph <> "is a native script." - X.CannotMintZero cs tn -> "Cannot mint zero of token " <> show tn + CannotMintZero cs tn -> "Cannot mint zero of token " <> show tn <> " of currency " <> show cs + +-- Helpers + +bugTrackerLink :: String +bugTrackerLink = + "https://github.com/Plutonomicon/cardano-transaction-lib/issues" From 989107d820a1ecd273b978e4a3a6797adb987a1e Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 3 Oct 2023 13:43:37 +1300 Subject: [PATCH 329/478] Address feedback for BalanceTx.Error --- CHANGELOG.md | 1 + src/Contract/Transaction.purs | 1 - src/Internal/BalanceTx/CoinSelection.purs | 3 +- src/Internal/BalanceTx/Collateral.purs | 14 +++-- src/Internal/BalanceTx/Error.purs | 69 +++++++++++++---------- 5 files changed, 50 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe6003367..cb8625c84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -134,6 +134,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. +- `ImpossibleError` (as it is no longer used) ## [v5.0.0] diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 852be5b2a..009c1cbf4 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -71,7 +71,6 @@ import Ctl.Internal.BalanceTx.Error , UtxoMinAdaValueCalculationFailed ) , Expected(Expected) - , ImpossibleError(Impossible) , InvalidInContext(InvalidInContext) , explainBalanceTxError ) as BalanceTxError diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index ede499faf..7a685a562 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -29,7 +29,6 @@ import Ctl.Internal.BalanceTx.Error , InsufficientUtxoBalanceToCoverAsset ) , Expected(Expected) - , ImpossibleError(Impossible) , InvalidInContext(InvalidInContext) ) import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) @@ -356,7 +355,7 @@ runSelectionStep lens state let balanceInsufficientError :: BalanceTxError balanceInsufficientError = - InsufficientUtxoBalanceToCoverAsset Impossible lens.assetDisplayString + InsufficientUtxoBalanceToCoverAsset lens.assetDisplayString in lens.selectQuantityCover state >>= maybe (throwError balanceInsufficientError) (pure <<< Just) diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index f7eccf29e..69a173e2f 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -92,10 +92,14 @@ addTxCollateralReturn collateral transaction ownAddress = coinsPerUtxoUnit <- askCoinsPerUtxoUnit -- Calculate the required min ada value for the collateral return output: - minAdaValue <- + minAdaValue <- do + let returnAsTxOut = wrap collReturnOutputRec ExceptT $ - liftEffect (utxoMinAdaValue coinsPerUtxoUnit (wrap collReturnOutputRec)) - <#> note CollateralReturnMinAdaValueCalcError + liftEffect (utxoMinAdaValue coinsPerUtxoUnit returnAsTxOut) + <#> note + ( CollateralReturnMinAdaValueCalcError coinsPerUtxoUnit + returnAsTxOut + ) let -- Determine the actual ada value of the collateral return output: @@ -119,9 +123,7 @@ addTxCollateralReturn collateral transaction ownAddress = Right $ transaction # _body <<< _collateralReturn ?~ collReturnOutput # _body <<< _totalCollateral ?~ wrap totalCollateral - false -> - Left $ CollateralReturnError - "Negative totalCollateral after covering min-utxo-ada requirement." + false -> Left CollateralReturnError -------------------------------------------------------------------------------- -- Helpers diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 0777d8033..671155260 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -19,7 +19,6 @@ module Ctl.Internal.BalanceTx.Error , UtxoMinAdaValueCalculationFailed ) , Expected(Expected) - , ImpossibleError(Impossible) , printTxEvaluationFailure , explainBalanceTxError ) where @@ -30,6 +29,7 @@ import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) , Transaction + , TransactionOutput , _redeemers , _witnessSet ) @@ -49,6 +49,7 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationFailure(UnparsedError, ScriptFailures) ) as Ogmios import Ctl.Internal.Types.Natural (toBigInt) as Natural +import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) @@ -75,10 +76,10 @@ data BalanceTxError | CouldNotGetChangeAddress | CouldNotGetCollateral | CouldNotGetUtxos - | CollateralReturnError String - | CollateralReturnMinAdaValueCalcError + | CollateralReturnError + | CollateralReturnMinAdaValueCalcError CoinsPerUtxoUnit TransactionOutput | ExUnitsEvaluationFailed Transaction Ogmios.TxEvaluationFailure - | InsufficientUtxoBalanceToCoverAsset ImpossibleError String + | InsufficientUtxoBalanceToCoverAsset String | ReindexRedeemersError UnindexedRedeemer | UtxoLookupFailedFor TransactionInput | UtxoMinAdaValueCalculationFailed @@ -96,30 +97,44 @@ explainBalanceTxError = case _ of "Insufficient balance. Expected: " <> show expected <> ", actual: " <> show actual - <> ". Context: " + <> ". All available: " <> show ctx CouldNotConvertScriptOutputToTxInput -> - "Could not convert script output to transaction input." + "Could not convert script output to transaction input" CouldNotGetChangeAddress -> - "Could not get change address." - CouldNotGetCollateral -> "Could not get collateral." - CouldNotGetUtxos -> "Could not get UTxOs." - CollateralReturnError err -> - "Collateral return error: " <> show err - CollateralReturnMinAdaValueCalcError -> - "Could not calculate minimum Ada for collateral return." - ExUnitsEvaluationFailed tx txEvalErr -> - "Script evaluation failure. Transaction: " <> show tx - <> "Error: " - <> show txEvalErr - InsufficientUtxoBalanceToCoverAsset _ asset -> - "Insufficient UTxO balance to cover asset " <> show asset + "Could not get change address" + CouldNotGetCollateral -> "Could not get collateral from wallet" + CouldNotGetUtxos -> "Could not get UTxOs" + CollateralReturnError -> + "Negative totalCollateral after covering min-utxo-ada requirement." + <> "This should be impossible: please report this as a bug to " + <> + bugTrackerLink + CollateralReturnMinAdaValueCalcError coinsPerUtxoUnit txOut -> + "Could not calculate minimum Ada for collateral return.\n" + <> "Coins per UTxO unit: " + <> show coinsPerUtxoUnit + <> "\nTransaction output: " + <> + show txOut + ExUnitsEvaluationFailed _ _ -> + "Script evaluation failure while trying to estimate ExUnits" + InsufficientUtxoBalanceToCoverAsset asset -> + "Insufficient UTxO balance to cover asset named " + <> asset + <> "\nThis should be impossible: please report this as a bug to " + <> + bugTrackerLink ReindexRedeemersError uir -> - "Could not reindex redeemer " <> show uir + "Could not reindex redeemer " + <> show uir + <> "\nThis should be impossible: please report this as a bug to " + <> + bugTrackerLink UtxoLookupFailedFor ti -> "Could not look up UTxO for " <> show ti UtxoMinAdaValueCalculationFailed -> - "Could not calculate min ADA for UTxO." + "Could not calculate min ADA for UTxO" newtype Actual = Actual Value @@ -145,14 +160,6 @@ derive instance Newtype Expected _ instance Show Expected where show = genericShow --- | Indicates that an error should be impossible. -data ImpossibleError = Impossible - -derive instance Generic ImpossibleError _ - -instance Show ImpossibleError where - show = genericShow - -------------------------------------------------------------------------------- -- Failure parsing for Ogmios.EvaluateTx -------------------------------------------------------------------------------- @@ -280,3 +287,7 @@ printTxEvaluationFailure transaction e = :: Ogmios.RedeemerPointer -> Array Ogmios.ScriptFailure -> PrettyString printScriptFailures ptr sfs = printRedeemer ptr <> bullet (foldMap printScriptFailure sfs) + +bugTrackerLink :: String +bugTrackerLink = + "https://github.com/Plutonomicon/cardano-transaction-lib/issues" From a1da70c26aa43d5ed9f93c28a39673e8da1b8e05 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 3 Oct 2023 14:18:58 +1300 Subject: [PATCH 330/478] Swap the -E tagged variant semantics with their untagged versions --- CHANGELOG.md | 12 +++---- examples/BalanceTxConstraints.purs | 3 +- examples/ChangeGeneration.purs | 6 ++-- examples/ContractTestUtils.purs | 2 +- examples/PlutusV2/ReferenceInputs.purs | 2 +- examples/TxChaining.purs | 3 +- src/Contract/Transaction.purs | 42 ++++++++++++++----------- src/Contract/UnbalancedTx.purs | 15 ++++----- src/Internal/Test/KeyDir.purs | 3 +- src/Internal/Test/UtxoDistribution.purs | 3 +- test/Plutip/Contract.purs | 38 +++++++++++----------- test/Plutip/Staking.purs | 42 ++++++++++++------------- test/Utils/DrainWallets.purs | 4 +-- 13 files changed, 90 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8625c84..90e112afa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,12 +56,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- `mkUnbalancedTxE`, as a 'throwing' version of `mkUnbalancedTx`. This version - throws an exception on failure, instead of returning in `Either` +- `mkUnbalancedTxE`, as a non-'throwing' version of `mkUnbalancedTx`. This + version returns in `Either`, like `mkUnbalancedTx` used to ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `balanceTxE` and `balanceTxWithConstraintsE`, as 'throwing' versions of - `balanceTx` and `balanceTxWithConstraints`. These throw exceptions on failure, - instead of returning in `Either`. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `balanceTxE` and `balanceTxWithConstraintsE`, as non-'throwing' versions of + `balanceTx` and `balanceTxWithConstraints`. These return in `Either`, like + `balanceTx` and `balanceTxWithConstraints` used to do ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `explainMkUnbalancedTxError` and `explainBalanceTxError`, which prettyprint `MkUnbalancedTxError` and `BalanceTxError` for a more human-readable output. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - Added `extraSources` and `data` features to CTL's Nix build function ([#1516](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1516)) @@ -134,7 +134,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. -- `ImpossibleError` (as it is no longer used) +- `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 8a90da6cb..ad636d39f 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -158,8 +158,7 @@ contract (ContractParams p) = do unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - balancedTx <- - liftedE $ balanceTxWithConstraints unbalancedTx balanceTxConstraints + balancedTx <- balanceTxWithConstraints unbalancedTx balanceTxConstraints balancedSignedTx <- (withKeyWallet p.bobKeyWallet <<< signTransaction) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 7f38681c1..bfc249b94 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -3,7 +3,7 @@ module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where import Prelude import Contract.BalanceTxConstraints (mustSendChangeWithDatum) -import Contract.Monad (Contract, liftedE) +import Contract.Monad (Contract) import Contract.PlutusData ( Datum(Datum) , OutputDatum(OutputDatum) @@ -64,8 +64,8 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTxWithConstraints unbalancedTx + unbalancedTx <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTxWithConstraints unbalancedTx -- just to check that attaching datums works ( mustSendChangeWithDatum $ OutputDatum $ Datum $ Integer $ BigInt.fromInt 1000 diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index e6353fe05..822f151ea 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -161,7 +161,7 @@ mkContract p = do unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints unbalancedTxWithMetadata <- setTxMetadata unbalancedTx p.txMetadata - balancedTx <- liftedE $ balanceTx unbalancedTxWithMetadata + balancedTx <- balanceTx unbalancedTxWithMetadata balancedSignedTx <- signTransaction balancedTx txId <- submit balancedSignedTx diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 9909e2aef..9c967f3e8 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -77,7 +77,7 @@ contract = do void $ runChecks checks $ lift do unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - balancedSignedTx <- signTransaction =<< liftedE (balanceTx unbalancedTx) + balancedSignedTx <- signTransaction =<< balanceTx unbalancedTx txHash <- submit balancedSignedTx logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 07bea450e..f2326461f 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -69,8 +69,7 @@ contract = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups1 constraints - balancedTx1 <- - liftedE $ balanceTxWithConstraints unbalancedTx1 balanceTxConstraints + balancedTx1 <- balanceTxWithConstraints unbalancedTx1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 009c1cbf4..092fe772a 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -409,47 +409,51 @@ unUnbalancedTx -- | balancer constraints. -- | -- | This is a 'non-throwing' variant of this functionality. Use this when --- | errors are expected, and graceful recovery is possible. -balanceTxWithConstraints +-- | errors are expected, and graceful recovery is possible. If you want a +-- | 'throwing' variant, use `balanceTxWithConstraints` instead. +balanceTxWithConstraintsE :: UnbalancedTx -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) -balanceTxWithConstraints tx = +balanceTxWithConstraintsE tx = let tx' /\ ix = unUnbalancedTx tx in BalanceTx.balanceTxWithConstraints tx' ix --- | 'Throwing' variant of `balanceTxWithConstraints`. Instead of returning in +-- | 'Throwing' variant of `balanceTxWithConstraintsE`. Instead of returning in -- | `Either`, it throws an exception on failure. Use this when errors are not -- | expected, and graceful recovery is either impossible or wouldn't make --- | sense. -balanceTxWithConstraintsE +-- | sense. If you want a non-'throwing' variant, use `balanceWithConstraintsE` +-- | instead. +balanceTxWithConstraints :: UnbalancedTx -> BalanceTxConstraintsBuilder -> Contract FinalizedTransaction -balanceTxWithConstraintsE tx bcb = do - result <- balanceTxWithConstraints tx bcb +balanceTxWithConstraints tx bcb = do + result <- balanceTxWithConstraintsE tx bcb case result of Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err Right ftx -> pure ftx --- | Same as `balanceTxWithConstraints`, but uses the default balancer +-- | Same as `balanceTxWithConstraintsE`, but uses the default balancer -- | constraints. -- | -- | This is a 'non-throwing' variant of this functionality. Use this when --- | errors are expected, and graceful recovery is possible. -balanceTx +-- | errors are expected, and graceful recovery is possible. If you want a +-- | 'throwing' variant, use `balanceTx` instead. +balanceTxE :: UnbalancedTx -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) -balanceTx = flip balanceTxWithConstraints mempty +balanceTxE = flip balanceTxWithConstraintsE mempty --- | 'Throwing' variant of `balanceTx`. Instead of returning in `Either`, it +-- | 'Throwing' variant of `balanceTxE`. Instead of returning in `Either`, it -- | throws an exception on failure. Use this when errors are not expected, and --- | graceful recovery is either impossible or wouldn't make sense. -balanceTxE :: UnbalancedTx -> Contract FinalizedTransaction -balanceTxE utx = do - result <- balanceTx utx +-- | graceful recovery is either impossible or wouldn't make sense. If you want +-- | a non-'throwing' variant, use `balanceTxE` instead. +balanceTx :: UnbalancedTx -> Contract FinalizedTransaction +balanceTx utx = do + result <- balanceTxE utx case result of Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err Right ftx -> pure ftx @@ -488,7 +492,7 @@ balanceAndLockWithConstraints -> Contract FinalizedTransaction balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do balancedTx <- - liftedE $ balanceTxWithConstraints unbalancedTx constraints + liftedE $ balanceTxWithConstraintsE unbalancedTx constraints void $ withUsedTxOuts $ lockTransactionInputs (unwrap balancedTx) pure balancedTx @@ -555,7 +559,7 @@ submitTxFromConstraintsReturningFee -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } submitTxFromConstraintsReturningFee lookups constraints = do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx + balancedTx <- liftedE $ balanceTxE unbalancedTx balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx pure { txHash, txFinalFee: getTxFinalFee balancedSignedTx } diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 96c2ced80..fc4043527 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -93,19 +93,20 @@ import Effect.Exception (error) -- | `balanceTx` and `signTransaction`. -- | -- | This is a 'non-throwing' variant; use this when failure is expected, and --- | can be handled gracefully. -mkUnbalancedTx +-- | can be handled gracefully. If you need the 'throwing' variant, use +-- | `mkUnbalancedTx` instead. +mkUnbalancedTxE :: ScriptLookups -> TxConstraints -> Contract (Either MkUnbalancedTxError UnbalancedTx) -mkUnbalancedTx = PC.mkUnbalancedTxImpl +mkUnbalancedTxE = PC.mkUnbalancedTxImpl --- | As `mkUnbalancedTx`, but 'throwing'; use this when failure is _not_ +-- | As `mkUnbalancedTxE`, but 'throwing'; use this when failure is _not_ -- | expected, and graceful handling is either impossible, or wouldn't make -- | sense. -mkUnbalancedTxE :: ScriptLookups -> TxConstraints -> Contract UnbalancedTx -mkUnbalancedTxE lookups constraints = - mkUnbalancedTx lookups constraints >>= case _ of +mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract UnbalancedTx +mkUnbalancedTx lookups constraints = + mkUnbalancedTxE lookups constraints >>= case _ of Left err -> throwError $ error $ explainMkUnbalancedTxError err Right res -> pure res diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 99db1305a..5590f14b1 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -22,6 +22,7 @@ import Contract.TextEnvelope (decodeTextEnvelope) import Contract.Transaction ( awaitTxConfirmed , balanceTx + , balanceTxE , signTransaction , submit , submitTxFromConstraints @@ -387,7 +388,7 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = lookups = unspentOutputs utxos unbalancedTx <- liftedE $ mkUnbalancedTxImpl lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx + balancedTx <- liftedE $ balanceTxE unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 3647112ad..b61e26b81 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -27,6 +27,7 @@ import Contract.Transaction ( TransactionOutputWithRefScript(TransactionOutputWithRefScript) , awaitTxConfirmed , balanceTx + , balanceTxE , signTransaction , submit ) @@ -215,7 +216,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints signedTx <- withKeyWallet ourWallet $ - signTransaction =<< liftedE (balanceTx unbalancedTx) + signTransaction =<< liftedE (balanceTxE unbalancedTx) signedTx' <- foldM (\tx { wallet } -> withKeyWallet wallet $ signTransaction tx) signedTx diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index a24fe484b..3f9c9c19e 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -72,7 +72,9 @@ import Contract.Transaction , TransactionOutput(TransactionOutput) , awaitTxConfirmed , balanceTx + , balanceTxE , balanceTxWithConstraints + , balanceTxWithConstraintsE , createAdditionalUtxos , getTxMetadata , signTransaction @@ -238,7 +240,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints res <- - ( balanceTxWithConstraints ubTx + ( balanceTxWithConstraintsE ubTx (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) ) res `shouldSatisfy` isLeft @@ -453,7 +455,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -491,7 +493,7 @@ suite = do lookups = Lookups.unspentOutputs utxos ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - tx <- signTransaction =<< liftedE (balanceTx ubTx) + tx <- signTransaction =<< balanceTx ubTx let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -550,7 +552,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -579,7 +581,7 @@ suite = do ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints -- Bob signs the tx - tx <- signTransaction =<< liftedE (balanceTx ubTx) + tx <- signTransaction =<< balanceTx ubTx let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -612,7 +614,7 @@ suite = do lookups = Lookups.mintingPolicy mp ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx test "mustProduceAtLeast spends native token" do @@ -697,7 +699,7 @@ suite = do lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups' constraints' - result <- balanceTx ubTx + result <- balanceTxE ubTx result `shouldSatisfy` isLeft test "mustSpendAtLeast succeeds to spend" do @@ -782,7 +784,7 @@ suite = do lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups' constraints' - result <- balanceTx ubTx + result <- balanceTxE ubTx result `shouldSatisfy` isLeft test "Minting using NativeScript (multisig) as a policy" do @@ -940,7 +942,7 @@ suite = do ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints ubTx' <- setGeneralTxMetadata ubTx givenMetadata - bsTx <- signTransaction =<< liftedE (balanceTx ubTx') + bsTx <- signTransaction =<< balanceTx ubTx' txId <- submit bsTx awaitTxConfirmed txId @@ -1010,7 +1012,7 @@ suite = do <> Lookups.mintingPolicy mp3 ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx test "Multi-signature transaction" do @@ -1180,7 +1182,7 @@ suite = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - balanceTxWithConstraints unbalancedTx balanceTxConstraints + balanceTxWithConstraintsE unbalancedTx balanceTxConstraints let hasInsufficientBalance @@ -1400,7 +1402,7 @@ suite = do lookups = Lookups.mintingPolicy mp ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx submit bsTx >>= awaitTxConfirmed logInfo' "Attempt to lock value" @@ -1619,9 +1621,8 @@ suite = do unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- - liftedE $ balanceTxWithConstraints unbalancedTx1 - balanceTxConstraints + balancedTx1 <- balanceTxWithConstraints unbalancedTx1 + balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 @@ -1743,9 +1744,8 @@ suite = do unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- - liftedE $ balanceTxWithConstraints unbalancedTx1 - balanceTxConstraints + balancedTx1 <- balanceTxWithConstraints unbalancedTx1 + balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 @@ -2004,5 +2004,5 @@ pkh2PkhContract pkh stakePkh = do lookups :: Lookups.ScriptLookups lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< liftedE (balanceTx ubTx) + bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 538913c37..b19bbf5ec 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -40,7 +40,7 @@ import Contract.Time (getCurrentEpoch) import Contract.Transaction ( Epoch(Epoch) , PoolPubKeyHash(PoolPubKeyHash) - , balanceTx + , balanceTxE , mkPoolPubKeyHash , signTransaction , vrfKeyHashFromBytes @@ -158,7 +158,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -171,7 +171,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog test "PlutusScript" do let @@ -206,7 +206,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -223,7 +223,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog test "NativeScript" do let @@ -256,7 +256,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -269,7 +269,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do let @@ -294,7 +294,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog privateStakeKey <- liftM (error "Failed to get private stake key") $ keyWalletPrivateStakeKey alice @@ -343,7 +343,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list do @@ -370,7 +370,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog let waitEpoch :: Epoch -> Contract Epoch @@ -423,7 +423,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Register stake script do @@ -435,7 +435,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Select a pool poolId <- selectPoolId @@ -451,7 +451,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -481,7 +481,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -538,7 +538,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Alice registers stake script (again, no need to validate it) do @@ -550,7 +550,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Bob performs operations with the stake script that require his -- (and only his) signature. @@ -570,7 +570,7 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -600,7 +600,7 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -636,7 +636,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Select a pool ID poolId <- selectPoolId @@ -652,7 +652,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -685,7 +685,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTx ubTx) >>= signTransaction >>= submitAndLog + liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 7692d6a35..983a9a853 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -13,7 +13,7 @@ import Contract.Monad (liftedE, runContract) import Contract.ScriptLookups (mkUnbalancedTx, unspentOutputs) import Contract.Transaction ( awaitTxConfirmed - , balanceTx + , balanceTxE , signTransaction , submit ) @@ -121,7 +121,7 @@ run privateKey walletsDir = runContract config do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTx unbalancedTx + balancedTx <- liftedE $ balanceTxE unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) From 67be84a70a9731dec415a190d9921fc974e6337b Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 07:30:03 +1300 Subject: [PATCH 331/478] Remove CannotConvertPaymentPubKeyHash variant --- CHANGELOG.md | 2 ++ src/Contract/ScriptLookups.purs | 3 +-- src/Contract/UnbalancedTx.purs | 8 ++------ src/Internal/ProcessConstraints/Error.purs | 5 ++--- src/Internal/Test/KeyDir.purs | 1 - src/Internal/Test/UtxoDistribution.purs | 1 - 6 files changed, 7 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90e112afa..e2bcede30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -135,6 +135,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. - `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `CannotConvertPaymentPubKeyHash` variant of `MkUnbalancedTxError` (no longer + used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index f106d0afa..eaf1aa8f6 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -12,8 +12,7 @@ import Ctl.Internal.ProcessConstraints.Error ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( CannotConvertPaymentPubKeyHash - , CannotFindDatum + ( CannotFindDatum , CannotQueryDatum , CannotConvertPOSIXTimeRange , CannotSolveTimeConstraints diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index fc4043527..b49f4fc99 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -17,8 +17,7 @@ import Ctl.Internal.ProcessConstraints.Error ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( CannotConvertPaymentPubKeyHash - , CannotFindDatum + ( CannotFindDatum , CannotQueryDatum , CannotConvertPOSIXTimeRange , CannotSolveTimeConstraints @@ -48,8 +47,7 @@ import Ctl.Internal.ProcessConstraints.Error ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( CannotConvertPaymentPubKeyHash - , CannotFindDatum + ( CannotFindDatum , CannotQueryDatum , CannotConvertPOSIXTimeRange , CannotSolveTimeConstraints @@ -113,8 +111,6 @@ mkUnbalancedTx lookups constraints = -- | Helper to pretty-print `MkUnbalancedTxError`s. explainMkUnbalancedTxError :: MkUnbalancedTxError -> String explainMkUnbalancedTxError = case _ of - CannotConvertPaymentPubKeyHash ppkh -> - "Cannot convert payment pubkey hash: " <> show ppkh CannotFindDatum -> "Cannot find datum" CannotQueryDatum dh -> "Querying for datum by datum hash (" diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 5f9f5f57b..c4efb9eca 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -8,7 +8,7 @@ import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Transaction (ModifyTxError) import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError) -import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) +import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts ( MintingPolicy , MintingPolicyHash @@ -25,8 +25,7 @@ import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) data MkUnbalancedTxError - = CannotConvertPaymentPubKeyHash PaymentPubKeyHash - | CannotFindDatum + = CannotFindDatum | CannotQueryDatum DataHash | CannotConvertPOSIXTimeRange POSIXTimeRange PosixTimeToSlotError | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 5590f14b1..03c727959 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -21,7 +21,6 @@ import Contract.Monad import Contract.TextEnvelope (decodeTextEnvelope) import Contract.Transaction ( awaitTxConfirmed - , balanceTx , balanceTxE , signTransaction , submit diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index b61e26b81..a52c265ed 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -26,7 +26,6 @@ import Contract.ScriptLookups as Lookups import Contract.Transaction ( TransactionOutputWithRefScript(TransactionOutputWithRefScript) , awaitTxConfirmed - , balanceTx , balanceTxE , signTransaction , submit From aabf09354dcf2bb7dac3cb4444aa7ca96fd96391 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 07:34:21 +1300 Subject: [PATCH 332/478] Remove CannotHashDatum variant --- CHANGELOG.md | 2 +- src/Contract/ScriptLookups.purs | 3 --- src/Contract/UnbalancedTx.purs | 4 ---- src/Internal/ProcessConstraints/Error.purs | 1 - 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2bcede30..214f50c98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -135,7 +135,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. - `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `CannotConvertPaymentPubKeyHash` variant of `MkUnbalancedTxError` (no longer +- `CannotConvertPaymentPubKeyHash` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index eaf1aa8f6..a3bde449f 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -18,7 +18,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashDatum , CannotHashMintingPolicy , CannotHashValidator , CannotMakeValue @@ -54,10 +53,8 @@ import Ctl.Internal.Types.ScriptLookups , ownPaymentPubKeyHashM , ownStakePubKeyHash , ownStakePubKeyHashM - -- , paymentPubKeyM , unspentOutputs , unspentOutputsM - -- , unsafePaymentPubKey , validator , validatorM ) as X diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index b49f4fc99..b4723537a 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -23,7 +23,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashDatum , CannotHashMintingPolicy , CannotHashValidator , CannotMakeValue @@ -53,7 +52,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashDatum , CannotHashMintingPolicy , CannotHashValidator , CannotMakeValue @@ -132,8 +130,6 @@ explainMkUnbalancedTxError = case _ of <> bugTrackerLink CannotGetValidatorHashFromAddress addr -> "Cannot get a validator hash from address " <> show addr - CannotHashDatum datum -> - "Cannot hash datum: " <> show datum CannotHashMintingPolicy mp -> "Cannot hash minting policy: " <> show mp CannotHashValidator validator -> diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index c4efb9eca..b30e4af82 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -31,7 +31,6 @@ data MkUnbalancedTxError | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange | CannotGetMintingPolicyScriptIndex -- Should be impossible | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` - | CannotHashDatum Datum | CannotHashMintingPolicy MintingPolicy | CannotHashValidator Validator | CannotMakeValue CurrencySymbol TokenName BigInt From e4738df575354e32e4b9630df8d2122b5881e050 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 07:41:42 +1300 Subject: [PATCH 333/478] Remove CannotHashValidator variant --- CHANGELOG.md | 2 +- src/Contract/ScriptLookups.purs | 2 -- src/Contract/UnbalancedTx.purs | 8 -------- src/Internal/ProcessConstraints/Error.purs | 6 +----- 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 214f50c98..5fc048647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -135,7 +135,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. - `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `CannotConvertPaymentPubKeyHash` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer +- `CannotConvertPaymentPubKeyHash`, `CannotHashMintingPolicy`, `CannotHashValidator` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index a3bde449f..e889f15e6 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -18,8 +18,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashMintingPolicy - , CannotHashValidator , CannotMakeValue , CannotWithdrawRewardsPubKey , CannotWithdrawRewardsPlutusScript diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index b4723537a..138fbcc74 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -23,8 +23,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashMintingPolicy - , CannotHashValidator , CannotMakeValue , CannotWithdrawRewardsPubKey , CannotWithdrawRewardsPlutusScript @@ -52,8 +50,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotSolveTimeConstraints , CannotGetMintingPolicyScriptIndex , CannotGetValidatorHashFromAddress - , CannotHashMintingPolicy - , CannotHashValidator , CannotMakeValue , CannotWithdrawRewardsPubKey , CannotWithdrawRewardsPlutusScript @@ -130,10 +126,6 @@ explainMkUnbalancedTxError = case _ of <> bugTrackerLink CannotGetValidatorHashFromAddress addr -> "Cannot get a validator hash from address " <> show addr - CannotHashMintingPolicy mp -> - "Cannot hash minting policy: " <> show mp - CannotHashValidator validator -> - "Cannot hash validator: " <> show validator CannotMakeValue _ tn _ -> "Attempted to make an amount with the ADA currency symbol, and non-empty token name " <> show tn diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index b30e4af82..b4953ab2c 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -10,11 +10,9 @@ import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError) import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts - ( MintingPolicy - , MintingPolicyHash + ( MintingPolicyHash , NativeScriptStakeValidator , PlutusScriptStakeValidator - , Validator , ValidatorHash ) import Ctl.Internal.Types.TokenName (TokenName) @@ -31,8 +29,6 @@ data MkUnbalancedTxError | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange | CannotGetMintingPolicyScriptIndex -- Should be impossible | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` - | CannotHashMintingPolicy MintingPolicy - | CannotHashValidator Validator | CannotMakeValue CurrencySymbol TokenName BigInt | CannotWithdrawRewardsPubKey StakePubKeyHash | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator From 7aeb341016dccaa55187562096fd6fcf0bc76384 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 09:41:23 +1300 Subject: [PATCH 334/478] Address more feedback on MkUnbalancedTxError --- src/Contract/UnbalancedTx.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 138fbcc74..0328dbf08 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -125,7 +125,7 @@ explainMkUnbalancedTxError = case _ of <> "Please report this as a bug here: " <> bugTrackerLink CannotGetValidatorHashFromAddress addr -> - "Cannot get a validator hash from address " <> show addr + "Cannot get a payment validator hash from address " <> show addr CannotMakeValue _ tn _ -> "Attempted to make an amount with the ADA currency symbol, and non-empty token name " <> show tn @@ -143,7 +143,7 @@ explainMkUnbalancedTxError = case _ of <> show hash MintingPolicyHashNotCurrencySymbol mph -> "Minting policy hash " <> show mph <> - " is not the hash of a CurrencySymbol." + " is not a CurrencySymbol. Please check the validity of the byte representation." MintingPolicyNotFound mp -> "Minting policy not found: " <> show mp ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr OwnPubKeyAndStakeKeyMissing -> From 607dc5c94a6276de109518685b54eac6becd8ea2 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 10:04:33 +1300 Subject: [PATCH 335/478] Fix imports --- src/Contract/Time.purs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 5c30db7ec..2ed187fde 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -44,7 +44,10 @@ import Ctl.Internal.Types.EraSummaries , SafeZone(SafeZone) , SlotLength(SlotLength) ) as ExportEraSummaries -import Ctl.Internal.Types.EraSummaries (EraSummaries) +import Ctl.Internal.Types.EraSummaries + ( EraSummaries + , EraSummary + ) import Ctl.Internal.Types.Interval ( AbsTime(AbsTime) , Closure @@ -113,7 +116,7 @@ import Effect.Aff.Class (liftAff) import Effect.Exception (error) -- | Get a summary of the current era. -getCurrentEra :: Contract ExportEraSummaries.EraSummary +getCurrentEra :: Contract EraSummary getCurrentEra = do eraSummaries <- getEraSummaries currentSlot <- getCurrentSlot @@ -124,10 +127,10 @@ getCurrentEra = do $ Array.sortBy (comparing getStartSlot) $ unwrap eraSummaries where - getStartSlot :: ExportEraSummaries.EraSummary -> Slot + getStartSlot :: EraSummary -> Slot getStartSlot = unwrap >>> _.start >>> unwrap >>> _.slot - slotInRange :: Slot -> ExportEraSummaries.EraSummary -> Boolean + slotInRange :: Slot -> EraSummary -> Boolean slotInRange currentSlot era = let eraStartSlot = getStartSlot era From 3a5e3898fffadd7c0a16392c44d5ffc33c5067be Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 10:57:45 +1300 Subject: [PATCH 336/478] Improve BalanceTxError messages --- src/Internal/BalanceTx/Error.purs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 671155260..d3bbc5e93 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -102,9 +102,10 @@ explainBalanceTxError = case _ of CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> - "Could not get change address" + "Could not get change address from the wallet or from the balancer constraints" CouldNotGetCollateral -> "Could not get collateral from wallet" - CouldNotGetUtxos -> "Could not get UTxOs" + CouldNotGetUtxos -> + "Could not get UTxOs from the wallet or the specified source addresses" CollateralReturnError -> "Negative totalCollateral after covering min-utxo-ada requirement." <> "This should be impossible: please report this as a bug to " @@ -132,7 +133,12 @@ explainBalanceTxError = case _ of <> bugTrackerLink UtxoLookupFailedFor ti -> - "Could not look up UTxO for " <> show ti + "Could not look up UTxO for " + <> show ti + <> " from a given set of UTxOs.\n" + <> "This should be impossible: please report this as a bug to " + <> + bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" From 588e3558f4945cbe0a807178d3fe445a484e3061 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 12:03:06 +1300 Subject: [PATCH 337/478] Remove InvalidInContext --- CHANGELOG.md | 1 + src/Contract/Transaction.purs | 1 - src/Contract/UnbalancedTx.purs | 3 --- src/Internal/BalanceTx/BalanceTx.purs | 17 ++--------------- src/Internal/BalanceTx/CoinSelection.purs | 2 -- src/Internal/BalanceTx/Error.purs | 15 ++------------- test/Plutip/Contract.purs | 5 +---- 7 files changed, 6 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fc048647..6c7bdad05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -137,6 +137,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `CannotConvertPaymentPubKeyHash`, `CannotHashMintingPolicy`, `CannotHashValidator` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `InvalidInContext` (not needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 092fe772a..14ba8dfd7 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -71,7 +71,6 @@ import Ctl.Internal.BalanceTx.Error , UtxoMinAdaValueCalculationFailed ) , Expected(Expected) - , InvalidInContext(InvalidInContext) , explainBalanceTxError ) as BalanceTxError import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 0328dbf08..1b59cc941 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -12,9 +12,6 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError ( CannotFindDatum diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 2de3a4340..617cde881 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -6,7 +6,7 @@ module Ctl.Internal.BalanceTx import Prelude -import Control.Monad.Error.Class (catchError, liftMaybe, throwError) +import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) @@ -53,12 +53,10 @@ import Ctl.Internal.BalanceTx.Error ( UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed , ReindexRedeemersError - , BalanceInsufficientError , CouldNotGetUtxos , CouldNotGetCollateral , CouldNotGetChangeAddress ) - , InvalidInContext(InvalidInContext) ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee @@ -133,7 +131,6 @@ import Ctl.Internal.Contract.Wallet ) as Wallet import Ctl.Internal.Helpers (liftEither, (??)) import Ctl.Internal.Partition (equipartition, partition) -import Ctl.Internal.Plutus.Conversion (toPlutusValue) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) import Ctl.Internal.Types.Scripts @@ -326,18 +323,8 @@ runBalancer :: BalancerParams -> BalanceTxM FinalizedTransaction runBalancer p = do utxos <- partitionAndFilterUtxos transaction <- addLovelacesToTransactionOutputs p.transaction - addInvalidInContext (foldMap (_.amount <<< unwrap) utxos.invalidInContext) do - mainLoop (initBalancerState transaction utxos.spendable) + mainLoop (initBalancerState transaction utxos.spendable) where - addInvalidInContext - :: forall (a :: Type). Value -> BalanceTxM a -> BalanceTxM a - addInvalidInContext invalidInContext m = catchError m $ throwError <<< - case _ of - BalanceInsufficientError e a (InvalidInContext v) -> - BalanceInsufficientError e a - (InvalidInContext (v <> toPlutusValue invalidInContext)) - e -> e - -- We check if the transaction uses a plutusv1 script, so that we can filter -- out utxos which use plutusv2 features if so. txHasPlutusV1 :: Boolean diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 7a685a562..9ff833e3e 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -29,7 +29,6 @@ import Ctl.Internal.BalanceTx.Error , InsufficientUtxoBalanceToCoverAsset ) , Expected(Expected) - , InvalidInContext(InvalidInContext) ) import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Cardano.Types.Value (AssetClass(AssetClass), Coin, Value) @@ -141,7 +140,6 @@ performMultiAssetSelection strategy utxoIndex requiredValue = BalanceInsufficientError (Expected $ toPlutusValue requiredValue) (Actual $ toPlutusValue availableValue) - (InvalidInContext $ toPlutusValue mempty) availableValue :: Value availableValue = balance (utxoIndexUniverse utxoIndex) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d3bbc5e93..eab3037d6 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -3,7 +3,6 @@ -- | that may be returned from Ogmios when calculating ex units. module Ctl.Internal.BalanceTx.Error ( Actual(Actual) - , InvalidInContext(InvalidInContext) , BalanceTxError ( BalanceInsufficientError , CouldNotConvertScriptOutputToTxInput @@ -71,7 +70,7 @@ import Data.String.Utils (padEnd) -- | Errors conditions that may possibly arise during transaction balancing data BalanceTxError - = BalanceInsufficientError Expected Actual InvalidInContext + = BalanceInsufficientError Expected Actual | CouldNotConvertScriptOutputToTxInput | CouldNotGetChangeAddress | CouldNotGetCollateral @@ -93,12 +92,10 @@ instance Show BalanceTxError where explainBalanceTxError :: BalanceTxError -> String explainBalanceTxError = case _ of - BalanceInsufficientError expected actual ctx -> + BalanceInsufficientError expected actual -> "Insufficient balance. Expected: " <> show expected <> ", actual: " <> show actual - <> ". All available: " - <> show ctx CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> @@ -150,14 +147,6 @@ derive instance Newtype Actual _ instance Show Actual where show = genericShow -newtype InvalidInContext = InvalidInContext Value - -derive instance Generic InvalidInContext _ -derive instance Newtype InvalidInContext _ - -instance Show InvalidInContext where - show = genericShow - newtype Expected = Expected Value derive instance Generic Expected _ diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 3f9c9c19e..7fcf5704a 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -63,7 +63,6 @@ import Contract.Time (Slot(Slot), getEraSummaries) import Contract.Transaction ( BalanceTxError(BalanceInsufficientError) , DataHash - , InvalidInContext(InvalidInContext) , NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll) , OutputDatum(OutputDatumHash, NoOutputDatum, OutputDatum) , ScriptRef(PlutusScriptRef, NativeScriptRef) @@ -1188,9 +1187,7 @@ suite = do hasInsufficientBalance :: forall (a :: Type). Either BalanceTxError a -> Boolean hasInsufficientBalance = case _ of - Left (BalanceInsufficientError _ _ (InvalidInContext amount)) - | amount == Value.lovelaceValueOf (BigInt.fromInt 50_000_000) -> - true + Left (BalanceInsufficientError _ _) -> true _ -> false balanceWithDatum NoOutputDatum >>= flip shouldSatisfy isRight From 1f19e7267009a2a977f0aebea03f12a77eeeaded Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 4 Oct 2023 12:52:38 +1300 Subject: [PATCH 338/478] Better Value prettyprinting in BalanceTxError --- src/Internal/BalanceTx/Error.purs | 39 ++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index eab3037d6..b5f39de94 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -32,6 +32,8 @@ import Ctl.Internal.Cardano.Types.Transaction , _redeemers , _witnessSet ) +import Ctl.Internal.Cardano.Types.Value (pprintValue) +import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios ( RedeemerPointer @@ -60,8 +62,18 @@ import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) import Data.Lens (non, (^.)) +import Data.Log.Tag + ( Tag + ( StringTag + , IntTag + , NumberTag + , BooleanTag + , JSDateTag + , TagSetTag + ) + ) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String @@ -93,9 +105,9 @@ instance Show BalanceTxError where explainBalanceTxError :: BalanceTxError -> String explainBalanceTxError = case _ of BalanceInsufficientError expected actual -> - "Insufficient balance. Expected: " <> show expected + "Insufficient balance. Expected: " <> prettyValue expected <> ", actual: " - <> show actual + <> prettyValue actual CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> @@ -138,6 +150,27 @@ explainBalanceTxError = case _ of bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" + where + prettyValue + :: forall (a :: Type) + . Newtype a Value + => a + -> String + prettyValue = unwrap >>> fromPlutusValue >>> pprintValue >>> + foldMapWithIndex prettyEntry + + prettyEntry :: String -> Tag -> String + prettyEntry k v = (k <> ": ") + <> + ( case v of + StringTag s -> s + NumberTag n -> show n + IntTag i -> show i + BooleanTag b -> show b + JSDateTag date -> show date + TagSetTag ts -> foldMapWithIndex prettyEntry ts + ) + <> "\n" newtype Actual = Actual Value From 15c7a2252bef564af33a00155dfddb13cc1ec79e Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Thu, 5 Oct 2023 10:49:31 +1300 Subject: [PATCH 339/478] Better message for WrongRefScriptHash --- src/Contract/UnbalancedTx.purs | 60 +++++++++++++++++++++- src/Internal/ProcessConstraints.purs | 9 +++- src/Internal/ProcessConstraints/Error.purs | 3 +- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 1b59cc941..3e78f18ef 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -11,6 +11,11 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) +import Ctl.Internal.Cardano.Types.Value (pprintValue) +import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) +import Ctl.Internal.Plutus.Types.Transaction + ( TransactionOutput(TransactionOutput) + ) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError @@ -69,12 +74,21 @@ import Ctl.Internal.ProcessConstraints.Error import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X import Ctl.Internal.Transaction (explainModifyTxError) +import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Interval (explainPosixTimeToSlotError) +import Ctl.Internal.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + ) +import Ctl.Internal.Types.PlutusData (pprintPlutusData) import Ctl.Internal.Types.ScriptLookups ( ScriptLookups ) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Data.Either (Either(Left, Right)) +import Data.FoldableWithIndex (foldMapWithIndex) +import Data.Log.Tag as TagSet +import Data.Maybe (Maybe(Nothing, Just)) +import Data.Newtype (unwrap) import Effect.Exception (error) -- | Create an `UnbalancedTx` given `ScriptLookups` and @@ -156,8 +170,12 @@ explainMkUnbalancedTxError = case _ of <> "\nContext: we were trying to spend a script output." ValidatorHashNotFound vh -> "Cannot find validator hash: " <> show vh - WrongRefScriptHash msh -> - "Output is missing a reference script hash: " <> show msh + WrongRefScriptHash msh tout -> + "Output is missing a reference script hash: " + <> show msh + <> "\nOutput: " + <> + prettyOutput tout CannotSatisfyAny -> "One of the following happened:\n" <> "1. List of constraints is empty.\n" <> @@ -167,6 +185,44 @@ explainMkUnbalancedTxError = case _ of CannotMintZero cs tn -> "Cannot mint zero of token " <> show tn <> " of currency " <> show cs + where + prettyOutput :: TransactionOutput -> String + prettyOutput (TransactionOutput { address, amount, datum, referenceScript }) = + let + datumTagSets = map TagSet.fromArray $ case datum of + NoOutputDatum -> [] + OutputDatumHash datumHash -> + [ [ "datumHash" `TagSet.tag` byteArrayToHex + (unwrap datumHash) + ] + ] + OutputDatum plutusData -> + [ [ "datum" `TagSet.tagSetTag` + pprintPlutusData (unwrap plutusData) + ] + ] + scriptRefTagSets = case referenceScript of + Nothing -> [] + Just ref -> [ "Script Reference" `TagSet.tag` show ref ] + outputTagSet = + [ "amount" `TagSet.tagSetTag` pprintValue (fromPlutusValue amount) + , "address" `TagSet.tag` (show address) + ] <> datumTagSets <> scriptRefTagSets + in + foldMapWithIndex prettyEntry $ TagSet.fromArray outputTagSet + + prettyEntry :: String -> TagSet.Tag -> String + prettyEntry k v = (k <> ": ") + <> + ( case v of + TagSet.StringTag s -> s + TagSet.NumberTag n -> show n + TagSet.IntTag i -> show i + TagSet.BooleanTag b -> show b + TagSet.JSDateTag date -> show date + TagSet.TagSetTag ts -> foldMapWithIndex prettyEntry ts + ) + <> "\n" -- Helpers diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index b3a93babb..a5f32de4b 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -477,6 +477,7 @@ processScriptRefUnspentOut scriptHash inputWithRefScript = do err :: ConstraintsM (Either MkUnbalancedTxError Unit) err = pure $ throwError $ WrongRefScriptHash refScriptHash + (unwrap output).output in if Just (unwrap scriptHash) /= refScriptHash then err else pure (Right unit) @@ -484,8 +485,12 @@ processScriptRefUnspentOut scriptHash inputWithRefScript = do checkRefNative :: InputWithScriptRef -> ConstraintsM (Either MkUnbalancedTxError Boolean) -checkRefNative scriptRef = pure $ note (WrongRefScriptHash Nothing) $ isNative - (unwrap (unwrap uout).output).scriptRef +checkRefNative scriptRef = + let + out = (unwrap ((unwrap uout).output)).output + in + pure $ note (WrongRefScriptHash Nothing out) $ isNative + (unwrap (unwrap uout).output).scriptRef where isNative ref = ref >>= ( case _ of diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index b4953ab2c..38b363c97 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -3,6 +3,7 @@ module Ctl.Internal.ProcessConstraints.Error where import Prelude import Ctl.Internal.Cardano.Types.Value (CurrencySymbol) +import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Transaction (ModifyTxError) @@ -42,7 +43,7 @@ data MkUnbalancedTxError | TxOutRefNotFound TransactionInput | TxOutRefWrongType TransactionInput | ValidatorHashNotFound ValidatorHash - | WrongRefScriptHash (Maybe ScriptHash) + | WrongRefScriptHash (Maybe ScriptHash) TransactionOutput | CannotSatisfyAny | ExpectedPlutusScriptGotNativeScript MintingPolicyHash | CannotMintZero CurrencySymbol TokenName From 7deff09259eb7c23b4d15d8d37e099dcae317b5d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 5 Oct 2023 12:03:31 +0300 Subject: [PATCH 340/478] Apply suggestions from code review --- src/Contract/Time.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 2ed187fde..d6cc7146b 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -120,9 +120,9 @@ getCurrentEra :: Contract EraSummary getCurrentEra = do eraSummaries <- getEraSummaries currentSlot <- getCurrentSlot - logInfo' $ "getCurrentEra: " <> show eraSummaries - logInfo' $ "getCurrentEra: " <> show currentSlot - liftContractM "Could not find era summary" + logInfo' $ "getCurrentEra: era summaries: " <> show eraSummaries + logInfo' $ "getCurrentEra: current slot: " <> show currentSlot + liftContractM "getCurrentEra: Could not find era summary" $ find (slotInRange currentSlot) $ Array.sortBy (comparing getStartSlot) $ unwrap eraSummaries @@ -171,7 +171,7 @@ normalizeTimeInterval = case _ of logInfo' $ "normalizeTimeInterval: desired range: " <> show desired logInfo' $ "normalizeTimeInterval: computed range: " <> show range pure range - i -> liftContractM ("Could not convert to start-end range: " <> show i) + i -> liftContractM ("normalizeTimeInterval: could not convert to start-end range: " <> show i) Nothing -- | Get the current Epoch. From 4e2f2c56dac471de135e0626192b286557be900a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 5 Oct 2023 17:09:53 +0400 Subject: [PATCH 341/478] Fix CI --- examples/AdditionalUtxos.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 18294ed2a..49338d0b9 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -79,14 +79,14 @@ payToValidator vhash = do datum :: Datum datum = wrap $ Integer $ BigInt.fromInt 42 - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = Constraints.mustPayToScript vhash datum DatumWitness value <> Constraints.mustPayToScriptWithScriptRef vhash datum DatumInline scriptRef value - lookups :: ScriptLookups PlutusData + lookups :: ScriptLookups lookups = Lookups.datum datum unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints @@ -108,12 +108,12 @@ spendFromValidator validator additionalUtxos datum = do pubKeyOrefs = Array.fromFoldable $ Map.keys $ Map.difference additionalUtxos scriptUtxos - constraints :: TxConstraints Unit Unit + constraints :: TxConstraints constraints = foldMap (flip Constraints.mustSpendScriptOutput unitRedeemer) scriptOrefs <> foldMap Constraints.mustSpendPubKeyOutput pubKeyOrefs - lookups :: ScriptLookups PlutusData + lookups :: ScriptLookups lookups = Lookups.validator validator <> Lookups.unspentOutputs additionalUtxos From 913236dc4478ea44d137c1a2b24dfb1d09292f23 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 5 Oct 2023 17:09:59 +0400 Subject: [PATCH 342/478] Add more info about time/slot conversion error --- doc/faq.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/faq.md b/doc/faq.md index 211ec63e8..e92226e6d 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -90,7 +90,9 @@ To do anything time-related, it's best to rely on local node chain tip time, ins ### Q: Time/slot conversion functions return `Nothing`. Why is that? -Time/slot conversion functions depend on `eraSummaries` [Ogmios local state query](https://ogmios.dev/mini-protocols/local-state-query/), that returns era bounds and slotting parameters details, required for proper slot arithmetic. The most common source of the problem is that Ogmios does not return enough epochs into the future. +Time/slot conversion functions depend on `eraSummaries` [Ogmios local state query](https://ogmios.dev/mini-protocols/local-state-query/), that returns era bounds and slotting parameters details, required for proper slot arithmetic. The most common source of the problem is that Ogmios does not return enough epochs into the future. [A possible symptom](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1057) is `CannotFindTimeInEraSummaries` in the error message. + +When using Plutip, a solution may be [to increase the `epochSize` parameter](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1057#issuecomment-1450692539). ### Q: I'm getting `Uncomputable slot arithmetic; transaction's validity bounds go beyond the foreseeable end of the current era: PastHorizon` From 8407fa4280fd71fa2dfc87666a2e3d5dcc2c4c4a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 6 Oct 2023 14:39:51 +0400 Subject: [PATCH 343/478] Fix formatting --- src/Contract/Time.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index d6cc7146b..d80564c29 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -171,7 +171,8 @@ normalizeTimeInterval = case _ of logInfo' $ "normalizeTimeInterval: desired range: " <> show desired logInfo' $ "normalizeTimeInterval: computed range: " <> show range pure range - i -> liftContractM ("normalizeTimeInterval: could not convert to start-end range: " <> show i) + i -> liftContractM + ("normalizeTimeInterval: could not convert to start-end range: " <> show i) Nothing -- | Get the current Epoch. From f318a77e5d7e939136de1f90849ec05ec0120495 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 6 Oct 2023 16:49:06 +0400 Subject: [PATCH 344/478] Update spago dependencies, fix broken link --- doc/using-from-js.md | 2 +- package-lock.json | 28 +- package.json | 4 +- packages.dhall | 14 +- spago-packages.nix | 24 +- templates/ctl-scaffold/package-lock.json | 1381 +-------------------- templates/ctl-scaffold/package.json | 4 +- templates/ctl-scaffold/packages.dhall | 56 +- templates/ctl-scaffold/spago-packages.nix | 24 +- 9 files changed, 96 insertions(+), 1441 deletions(-) diff --git a/doc/using-from-js.md b/doc/using-from-js.md index e8883a260..4c977528d 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -130,7 +130,7 @@ if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { to only one of the import variants. -Our default [WebPack config](../webpack.config.js) uses `BROWSER_RUNTIME` environment variable to differentiate between two bundling options: +Our default [WebPack config](../webpack.config.cjs) uses `BROWSER_RUNTIME` environment variable to differentiate between two bundling options: ```js plugins: [ diff --git a/package-lock.json b/package-lock.json index cdde7c3c7..1814d3121 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.4", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.4", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -496,18 +496,18 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.4.tgz", - "integrity": "sha512-ZN74Uv9r3978Q/r/bRt4bCa5PeFUcf8qasc8bZf9JLWCpvG2Mgy1rBgb4PlxJpPIFJDU7GdDR2R9fyw334WsIg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", + "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.4.tgz", - "integrity": "sha512-645lSxq5i3jxfGT0gX7/LT3Uz425l0HeJ1gfZzvuhVSPkuLai+xyrUHnf7KOzT1zyRFIyNBaGkm7z+6yKNhBnA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", + "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -6912,18 +6912,18 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.4.tgz", - "integrity": "sha512-ZN74Uv9r3978Q/r/bRt4bCa5PeFUcf8qasc8bZf9JLWCpvG2Mgy1rBgb4PlxJpPIFJDU7GdDR2R9fyw334WsIg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", + "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.4.tgz", - "integrity": "sha512-645lSxq5i3jxfGT0gX7/LT3Uz425l0HeJ1gfZzvuhVSPkuLai+xyrUHnf7KOzT1zyRFIyNBaGkm7z+6yKNhBnA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", + "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" diff --git a/package.json b/package.json index 81c0162c6..eeca76b19 100755 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.4", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.4", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/packages.dhall b/packages.dhall index e6d85cbe5..3bfea3922 100644 --- a/packages.dhall +++ b/packages.dhall @@ -144,8 +144,8 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/errfrom/purescript-aeson.git" - , version = "f614a840036aabb059017d03cf365f4199b9547b" + , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" + , version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6" } , bignumber = { dependencies = @@ -159,8 +159,8 @@ let additions = , "prelude" , "tuples" ] - , repo = "https://github.com/errfrom/purescript-bignumber" - , version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a" + , repo = "https://github.com/mlabs-haskell/purescript-bignumber" + , version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89" } , properties = { dependencies = [ "prelude", "console" ] @@ -219,8 +219,8 @@ let additions = , "unordered-collections" , "unsafe-coerce" ] - , repo = "https://github.com/errfrom/medea-ps.git" - , version = "00981e4ce7249808413a6db8d88d849bbe85245a" + , repo = "https://github.com/mlabs-haskell/medea-ps.git" + , version = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734" } , toppokki = { dependencies = @@ -233,7 +233,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "db0d3c12348da576b28a18782df4ae5d7cc44408" + , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" } , noble-secp256k1 = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index e7d589dab..ee2450952 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,10 +7,10 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "f614a840036aabb059017d03cf365f4199b9547b"; + version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-aeson.git"; - rev = "f614a840036aabb059017d03cf365f4199b9547b"; + url = "https://github.com/mlabs-haskell/purescript-aeson.git"; + rev = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; }; phases = "installPhase"; @@ -199,10 +199,10 @@ let "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; - version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-bignumber"; - rev = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + url = "https://github.com/mlabs-haskell/purescript-bignumber"; + rev = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; sha256 = "03py821gnkgi5p7zaxwr4rqsiv67v83y5c04i6x4v15nr6aaf7vz"; }; phases = "installPhase"; @@ -715,10 +715,10 @@ let "medea" = pkgs.stdenv.mkDerivation { name = "medea"; - version = "00981e4ce7249808413a6db8d88d849bbe85245a"; + version = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/medea-ps.git"; - rev = "00981e4ce7249808413a6db8d88d849bbe85245a"; + url = "https://github.com/mlabs-haskell/medea-ps.git"; + rev = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734"; sha256 = "0sxv9l53hqjx5n7gdnpr5ydxp0zr2wv0ikk2sc0ch9whq5rridcy"; }; phases = "installPhase"; @@ -1363,11 +1363,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "db0d3c12348da576b28a18782df4ae5d7cc44408"; + version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "db0d3c12348da576b28a18782df4ae5d7cc44408"; - sha256 = "1ck1g9mrm8kclmzkrg9hbm97gbvjbk0dcqnzby0c38pc2dqa7xwf"; + rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index a3ce0e63a..561ee2f29 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -33,7 +33,6 @@ }, "devDependencies": { "buffer": "6.0.3", - "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", @@ -496,18 +495,18 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", - "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", + "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", - "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", + "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -548,29 +547,6 @@ } ] }, - "node_modules/@textlint/ast-node-types": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", - "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", - "dev": true - }, - "node_modules/@textlint/markdown-to-ast": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", - "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", - "dev": true, - "dependencies": { - "@textlint/ast-node-types": "^12.6.1", - "debug": "^4.3.4", - "mdast-util-gfm-autolink-literal": "^0.1.3", - "remark-footnotes": "^3.0.0", - "remark-frontmatter": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "traverse": "^0.6.7", - "unified": "^9.2.2" - } - }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -686,15 +662,6 @@ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, - "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", - "dev": true, - "dependencies": { - "@types/unist": "^2" - } - }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -764,12 +731,6 @@ "@types/node": "*" } }, - "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", - "dev": true - }, "node_modules/@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -1111,15 +1072,6 @@ "ajv": "^6.9.1" } }, - "node_modules/anchor-markdown-header": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", - "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", - "dev": true, - "dependencies": { - "emoji-regex": "~10.1.0" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -1212,16 +1164,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1683,46 +1625,6 @@ } ] }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2177,23 +2079,6 @@ "node": ">=6" } }, - "node_modules/doctoc": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", - "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", - "dev": true, - "dependencies": { - "@textlint/markdown-to-ast": "^12.1.1", - "anchor-markdown-header": "^0.6.0", - "htmlparser2": "^7.2.0", - "minimist": "^1.2.6", - "underscore": "^1.13.2", - "update-section": "^0.3.3" - }, - "bin": { - "doctoc": "doctoc.js" - } - }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -2322,12 +2207,6 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, - "node_modules/emoji-regex": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", - "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", - "dev": true - }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2358,18 +2237,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/envinfo": { "version": "7.10.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", @@ -2472,18 +2339,6 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -2683,12 +2538,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -2729,19 +2578,6 @@ "node": ">= 4.9.1" } }, - "node_modules/fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", @@ -2857,15 +2693,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -3242,25 +3069,6 @@ "webpack": "^5.20.0" } }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -3458,30 +3266,6 @@ "node": ">= 10" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -3510,29 +3294,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -3557,16 +3318,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -3618,16 +3369,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -3653,15 +3394,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3813,16 +3545,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -3832,19 +3554,6 @@ "tslib": "^2.0.3" } }, - "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dev": true, - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -3856,165 +3565,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", - "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", - "dev": true, - "dependencies": { - "micromark-extension-frontmatter": "^0.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "dev": true, - "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "dev": true, - "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dev": true, - "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4057,132 +3607,6 @@ "node": ">= 0.6" } }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "dev": true, - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-frontmatter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", - "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", - "dev": true, - "dependencies": { - "fault": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "dev": true, - "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "dev": true, - "dependencies": { - "micromark": "~2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "dev": true, - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "dev": true, - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "dev": true, - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -4280,15 +3704,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -4635,24 +4050,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -5035,61 +4432,6 @@ "node": ">= 0.10" } }, - "node_modules/remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "dev": true, - "dependencies": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-frontmatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", - "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", - "dev": true, - "dependencies": { - "mdast-util-frontmatter": "^0.2.0", - "micromark-extension-frontmatter": "^0.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "dev": true, - "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -5131,15 +4473,6 @@ "entities": "^2.0.0" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -5865,25 +5198,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/tslib": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", @@ -5953,72 +5267,11 @@ "ieee754": "^1.1.13" } }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true - }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/uniqid": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -6058,12 +5311,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-section": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", - "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", - "dev": true - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6134,40 +5381,10 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/vm-browserify": { @@ -6657,16 +5874,6 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } }, "dependencies": { @@ -6912,18 +6119,18 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.3.tgz", - "integrity": "sha512-TXzaD8lWqpA5U5KRiW2iDIQzSyddcgd5tn08GE0KpecuBFOQievtnetUIV6+ERFxWUG7R8x9qWWu8syVfP4WRQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", + "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.3.tgz", - "integrity": "sha512-wjNZH4hwEYYQbjI/vHWmbDRu8Pec40+/ywXWRBUr7mOcE99Zo9u911qeQgdULPp7R4TOhK5alOz+Arp06yCKiQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", + "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -6952,29 +6159,6 @@ "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" }, - "@textlint/ast-node-types": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", - "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", - "dev": true - }, - "@textlint/markdown-to-ast": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", - "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.6.1", - "debug": "^4.3.4", - "mdast-util-gfm-autolink-literal": "^0.1.3", - "remark-footnotes": "^3.0.0", - "remark-frontmatter": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "traverse": "^0.6.7", - "unified": "^9.2.2" - } - }, "@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -7090,15 +6274,6 @@ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, - "@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", - "dev": true, - "requires": { - "@types/unist": "^2" - } - }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -7168,12 +6343,6 @@ "@types/node": "*" } }, - "@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", - "dev": true - }, "@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -7459,15 +6628,6 @@ "dev": true, "requires": {} }, - "anchor-markdown-header": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", - "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", - "dev": true, - "requires": { - "emoji-regex": "~10.1.0" - } - }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -7544,12 +6704,6 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -7897,30 +7051,6 @@ "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true }, - "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "dev": true - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -8295,20 +7425,6 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, - "doctoc": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", - "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", - "dev": true, - "requires": { - "@textlint/markdown-to-ast": "^12.1.1", - "anchor-markdown-header": "^0.6.0", - "htmlparser2": "^7.2.0", - "minimist": "^1.2.6", - "underscore": "^1.13.2", - "update-section": "^0.3.3" - } - }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -8414,12 +7530,6 @@ } } }, - "emoji-regex": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", - "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", - "dev": true - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -8444,12 +7554,6 @@ "tapable": "^2.2.0" } }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - }, "envinfo": { "version": "7.10.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", @@ -8526,12 +7630,6 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -8695,12 +7793,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -8730,15 +7822,6 @@ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, - "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "requires": { - "format": "^0.2.0" - } - }, "faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", @@ -8827,12 +7910,6 @@ "is-callable": "^1.1.3" } }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "dev": true - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9117,18 +8194,6 @@ "tapable": "^2.0.0" } }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -9263,22 +8328,6 @@ "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -9298,12 +8347,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -9319,12 +8362,6 @@ "has": "^1.0.3" } }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -9355,12 +8392,6 @@ "is-extglob": "^2.1.1" } }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, "is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -9377,12 +8408,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -9498,12 +8523,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true - }, "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -9513,15 +8532,6 @@ "tslib": "^2.0.3" } }, - "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dev": true, - "requires": { - "repeat-string": "^1.0.0" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -9533,121 +8543,6 @@ "safe-buffer": "^5.1.2" } }, - "mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dev": true, - "requires": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" - } - }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-frontmatter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", - "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", - "dev": true, - "requires": { - "micromark-extension-frontmatter": "^0.2.0" - } - }, - "mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "dev": true, - "requires": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - } - }, - "mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "dev": true, - "requires": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - } - }, - "mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dev": true, - "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -9681,90 +8576,6 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, - "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "dev": true, - "requires": { - "micromark": "~2.11.0" - } - }, - "micromark-extension-frontmatter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", - "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", - "dev": true, - "requires": { - "fault": "^1.0.0" - } - }, - "micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "dev": true, - "requires": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - } - }, - "micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "dev": true, - "requires": { - "micromark": "~2.11.3" - } - }, - "micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "dev": true, - "requires": { - "micromark": "~2.11.0" - } - }, - "micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "dev": true, - "requires": { - "micromark": "~2.11.0" - } - }, - "micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "dev": true - }, - "micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "dev": true, - "requires": { - "micromark": "~2.11.0" - } - }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -9840,12 +8651,6 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -10107,20 +8912,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -10425,45 +9216,6 @@ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, - "remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "dev": true, - "requires": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - } - }, - "remark-frontmatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", - "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", - "dev": true, - "requires": { - "mdast-util-frontmatter": "^0.2.0", - "micromark-extension-frontmatter": "^0.2.0" - } - }, - "remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "dev": true, - "requires": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, "renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -10497,12 +9249,6 @@ } } }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -11079,18 +9825,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "dev": true - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true - }, "tslib": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", @@ -11139,56 +9873,11 @@ } } }, - "underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true - }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, "uniqid": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.2" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -11205,12 +9894,6 @@ "picocolors": "^1.0.0" } }, - "update-section": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", - "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", - "dev": true - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11280,28 +9963,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -11633,12 +10294,6 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true } } } diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index a1b19fcdd..612f0c84a 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,8 +27,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.3", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.3", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 61e40db6a..de11c5896 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -144,8 +144,23 @@ let additions = , "uint" , "untagged-union" ] - , repo = "https://github.com/errfrom/purescript-aeson.git" - , version = "f614a840036aabb059017d03cf365f4199b9547b" + , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" + , version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6" + } + , bignumber = + { dependencies = + [ "console" + , "effect" + , "either" + , "exceptions" + , "functions" + , "integers" + , "partial" + , "prelude" + , "tuples" + ] + , repo = "https://github.com/mlabs-haskell/purescript-bignumber" + , version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89" } , properties = { dependencies = [ "prelude", "console" ] @@ -204,8 +219,8 @@ let additions = , "unordered-collections" , "unsafe-coerce" ] - , repo = "https://github.com/errfrom/medea-ps.git" - , version = "00981e4ce7249808413a6db8d88d849bbe85245a" + , repo = "https://github.com/mlabs-haskell/medea-ps.git" + , version = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734" } , toppokki = { dependencies = @@ -218,22 +233,21 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "db0d3c12348da576b28a18782df4ae5d7cc44408" + , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" } - , bignumber = + , noble-secp256k1 = { dependencies = - [ "console" + [ "aff" + , "aff-promise" , "effect" - , "either" - , "exceptions" - , "functions" - , "integers" - , "partial" , "prelude" + , "spec" , "tuples" + , "unsafe-coerce" ] - , repo = "https://github.com/errfrom/purescript-bignumber" - , version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a" + , repo = + "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" + , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" } , cardano-transaction-lib = { dependencies = @@ -330,20 +344,6 @@ let additions = , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" , version = "325665b19859bbf3e48e296e9aa717673f5f3d79" } - , noble-secp256k1 = - { dependencies = - [ "aff" - , "aff-promise" - , "effect" - , "prelude" - , "spec" - , "tuples" - , "unsafe-coerce" - ] - , repo = - "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" - } } in upstream // additions diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 17e1e791a..91d6b9f78 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,10 +7,10 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "f614a840036aabb059017d03cf365f4199b9547b"; + version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-aeson.git"; - rev = "f614a840036aabb059017d03cf365f4199b9547b"; + url = "https://github.com/mlabs-haskell/purescript-aeson.git"; + rev = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; }; phases = "installPhase"; @@ -199,10 +199,10 @@ let "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; - version = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-bignumber"; - rev = "9b3179ad07428d189e42a7a205aab9c7c4849d4a"; + url = "https://github.com/mlabs-haskell/purescript-bignumber"; + rev = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; sha256 = "03py821gnkgi5p7zaxwr4rqsiv67v83y5c04i6x4v15nr6aaf7vz"; }; phases = "installPhase"; @@ -727,10 +727,10 @@ let "medea" = pkgs.stdenv.mkDerivation { name = "medea"; - version = "00981e4ce7249808413a6db8d88d849bbe85245a"; + version = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/medea-ps.git"; - rev = "00981e4ce7249808413a6db8d88d849bbe85245a"; + url = "https://github.com/mlabs-haskell/medea-ps.git"; + rev = "9a03a7b7b983fc1d21c4e1fef4cf0748b42f3734"; sha256 = "0sxv9l53hqjx5n7gdnpr5ydxp0zr2wv0ikk2sc0ch9whq5rridcy"; }; phases = "installPhase"; @@ -1375,11 +1375,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "db0d3c12348da576b28a18782df4ae5d7cc44408"; + version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "db0d3c12348da576b28a18782df4ae5d7cc44408"; - sha256 = "1ck1g9mrm8kclmzkrg9hbm97gbvjbk0dcqnzby0c38pc2dqa7xwf"; + rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From b764665e3245387ef2d944217d3e2e36feadef8a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 6 Oct 2023 18:05:30 +0400 Subject: [PATCH 345/478] Fix 'Invalid "exports" main target "index.js" defined in the package config ' --- package-lock.json | 28 ++++++++++++------------ package.json | 4 ++-- templates/ctl-scaffold/package-lock.json | 28 ++++++++++++------------ templates/ctl-scaffold/package.json | 4 ++-- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1814d3121..efff18a3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -496,18 +496,18 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", - "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", + "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", - "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", + "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -6912,18 +6912,18 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", - "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", + "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", - "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", + "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" diff --git a/package.json b/package.json index eeca76b19..0d036440b 100755 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 561ee2f29..27ccbe434 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", @@ -495,18 +495,18 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", - "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", + "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", - "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", + "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" @@ -6119,18 +6119,18 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.5.tgz", - "integrity": "sha512-twCJkL32nytljTje4893P6IM3pI1ZwekrbuWU9C12HQSyS6OpevB/38WfLIZKLS82ZCkqQclDVdnrzCdqd7yNg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", + "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.5.tgz", - "integrity": "sha512-0NuvPFwcdQ94pozFv/VRnFOYGlbd6sb18KsTJP0tkYeuI++kjxZmtF0sT7uLUMFqMbezgYqmA1sSAFWJ6Sq5Sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", + "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", "requires": { "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 612f0c84a..e6ad49787 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,8 +27,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.5", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.5", + "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": " 1.0.0", "@noble/secp256k1": "^1.7.0", From 0c314cc3602b185576575e3aa7cda37640a472e6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 6 Oct 2023 20:02:21 +0400 Subject: [PATCH 346/478] Fix toppoki dependency --- packages.dhall | 2 +- spago-packages.nix | 6 +++--- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages.dhall b/packages.dhall index 3bfea3922..59d1f7eb2 100644 --- a/packages.dhall +++ b/packages.dhall @@ -233,7 +233,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" + , version = "5992e93396a734c980ef61c74df5b6ab46108920" } , noble-secp256k1 = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index ee2450952..ad8fec593 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1363,11 +1363,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + version = "5992e93396a734c980ef61c74df5b6ab46108920"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; - sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + rev = "5992e93396a734c980ef61c74df5b6ab46108920"; + sha256 = "12sbs5x20rmr6xrh9y69aw7bmiwnmj8a0s5s9s1mh66fyh7gfh3s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index de11c5896..765b35fc4 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -233,7 +233,7 @@ let additions = , "node-fs-aff" ] , repo = "https://github.com/mlabs-haskell/purescript-toppokki" - , version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb" + , version = "5992e93396a734c980ef61c74df5b6ab46108920" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 91d6b9f78..ddecaa01d 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -1375,11 +1375,11 @@ let "toppokki" = pkgs.stdenv.mkDerivation { name = "toppokki"; - version = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; + version = "5992e93396a734c980ef61c74df5b6ab46108920"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-toppokki"; - rev = "f90f92f0ddf0eecc73705c1675db37918d18cbcb"; - sha256 = "1kmqajf7n5l9lk4amyma3rhm60llrgamap5hi21kkqs52xm3fr2q"; + rev = "5992e93396a734c980ef61c74df5b6ab46108920"; + sha256 = "12sbs5x20rmr6xrh9y69aw7bmiwnmj8a0s5s9s1mh66fyh7gfh3s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 62faa6e614946fd50eb4d046d0f40ac613be1450 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 6 Oct 2023 22:02:38 +0400 Subject: [PATCH 347/478] Inline script contents in ApplyArgs example to avoid bundling files --- test/ApplyArgs.purs | 281 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 235 insertions(+), 46 deletions(-) diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index e2f9c11e7..9e08c782b 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -13,8 +13,6 @@ import Contract.TextEnvelope , plutusScriptV2FromEnvelope ) import Control.Monad.Error.Class (class MonadError) -import Control.Monad.Trans.Class (lift) -import Control.Parallel (parTraverse) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) @@ -22,54 +20,244 @@ import Data.BigInt (fromInt) import Data.List.Lazy (replicate) import Data.Profunctor.Choice (left) import Effect.Aff (Error, error, throwError) -import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object as Object import Mote (group, test) -import Node.Encoding (Encoding(UTF8)) -import Node.FS.Aff (readTextFile) import Test.Spec.Assertions (shouldEqual) -scriptFilenames :: Object String -scriptFilenames = +scriptSources :: Object String +scriptSources = Object.fromFoldable - [ "always-fails" /\ "always-fails.plutus" - , "include-datum" /\ "include-datum.plutus" - , "one-shot-minting" /\ "one-shot-minting.plutus" - , "redeemer1-validator" /\ "redeemer1-validator.plutus" - , "always-succeeds-v2" /\ "always-succeeds-v2.plutus" - , "one-shot-minting-v2" /\ "one-shot-minting-v2.plutus" - , "check-datum-is-inline" /\ "check-datum-is-inline.plutus" - , "always-fails-big-arg" /\ "applied/always-fails-big-arg.plutus" - , "always-fails-no-args" /\ "applied/always-fails-no-args.plutus" - , "always-fails-unit" /\ "applied/always-fails-unit.plutus" + [ "always-fails" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" +} + """ + , "always-fails-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58ff58fd0100003333333332232322223500400712350023530030014984984800480053010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "always-fails-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" +} +""" + , "always-fails-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5826582401000033322323222235004007123500235300300149849848004800530103d879800001" +} +""" + + , "include-datum" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "include-datum", + "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" +} +""" + , "include-datum-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58f658f401000033333332225333573466e1cdd6801a40a82930b2610107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "include-datum-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" +} +""" + , "include-datum-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581d581b01000032225333573466e1cdd6801a40a82930b26103d879800001" +} +""" + + , "one-shot-minting" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "one-shot-minting", + "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" +} +""" + , "one-shot-minting-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5909b75909b4010000333333333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "one-shot-minting-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" +} +""" + , "one-shot-minting-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5908de5908db010000333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c0103d879800001" +} +""" + + , "always-succeeds-v2" /\ + """ +{ + "cborHex": "4e4d01000033222220051200120011", + "description": "always-succeeds", + "type": "PlutusScriptV2" +} +""" , "always-succeeds-v2-big-arg" /\ - "applied/always-succeeds-v2-big-arg.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "58f058ee010000333333333222220051200120014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" , "always-succeeds-v2-no-args" /\ - "applied/always-succeeds-v2-no-args.plutus" - , "always-succeeds-v2-unit" /\ "applied/always-succeeds-v2-unit.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "4e4d01000033222220051200120011" +} +""" + , "always-succeeds-v2-unit" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "5655010000333222220051200120014c0103d879800001" +} +""" + + , "check-datum-is-inline" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" +} +""" , "check-datum-is-inline-big-arg" /\ - "applied/check-datum-is-inline-big-arg.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590969590966010000333333332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" , "check-datum-is-inline-no-args" /\ - "applied/check-datum-is-inline-no-args.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" +} +""" , "check-datum-is-inline-unit" /\ - "applied/check-datum-is-inline-unit.plutus" - , "include-datum-big-arg" /\ "applied/include-datum-big-arg.plutus" - , "include-datum-no-args" /\ "applied/include-datum-no-args.plutus" - , "include-datum-unit" /\ "applied/include-datum-unit.plutus" - , "one-shot-minting-big-arg" /\ "applied/one-shot-minting-big-arg.plutus" - , "one-shot-minting-no-args" /\ "applied/one-shot-minting-no-args.plutus" - , "one-shot-minting-unit" /\ "applied/one-shot-minting-unit.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59089059088d010000332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c0103d879800001" +} +""" + + , "one-shot-minting-v2" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "one-shot-minting", + "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" +} +""" , "one-shot-minting-v2-big-arg" /\ - "applied/one-shot-minting-v2-big-arg.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590a0d590a0a010000333333333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" , "one-shot-minting-v2-no-args" /\ - "applied/one-shot-minting-v2-no-args.plutus" - , "one-shot-minting-v2-unit" /\ "applied/one-shot-minting-v2-unit.plutus" + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" +} +""" + , "one-shot-minting-v2-unit" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590934590931010000333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c0103d879800001" +} +""" + + , "redeemer1-validator" /\ + """ +{ + "description": "validator that checks whether redeemer is 1", + "cborHex": "4e4d0100002223375e0046ea120021", + "type": "PlutusScriptV1" +} +""" , "redeemer1-validator-big-arg" /\ - "applied/redeemer1-validator-big-arg.plutus" + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58f058ee01000033333332223375e0046ea120024c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" , "redeemer1-validator-no-args" /\ - "applied/redeemer1-validator-no-args.plutus" - , "redeemer1-validator-unit" /\ "applied/redeemer1-validator-unit.plutus" + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "4e4d0100002223375e0046ea120021" +} +""" + , "redeemer1-validator-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "565501000032223375e0046ea120024c0103d879800001" +} +""" ] main :: Effect Unit @@ -77,28 +265,29 @@ main = launchAff_ $ interpret $ suite contract :: Contract Unit contract = do - scripts <- liftAff $ parTraverse loadScript scriptFilenames - traverse_ (uncurry $ compareApplied (v1 scripts)) $ Tuple <$> v1ScriptPaths + traverse_ (uncurry $ compareApplied (v1 scriptSources)) $ Tuple + <$> v1ScriptPaths <*> params - traverse_ (uncurry $ compareApplied (v2 scripts)) $ Tuple <$> v2ScriptPaths + traverse_ (uncurry $ compareApplied (v2 scriptSources)) $ Tuple + <$> v2ScriptPaths <*> params suite :: TestPlanM (Aff Unit) Unit suite = group "Applying params to scripts test" $ do - scripts <- lift $ parTraverse loadScript scriptFilenames - traverse_ (uncurry $ testCase (v1 scripts)) $ Tuple <$> v1ScriptPaths <*> - params - traverse_ (uncurry $ testCase (v2 scripts)) $ Tuple <$> v2ScriptPaths <*> - params + traverse_ (uncurry $ testCase $ v1 scriptSources) + $ Tuple + <$> v1ScriptPaths + <*> params + traverse_ (uncurry $ testCase $ v2 scriptSources) + $ Tuple + <$> v2ScriptPaths + <*> params where testCase lang scriptName (args /\ argsName) = test ("Apply " <> argsName <> " to " <> scriptName) $ compareApplied lang scriptName (args /\ argsName) -loadScript :: String -> Aff String -loadScript = readTextFile UTF8 <<< append "./fixtures/scripts/" - compareApplied :: forall (m :: Type -> Type) . Monad m From 7113bd7cdba370e6a3410dfeaeeb4411a4adb1e7 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Mon, 9 Oct 2023 07:29:42 +1300 Subject: [PATCH 348/478] Better error message for MintingPolicyNotFound --- examples/AdditionalUtxos.purs | 3 +-- src/Contract/UnbalancedTx.purs | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 49338d0b9..1eb079782 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -124,8 +124,7 @@ spendFromValidator validator additionalUtxos datum = do BalancerConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTxWithConstraints unbalancedTx - balancerConstraints + balancedTx <- balanceTxWithConstraints unbalancedTx balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 3e78f18ef..c638dd9d5 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -155,7 +155,10 @@ explainMkUnbalancedTxError = case _ of MintingPolicyHashNotCurrencySymbol mph -> "Minting policy hash " <> show mph <> " is not a CurrencySymbol. Please check the validity of the byte representation." - MintingPolicyNotFound mp -> "Minting policy not found: " <> show mp + MintingPolicyNotFound mp -> "Minting policy " + <> show mp + <> + " not found in a set of minting policies" ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" From ee61113bc1845b6fd9c7a379399eaab540ba819a Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Mon, 9 Oct 2023 11:19:32 +1300 Subject: [PATCH 349/478] Remove unnecessary error variants for time conversion errors --- CHANGELOG.md | 2 + src/Contract/Time.purs | 1 - src/Internal/Types/Interval.purs | 76 ++++++++++++++++---------------- test/Plutus/Time.purs | 2 - 4 files changed, 40 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50541a479..915e21fe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,6 +143,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `CannotConvertPaymentPubKeyHash`, `CannotHashMintingPolicy`, `CannotHashValidator` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `InvalidInContext` (not needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `CannotGetBigIntFromNumber'` and `CannotGetBigNumFromBigInt'` variants of + `PosixTimeToSlotError` (no longer needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ## [v5.0.0] diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index d80564c29..5ea5d4cab 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -63,7 +63,6 @@ import Ctl.Internal.Types.Interval , PosixTimeBeforeSystemStart , StartTimeGreaterThanTime , EndSlotLessThanSlotOrModNonZero - , CannotGetBigIntFromNumber' ) , RelTime(RelTime) , SlotRange diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index b1573270d..eb299501b 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -13,8 +13,6 @@ module Ctl.Internal.Types.Interval , PosixTimeBeforeSystemStart , StartTimeGreaterThanTime , EndSlotLessThanSlotOrModNonZero - , CannotGetBigIntFromNumber' - , CannotGetBigNumFromBigInt' ) , RelSlot(RelSlot) , RelTime(RelTime) @@ -853,8 +851,6 @@ data PosixTimeToSlotError | PosixTimeBeforeSystemStart POSIXTime | StartTimeGreaterThanTime AbsTime | EndSlotLessThanSlotOrModNonZero Slot ModTime - | CannotGetBigIntFromNumber' - | CannotGetBigNumFromBigInt' derive instance Generic PosixTimeToSlotError _ derive instance Eq PosixTimeToSlotError @@ -874,12 +870,6 @@ explainPosixTimeToSlotError = case _ of "Time is after the era end time. Calculated slot: " <> show slot <> ", calculated residual time after end: " <> show mtime - CannotGetBigIntFromNumber' -> - "Internal error: cannot convert a time to a usable value. " <> - "This should be impossible." - CannotGetBigNumFromBigInt' -> - "Internal error: cannot convert a slot number to a usable value. " <> - "This should be impossible." posixTimeToSlotErrorStr :: String posixTimeToSlotErrorStr = "posixTimeToSlotError" @@ -905,16 +895,6 @@ instance EncodeAeson PosixTimeToSlotError where posixTimeToSlotErrorStr "endSlotLessThanSlotOrModNonZero" [ encodeAeson slot, encodeAeson modTime ] - encodeAeson CannotGetBigIntFromNumber' = - encodeAeson $ mkErrorRecord - posixTimeToSlotErrorStr - "cannotGetBigIntFromNumber'" - aesonNull - encodeAeson CannotGetBigNumFromBigInt' = - encodeAeson $ mkErrorRecord - posixTimeToSlotErrorStr - "cannotGetBigNumFromBigInt'" - aesonNull instance DecodeAeson PosixTimeToSlotError where decodeAeson = aesonObject $ \o -> do @@ -943,14 +923,6 @@ instance DecodeAeson PosixTimeToSlotError where (TypeMismatch "Could not extract second element") (index args 1) pure $ EndSlotLessThanSlotOrModNonZero as mt - "cannotGetBigIntFromNumber'" -> do - args <- getField o "args" - unless (isNull args) (throwError $ TypeMismatch "Non-empty args") - pure CannotGetBigIntFromNumber' - "cannotGetBigNumFromBigInt'" -> do - args <- getField o "args" - unless (isNull args) (throwError $ TypeMismatch "Non-empty args") - pure CannotGetBigNumFromBigInt' _ -> throwError $ TypeMismatch "Unknown error message" -- | Converts a `POSIXTime` to `Slot` given an `EraSummaries` and @@ -961,8 +933,12 @@ posixTimeToSlot -> POSIXTime -> Either PosixTimeToSlotError Slot posixTimeToSlot eraSummaries sysStart pt'@(POSIXTime pt) = runExcept do - -- Get POSIX time for system start: - sysStartPosix <- liftM CannotGetBigIntFromNumber' $ sysStartUnixTime sysStart + -- Get POSIX time for system start. + -- This is safe, as the only reason for sysStartUnixTime being partial is due + -- to a conversion from a Number, which may be an infinity or NaN in the + -- general case. However, we know that system time cannot be either of these + -- things. + let sysStartPosix = unsafePartial $ fromJust $ sysStartUnixTime sysStart -- Ensure the time we are converting is after the system start, otherwise -- we have negative slots. unless (sysStartPosix <= pt) @@ -975,8 +951,7 @@ posixTimeToSlot eraSummaries sysStart pt'@(POSIXTime pt) = runExcept do -- Get relative time from absolute time w.r.t. current era relTime <- liftEither $ relTimeFromAbsTime currentEra absTime -- Convert to relative slot - relSlotMod <- liftM CannotGetBigIntFromNumber' $ relSlotFromRelTime currentEra - relTime + let relSlotMod = relSlotFromRelTime currentEra relTime -- Get absolute slot relative to system start liftEither $ slotFromRelSlot currentEra relSlotMod @@ -1008,12 +983,35 @@ relTimeFromAbsTime (EraSummary { start }) at@(AbsTime absTime) = do (throwError $ StartTimeGreaterThanTime at) let relTime = BigInt.toNumber absTime - startTime -- relative to era start, not UNIX Epoch. - wrap <$> - ( note CannotGetBigIntFromNumber' - <<< BigInt.fromNumber - <<< Math.trunc - ) relTime + -- This conversion cannot fail. + let + relTimeBi = unsafePartial $ fromJust $ BigInt.fromNumber $ Math.trunc + relTime + pure $ wrap relTimeBi + +-- | Converts relative time to a relative slot (using Euclidean division) and +-- | modulus for any leftover. +relSlotFromRelTime + :: EraSummary + -> RelTime + -> (RelSlot /\ ModTime) +relSlotFromRelTime eraSummary (RelTime relTime) = + let + slotLength = getSlotLength eraSummary + relTimeBn = BigInt.toNumber relTime + relSlot = relTimeBn / slotLength + modTime = relTimeBn Math.% slotLength + -- Both of these are safe: the conversion from Number to BigInt must be + -- partial to account for NaN and infinities, but we can't have either of + -- those here. + in + (wrap $ toBigIntUnsafe $ Math.trunc $ relSlot) /\ + (wrap $ toBigIntUnsafe modTime) + where + toBigIntUnsafe :: Number -> BigInt + toBigIntUnsafe x = unsafePartial $ fromJust $ BigInt.fromNumber x +{-[ -- | Converts relative time to relative slot (using Euclidean division) and -- | modulus for any leftover. relSlotFromRelTime @@ -1027,6 +1025,7 @@ relSlotFromRelTime eraSummary (RelTime relTime) = BigInt.fromNumber (BigInt.toNumber relTime Math.% slotLength) in (/\) <$> relSlot <*> modTime + -} slotFromRelSlot :: EraSummary -> RelSlot /\ ModTime -> Either PosixTimeToSlotError Slot @@ -1046,7 +1045,8 @@ slotFromRelSlot endSlot = maybe (slot + one) (BigNum.toBigInt <<< unwrap <<< _.slot <<< unwrap) end - bnSlot <- liftM CannotGetBigNumFromBigInt' $ BigNum.fromBigInt slot + -- Slot numbers should convert without error. + let bnSlot = unsafePartial $ fromJust $ BigNum.fromBigInt slot -- Check we are less than the end slot, or if equal, there is no excess: unless (slot < endSlot || slot == endSlot && modTime == zero) (throwError $ EndSlotLessThanSlotOrModNonZero (wrap bnSlot) mt) diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 0187c9c08..dd86d99d0 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -28,7 +28,6 @@ import Ctl.Internal.Types.Interval , POSIXTime(POSIXTime) , PosixTimeToSlotError ( CannotFindTimeInEraSummaries - , CannotGetBigIntFromNumber' , EndSlotLessThanSlotOrModNonZero , PosixTimeBeforeSystemStart , StartTimeGreaterThanTime @@ -251,7 +250,6 @@ suite = do absTimeFixture toFromAesonTest "EndSlotLessThanSlotOrModNonZero" $ EndSlotLessThanSlotOrModNonZero slotFixture modTimeFixture - toFromAesonTest "CannotGetBigIntFromNumber'" $ CannotGetBigIntFromNumber' group "ToOnChainPosixTimeRangeError" do toFromAesonTest "PosixTimeToSlotError'" $ PosixTimeToSlotError' posixTimeToSlotErrFixture From 9896124fe8729c6bd7e2b802ca6f760fc4f62587 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Mon, 9 Oct 2023 11:51:30 +1300 Subject: [PATCH 350/478] Expose runContractTestsWithKeyDir from Contract.Test --- CHANGELOG.md | 2 ++ src/Contract/Test.purs | 3 +++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6f631a30..2b39f99a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -101,6 +101,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - UTxO lists and combined input/output/mint/fee values are now being pretty-printed instead of logged using `Show` instance (in the balancer) ([#1531](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1531)) +- `runContractTestsWithKeyDir` now exposed from `Contract.Test` + ([#1549](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1549)) ### Fixed diff --git a/src/Contract/Test.purs b/src/Contract/Test.purs index 591ba8e5a..598250d86 100644 --- a/src/Contract/Test.purs +++ b/src/Contract/Test.purs @@ -8,6 +8,9 @@ import Ctl.Internal.Test.ContractTest , noWallet , withWallets ) as X +import Ctl.Internal.Test.KeyDir + ( runContractTestsWithKeyDir + ) as X import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution From 08c6a6b2b8ca197f5e3f9d11a2e08181dbfc3b6a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 9 Oct 2023 14:59:51 +0300 Subject: [PATCH 351/478] Update src/Contract/UnbalancedTx.purs --- src/Contract/UnbalancedTx.purs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index c638dd9d5..398666501 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -157,8 +157,7 @@ explainMkUnbalancedTxError = case _ of " is not a CurrencySymbol. Please check the validity of the byte representation." MintingPolicyNotFound mp -> "Minting policy " <> show mp - <> - " not found in a set of minting policies" + <> " not found in a set of minting policies" ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" From 25106e98d7f40926a8d2f967b46d716cd6975224 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 10 Oct 2023 09:19:33 +1300 Subject: [PATCH 352/478] Tidy Interval.purs, explain use of unsafePartial better --- src/Internal/Types/Interval.purs | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index eb299501b..e655b87a1 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -983,7 +983,8 @@ relTimeFromAbsTime (EraSummary { start }) at@(AbsTime absTime) = do (throwError $ StartTimeGreaterThanTime at) let relTime = BigInt.toNumber absTime - startTime -- relative to era start, not UNIX Epoch. - -- This conversion cannot fail. + -- This conversion cannot fail: since 'relTime' is an offset from the start of + -- an era, we can't overflow the 64-bit limit. let relTimeBi = unsafePartial $ fromJust $ BigInt.fromNumber $ Math.trunc relTime @@ -1011,22 +1012,6 @@ relSlotFromRelTime eraSummary (RelTime relTime) = toBigIntUnsafe :: Number -> BigInt toBigIntUnsafe x = unsafePartial $ fromJust $ BigInt.fromNumber x -{-[ --- | Converts relative time to relative slot (using Euclidean division) and --- | modulus for any leftover. -relSlotFromRelTime - :: EraSummary -> RelTime -> Maybe (RelSlot /\ ModTime) -relSlotFromRelTime eraSummary (RelTime relTime) = - let - slotLength = getSlotLength eraSummary - relSlot = wrap <$> - (BigInt.fromNumber <<< Math.trunc) (BigInt.toNumber relTime / slotLength) - modTime = wrap <$> - BigInt.fromNumber (BigInt.toNumber relTime Math.% slotLength) - in - (/\) <$> relSlot <*> modTime - -} - slotFromRelSlot :: EraSummary -> RelSlot /\ ModTime -> Either PosixTimeToSlotError Slot slotFromRelSlot @@ -1045,7 +1030,8 @@ slotFromRelSlot endSlot = maybe (slot + one) (BigNum.toBigInt <<< unwrap <<< _.slot <<< unwrap) end - -- Slot numbers should convert without error. + -- Slot numbers should convert without error: they're meant to be 64-bit + -- integers anyway. let bnSlot = unsafePartial $ fromJust $ BigNum.fromBigInt slot -- Check we are less than the end slot, or if equal, there is no excess: unless (slot < endSlot || slot == endSlot && modTime == zero) From d51471faf94a61dde7878646d97cafa5bf0ded7e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 10 Oct 2023 12:23:41 +0400 Subject: [PATCH 353/478] Move Blockfrost API key setup to the core of the lib --- examples/index.html | 60 ------------------------------- examples/index.js | 3 +- src/Internal/Test/E2E/Route.js | 61 ++++++++++++++++++++++++++++++++ src/Internal/Test/E2E/Route.purs | 3 ++ templates/ctl-scaffold/index.js | 2 -- 5 files changed, 66 insertions(+), 63 deletions(-) diff --git a/examples/index.html b/examples/index.html index 556bfcde5..3247c9a06 100644 --- a/examples/index.html +++ b/examples/index.html @@ -5,66 +5,6 @@ - diff --git a/examples/index.js b/examples/index.js index 2ea8c88a3..717933184 100644 --- a/examples/index.js +++ b/examples/index.js @@ -1,8 +1,9 @@ "use strict"; -// This needs to be asynchronous to load the WASM from CSL +// This needs to be asynchronous to load the WASM from cardano-serialization-lib // // You also need to call `spago bundle-module` to generate the module that is // imported here. From the repository root, run: // spago bundle-module -m
--to output.js +// Normally it should be done via Nix (see flake.nix) or via a Makefile import("../output.js").then(m => m.main()); diff --git a/src/Internal/Test/E2E/Route.js b/src/Internal/Test/E2E/Route.js index cf7c28ae2..b848aa400 100644 --- a/src/Internal/Test/E2E/Route.js +++ b/src/Internal/Test/E2E/Route.js @@ -2,6 +2,67 @@ export function _queryString() { return window.location.search; } +export function _setupBlockfrostApi() { + // Set up Blockfrost API key prompt and UI around it. + // This code is only needed for CTL itself. + const oldBlockfrostKey = localStorage.getItem("BLOCKFROST_API_KEY"); + + const addSpacer = () => { + const spacer = document.createElement("span"); + spacer.textContent = " "; + document.body.appendChild(spacer); + }; + + const addHtml = html => { + const div = document.createElement("div"); + div.innerHTML = html; + document.body.appendChild(div); + }; + + addHtml(`

Blockfrost setup

`); + + if (oldBlockfrostKey !== null) { + const keyIsSetEl = document.createElement("span"); + keyIsSetEl.innerHTML = + '✅ Blockfrost key is set.'; + document.body.appendChild(keyIsSetEl); + + addSpacer(); + + const setBFKeyButton = document.createElement("button"); + setBFKeyButton.textContent = "Unset"; + setBFKeyButton.onclick = () => { + localStorage.removeItem("BLOCKFROST_API_KEY"); + window.location = "/"; + }; + document.body.appendChild(setBFKeyButton); + } else { + const keyIsNotSetEl = document.createElement("span"); + keyIsNotSetEl.innerHTML = + '❌ Blockfrost key is not set.'; + document.body.appendChild(keyIsNotSetEl); + + addSpacer(); + + const setBFKeyButton = document.createElement("button"); + setBFKeyButton.textContent = "Set Blockfrost API key"; + setBFKeyButton.onclick = () => { + const key = prompt("Enter your Blockfrost API key"); + if (key !== null) { + localStorage.setItem("BLOCKFROST_API_KEY", key); + window.location = "/"; + } + }; + document.body.appendChild(setBFKeyButton); + } + + addHtml(`
If you are viewing this page via an E2E-test-suite-controlled browser, to set the Blockfrost API key permanently, close the browser and run: +
+        npm run e2e-pack-settings
+      
+ The key will be saved to your settings archive. Sharing the archive file after that implies that the key can be leaked.
`); +} + const createLink = (example, wallet) => '' + wallet + ""; diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 7b44844ee..f3bf46b10 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -111,6 +111,7 @@ addLinks configMaps testMaps = do configs = Array.fromFoldable $ Map.keys configMaps tests = Array.fromFoldable $ Map.keys testMaps _addLinks configs tests + _setupBlockfrostApi -- | Serves given examples conditionally, depending on the URL query part. -- | @@ -223,3 +224,5 @@ foreign import _writeExampleHTML :: String -> Array String -> Effect Unit foreign import _addLinks :: Array E2EConfigName -> Array E2ETestName -> Effect Unit + +foreign import _setupBlockfrostApi :: Effect Unit diff --git a/templates/ctl-scaffold/index.js b/templates/ctl-scaffold/index.js index b9185a093..c2eeb8660 100644 --- a/templates/ctl-scaffold/index.js +++ b/templates/ctl-scaffold/index.js @@ -6,5 +6,3 @@ // imported here. From the repository root, run: // spago bundle-module -m
--to output.js import("./output.js").then(m => m.main()); - -console.log("app starting"); From 2c01b2de1a4e8ecf0cff34f7e3a3e4ce36cf84cf Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 10 Oct 2023 18:34:39 +0400 Subject: [PATCH 354/478] Synchronize webpack config in the template --- .../{webpack.config.js => webpack.config.cjs} | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) rename templates/ctl-scaffold/{webpack.config.js => webpack.config.cjs} (93%) diff --git a/templates/ctl-scaffold/webpack.config.js b/templates/ctl-scaffold/webpack.config.cjs similarity index 93% rename from templates/ctl-scaffold/webpack.config.js rename to templates/ctl-scaffold/webpack.config.cjs index bc391a252..7f4710173 100644 --- a/templates/ctl-scaffold/webpack.config.js +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -43,6 +43,9 @@ module.exports = { output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js", + library: { + type: "module", + }, }, module: { @@ -78,11 +81,6 @@ module.exports = { readline: false, child_process: false, }, - alias: { - // You should update this path to the location of your compiled scripts, - // relative to `webpack.config.js` - Scripts: path.resolve(__dirname, "scripts"), - }, }, plugins: [ From 5072d03a466cd610bfafd09656c5233ec6f2db5b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 11 Oct 2023 20:28:31 +0400 Subject: [PATCH 355/478] WIP: refactor bundling; let bundle* commands produce just the bundle --- .gitignore | 11 +---- Makefile | 2 +- dist/esbuild/index.html | 13 ------ dist/webpack/.gitkeep | 0 esbuild/bundle.js | 11 ++++- esbuild/config.js | 8 ++-- esbuild/serve.js | 20 +++++++-- flake.nix | 7 ++- nix/default.nix | 86 +++++++++++++++++++++++++++++-------- scripts/whitespace-check.sh | 2 +- webpack.config.cjs | 7 +-- 11 files changed, 107 insertions(+), 60 deletions(-) delete mode 100644 dist/esbuild/index.html delete mode 100644 dist/webpack/.gitkeep diff --git a/.gitignore b/.gitignore index 50485c009..a8bba0b04 100644 --- a/.gitignore +++ b/.gitignore @@ -15,14 +15,7 @@ result-* .node .node-cfg .projectile -/dist/* -!/dist/esbuild/ -/dist/esbuild/* -!/dist/esbuild/index.html -!/dist/esbuild/wrapper.js -!/dist/webpack/ -/dist/webpack/* -!/dist/webpack/.gitkeep +/dist/ output.js .DS_Store .idea/ @@ -34,5 +27,5 @@ test-data/keys tmp node_modules plutip-server/dist-newstyle/ +plutip-server/dist/ plutip-server/.stack-work/ - diff --git a/Makefile b/Makefile index 6bd9d7678..b30082faa 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,6 @@ preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r esbuild-bundle: @spago build \ - && cp -rf fixtures dist/esbuild \ && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} esbuild-serve: esbuild-bundle @@ -85,3 +84,4 @@ clean: @ rm -rf .spago2nix || true @ rm -rf node_modules || true @ rm -rf output || true + @ rm -rf dist || true diff --git a/dist/esbuild/index.html b/dist/esbuild/index.html deleted file mode 100644 index e3c16ed39..000000000 --- a/dist/esbuild/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - Examples source code is located in examples/ directory.
- - diff --git a/dist/webpack/.gitkeep b/dist/webpack/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/esbuild/bundle.js b/esbuild/bundle.js index c3a5dd652..f8b295be2 100755 --- a/esbuild/bundle.js +++ b/esbuild/bundle.js @@ -1,4 +1,13 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; -esbuild.build(buildOptions); +if (process.argv.length < 4) { + throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_DIR`; +} + +esbuild.build( + buildOptions({ + entryPoint: process.argv[2], + outputDir: process.argv[3], + }) +); diff --git a/esbuild/config.js b/esbuild/config.js index a53bdb2c1..e69198952 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -1,9 +1,9 @@ import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -export const buildOptions = { - entryPoints: [`output/${process.argv[2]}/index.js`], - outdir: "dist/esbuild", +export const buildOptions = ({ entryPoint, outputDir }) => ({ + entryPoints: [entryPoint], + outdir: outputDir, define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, }, @@ -24,4 +24,4 @@ export const buildOptions = { format: "esm", treeShaking: true, logLevel: "error", -}; +}); diff --git a/esbuild/serve.js b/esbuild/serve.js index 9b3637eb1..a1ee33f79 100755 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -1,11 +1,23 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; -const ctx = await esbuild.context(buildOptions); +if (process.argv.length < 7) { + throw `usage: nodejs serve.js PURESCRIPT_MODULE OUTPUT_DIR SERVE_DIR HOST PORT`; +} + +const ctx = await esbuild.context( + buildOptions({ + pursEntryPoint: process.argv[2], + outputDir: process.argv[3], + }) +); + const config = { - host: "127.0.0.1", - port: 4008, - servedir: "dist/esbuild", + host: process.argv[5], + port: process.argv[6], + servedir: process.argv[4], }; + console.log("serving:", config); + await ctx.serve(config); diff --git a/flake.nix b/flake.nix index 85a25d245..20086d9a3 100644 --- a/flake.nix +++ b/flake.nix @@ -157,9 +157,12 @@ in rec { packages = { - ctl-example-bundle-web = project.bundlePursProject { + ctl-example-bundle-web = project.bundlePursProjectEsbuild { + main = "Ctl.Examples.ByUrl"; + }; + + ctl-example-bundle-web-webpack = project.bundlePursProjectWebpack { main = "Ctl.Examples.ByUrl"; - entrypoint = "examples/index.js"; }; ctl-runtime = pkgs.arion.build { diff --git a/nix/default.nix b/nix/default.nix index 3adc1d8a6..973dd7480 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -10,10 +10,6 @@ # this in explicitly, even if it can be derived from the `src` argument. By # doing so, you will prevent frequent rebuilds of your generated `node_modules` , packageLock ? "${src}/package-lock.json" - # If warnings generated from project source files will trigger a build error -, strictComp ? true - # Warnings from `purs` to silence during compilation, independent of `strictComp` -, censorCodes ? [ "UserDefinedWarning" ] # The version of node to use across all project components , nodejs ? pkgs.nodejs-18_x # Autogenerated Nix from `spago2nix generate` @@ -177,6 +173,12 @@ let # Generated `node_modules` in the Nix store. Can be passed to have better # control over individual project components , nodeModules ? projectNodeModules + # If warnings generated from project source files will trigger a build error. + # Controls `--strict` purescript-psa flag + , strictComp ? true + # Warnings from `purs` to silence during compilation, independent of `strictComp` + # Controls `--censor-codes` purescript-psa flag + , censorCodes ? [ "UserDefinedWarning" ] , ... }: pkgs.stdenv.mkDerivation { @@ -291,13 +293,12 @@ let # Passed through to the `buildInputs` of the derivation. Use this to add # additional packages to the test environment , buildInputs ? [ ] + , bundledPursProject ? (bundlePursProjectWebpack { + main = testMain; + }) , ... }@args: let - bundledPursProject = bundlePursProject { - main = "Ctl.Examples.ByUrl"; - entrypoint = "examples/index.js"; - }; # We need fonts if we are going to use chromium etc_fonts = let @@ -374,7 +375,7 @@ let export OGMIOS_PORT=1345 export E2E_EXTRA_BROWSER_ARGS="--disable-web-security" - python -m http.server 4008 --directory ${bundledPursProject}/dist/esbuild & + python -m http.server 4008 --directory ${bundledPursProject} & until curl -S http://127.0.0.1:4008/index.html &>/dev/null; do echo "Trying to connect to webserver..."; sleep 0.1; @@ -388,16 +389,60 @@ let '' ; - # Bundles a Purescript project using Webpack, typically for the browser - bundlePursProject = + # Bundles a Purescript project using esbuild, typically for the browser + bundlePursProjectEsbuild = { # Can be used to override the name given to the resulting derivation name ? "${projectName}-bundle-" + (if browserRuntime then "web" else "nodejs") # The main Purescript module , main ? "Main" + # Whether this bundle is being produced for a browser environment or not + , browserRuntime ? true + , esbuildBundleScript ? "esbuild/bundle.js" + # Generated `node_modules` in the Nix store. Can be passed to have better + # control over individual project components + , nodeModules ? projectNodeModules + , ... + }: pkgs.runCommand "${name}" + { + buildInputs = [ + nodejs + nodeModules + project + ]; + nativeBuildInputs = [ + purs + pkgs.easy-ps.spago + ]; + } + '' + export HOME="$TMP" + export NODE_PATH="${nodeModules}/lib/node_modules" + ln -sfn $NODE_PATH node_modules + export PATH="${nodeModules}/bin:$PATH" + ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} + chmod -R +rw . + cp -r ${project}/* . + node ${esbuildBundleScript} ./output/${main}/index.js dist/ + mkdir $out + mv dist/* $out + ''; + + # Bundles a Purescript project using Webpack, typically for the browser + bundlePursProjectWebpack = + { + # Can be used to override the name given to the resulting derivation + name ? "${projectName}-bundle-" + + (if browserRuntime then "web" else "nodejs") + # The main Purescript module + , main + # The entry point function in the main PureScript module + , psEntryPoint ? "main" # If this bundle is being produced for a browser environment or not , browserRuntime ? true + # Path to the Webpack config to use + , webpackConfig ? "webpack.config.cjs" # The name of the bundled JS module that `spago bundle-module` will produce , bundledModuleName ? "output.js" # Generated `node_modules` in the Nix store. Can be passed to have better @@ -409,11 +454,11 @@ let }: pkgs.runCommand "${name}" { buildInputs = [ + ]; + nativeBuildInputs = [ nodejs nodeModules project - ]; - nativeBuildInputs = [ purs pkgs.easy-ps.spago ]; @@ -421,15 +466,17 @@ let '' export HOME="$TMP" export NODE_PATH="${nodeModules}/lib/node_modules" - ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} cp -r ${project}/* . - chmod -R +rwx . - node esbuild/bundle.js ${main} - cp -r fixtures dist/esbuild + chmod -R +rw . + mkdir -p ./dist + echo 'import("./output/${main}/index.js").then(m => m.${psEntryPoint}());' > entrypoint.js + ${pkgs.lib.optionalString includeBundledModule "cp ${bundledModuleName} ./dist"} + webpack --mode=production -c ${webpackConfig} -o ./dist \ + --entry ./entrypoint.js mkdir $out - mv dist $out + mv ./dist/* $out ''; pursDocsSearchNpm = @@ -566,7 +613,8 @@ let in { inherit - buildPursProject runPursTest runPlutipTest runE2ETest bundlePursProject + buildPursProject runPursTest runPlutipTest runE2ETest + bundlePursProjectEsbuild bundlePursProjectWebpack buildPursDocs buildSearchablePursDocs launchSearchablePursDocs purs nodejs mkNodeModules; devShell = shellFor shell; diff --git a/scripts/whitespace-check.sh b/scripts/whitespace-check.sh index ced258a00..5439ba834 100755 --- a/scripts/whitespace-check.sh +++ b/scripts/whitespace-check.sh @@ -11,7 +11,7 @@ files=" .tidyrc.json LICENSE Makefile -webpack.config.js +webpack.config.cjs package.json doc/*.md examples/ diff --git a/webpack.config.cjs b/webpack.config.cjs index 7495185ac..6b1524827 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -42,7 +42,7 @@ module.exports = env => { output: { path: path.resolve(__dirname, "dist/webpack"), - filename: "bundle.js", + filename: "index.js", library: { type: "module", } @@ -91,11 +91,6 @@ module.exports = env => { new webpack.LoaderOptionsPlugin({ debug: true, }), - new HtmlWebpackPlugin({ - title: "cardano-transaction-lib-examples", - template: "./examples/index.html", - inject: false, // See stackoverflow.com/a/38292765/3067181 - }), new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], }), From 3565be1f50407a85c11430f20164b70db7f5dc2a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 11 Oct 2023 20:29:03 +0400 Subject: [PATCH 356/478] Only enable blockfrost examples if blockfrost key is set --- examples/ByUrl.purs | 119 +++++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 8f00edce0..e4f75e7e1 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -78,64 +78,67 @@ main = do mbApiKey <- getBlockfrostApiKey let walletsWithBlockfrost = - wallets `Map.union` Map.fromFoldable - [ "blockfrost-nami-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToNami } - /\ Nothing - , "blockfrost-gero-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToGero } - /\ Nothing - , "blockfrost-eternl-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToEternl } - /\ Nothing - , "blockfrost-lode-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToLode } - /\ Nothing - , "blockfrost-flint-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToFlint } - /\ Nothing - , "blockfrost-nufi-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToNuFi } - /\ Nothing - , "blockfrost-lace-preview" - /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToLace } - /\ Nothing - , "blockfrost-nami-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToNami } - /\ Nothing - , "blockfrost-gero-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToGero } - /\ Nothing - , "blockfrost-eternl-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToEternl } - /\ Nothing - , "blockfrost-lode-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToLode } - /\ Nothing - , "blockfrost-flint-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToFlint } - /\ Nothing - , "blockfrost-nufi-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToNuFi } - /\ Nothing - , "blockfrost-lace-preprod" - /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToLace } - /\ Nothing - ] + wallets `Map.union` + if isNothing mbApiKey then Map.empty + else + Map.fromFoldable + [ "blockfrost-nami-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToNami } + /\ Nothing + , "blockfrost-gero-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToGero } + /\ Nothing + , "blockfrost-eternl-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToEternl } + /\ Nothing + , "blockfrost-lode-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToLode } + /\ Nothing + , "blockfrost-flint-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToFlint } + /\ Nothing + , "blockfrost-nufi-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToNuFi } + /\ Nothing + , "blockfrost-lace-preview" + /\ (mkBlockfrostPreviewConfig mbApiKey) + { walletSpec = Just ConnectToLace } + /\ Nothing + , "blockfrost-nami-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToNami } + /\ Nothing + , "blockfrost-gero-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToGero } + /\ Nothing + , "blockfrost-eternl-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToEternl } + /\ Nothing + , "blockfrost-lode-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToLode } + /\ Nothing + , "blockfrost-flint-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToFlint } + /\ Nothing + , "blockfrost-nufi-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToNuFi } + /\ Nothing + , "blockfrost-lace-preprod" + /\ (mkBlockfrostPreprodConfig mbApiKey) + { walletSpec = Just ConnectToLace } + /\ Nothing + ] addLinks walletsWithBlockfrost examples route walletsWithBlockfrost examples From f9414bac5b33a8c94f3b20cb3fd66ded62fbcbc8 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Thu, 12 Oct 2023 10:15:11 +1300 Subject: [PATCH 357/478] Clarify changelog --- CHANGELOG.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 915e21fe8..9776ef002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,12 +56,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- `mkUnbalancedTxE`, as a non-'throwing' version of `mkUnbalancedTx`. This - version returns in `Either`, like `mkUnbalancedTx` used to - ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `balanceTxE` and `balanceTxWithConstraintsE`, as non-'throwing' versions of - `balanceTx` and `balanceTxWithConstraints`. These return in `Either`, like - `balanceTx` and `balanceTxWithConstraints` used to do ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `mkUnbalancedTxE`, `balanceTxE` and `balanceTxWithConstraintsE` as + non-throwing versions of `mkUnbalancedTx`, `balanceTx` and + `balanceTxWithConstraints` ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `explainMkUnbalancedTxError` and `explainBalanceTxError`, which prettyprint `MkUnbalancedTxError` and `BalanceTxError` for a more human-readable output. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `Contract.Time.getCurrentEra` and `Contract.Time.normalizeTimeInterval`, @@ -88,7 +85,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed -- Expose `ValidatorHashNotFound` constructor of `MkUnbalancedTxError`. ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) - `scriptCurrencySymbol` no longer returns `Maybe` ([#1538](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1538) - **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) @@ -110,6 +106,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - UTxO lists and combined input/output/mint/fee values are now being pretty-printed instead of logged using `Show` instance (in the balancer) ([#1531](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1531)) +- `mkUnbalancedTx`, `balanceTx` and `balanceTxWithConstraints` now throw instead + of returning in `Either` ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) ### Fixed From 77b7169dbc7f324d6dade449ef0a8799b4e55793 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Thu, 12 Oct 2023 10:44:18 +1300 Subject: [PATCH 358/478] Better docs for mkUnbalancedTx, balanceTx and balanceTxWithConstraints and variants --- src/Contract/Transaction.purs | 18 ++++++------------ src/Contract/UnbalancedTx.purs | 7 ++----- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 14ba8dfd7..d38df47ea 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -407,8 +407,7 @@ unUnbalancedTx -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. -- | --- | This is a 'non-throwing' variant of this functionality. Use this when --- | errors are expected, and graceful recovery is possible. If you want a +-- | This is a 'non-throwing' variant of this functionality. If you want a -- | 'throwing' variant, use `balanceTxWithConstraints` instead. balanceTxWithConstraintsE :: UnbalancedTx @@ -420,10 +419,9 @@ balanceTxWithConstraintsE tx = in BalanceTx.balanceTxWithConstraints tx' ix --- | 'Throwing' variant of `balanceTxWithConstraintsE`. Instead of returning in --- | `Either`, it throws an exception on failure. Use this when errors are not --- | expected, and graceful recovery is either impossible or wouldn't make --- | sense. If you want a non-'throwing' variant, use `balanceWithConstraintsE` +-- | 'Throwing' variant of `balanceTxWithConstraintsE`. +-- | +-- | If you want a non-'throwing' variant, use `balanceWithConstraintsE` -- | instead. balanceTxWithConstraints :: UnbalancedTx @@ -438,17 +436,13 @@ balanceTxWithConstraints tx bcb = do -- | Same as `balanceTxWithConstraintsE`, but uses the default balancer -- | constraints. -- | --- | This is a 'non-throwing' variant of this functionality. Use this when --- | errors are expected, and graceful recovery is possible. If you want a --- | 'throwing' variant, use `balanceTx` instead. +-- | This is a 'non-throwing' variant of this functionality. balanceTxE :: UnbalancedTx -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) balanceTxE = flip balanceTxWithConstraintsE mempty --- | 'Throwing' variant of `balanceTxE`. Instead of returning in `Either`, it --- | throws an exception on failure. Use this when errors are not expected, and --- | graceful recovery is either impossible or wouldn't make sense. If you want +-- | 'Throwing' variant of `balanceTxE`. If you want -- | a non-'throwing' variant, use `balanceTxE` instead. balanceTx :: UnbalancedTx -> Contract FinalizedTransaction balanceTx utx = do diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 398666501..cbefcd17e 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -95,8 +95,7 @@ import Effect.Exception (error) -- | `TxConstraints`. This should be called in conjuction with -- | `balanceTx` and `signTransaction`. -- | --- | This is a 'non-throwing' variant; use this when failure is expected, and --- | can be handled gracefully. If you need the 'throwing' variant, use +-- | This is a 'non-throwing' variant; if you need the 'throwing' variant, use -- | `mkUnbalancedTx` instead. mkUnbalancedTxE :: ScriptLookups @@ -104,9 +103,7 @@ mkUnbalancedTxE -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTxE = PC.mkUnbalancedTxImpl --- | As `mkUnbalancedTxE`, but 'throwing'; use this when failure is _not_ --- | expected, and graceful handling is either impossible, or wouldn't make --- | sense. +-- | As `mkUnbalancedTxE`, but 'throwing'. mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract UnbalancedTx mkUnbalancedTx lookups constraints = mkUnbalancedTxE lookups constraints >>= case _ of From 3c7c67d7bfa89b638e90612a94cfc0df99d48279 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 12 Oct 2023 21:30:51 +0400 Subject: [PATCH 359/478] Separate building of deps and sources in nix --- nix/default.nix | 65 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 973dd7480..6fafd0d86 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -162,6 +162,50 @@ let ln -s ${data-drv} ./${dataDir} ''; + # Compiles the dependencies of a Purescript project and copies the `output` + # and `.spago` directories into the Nix store. + # Intended to be used in `buildPursProject` to not recompile the entire + # package set every time. + buildPursDependencies = + { + # Can be used to override the name given to the resulting derivation + name ? "${projectName}-ps-deps" + # If warnings generated from project source files will trigger a build error. + # Controls `--strict` purescript-psa flag + , strictComp ? true + # Warnings from `purs` to silence during compilation, independent of `strictComp` + # Controls `--censor-codes` purescript-psa flag + , censorCodes ? [ "UserDefinedWarning" ] + , ... + }: + pkgs.stdenv.mkDerivation { + inherit name; + buildInputs = [ + spagoPkgs.installSpagoStyle + pkgs.easy-ps.psa + ]; + nativeBuildInputs = [ + purs + pkgs.easy-ps.spago + ]; + # Make the derivation independent of the source files. + # `src` is not needed + unpackPhase = "true"; + buildPhase = '' + install-spago-style + psa ${pkgs.lib.optionalString strictComp "--strict" } \ + --censor-lib \ + --is-lib=.spago ".spago/*/*/src/**/*.purs" \ + --censor-codes=${builtins.concatStringsSep "," censorCodes} \ + -gsourcemaps,js + ''; + installPhase = '' + mkdir $out + mv output $out/ + mv .spago $out/ + ''; + }; + # Compiles your Purescript project and copies the `output` directory into the # Nix store. Also copies the local sources to be made available later as `purs` # does not include any external files to its `output` (if we attempted to refer @@ -179,6 +223,9 @@ let # Warnings from `purs` to silence during compilation, independent of `strictComp` # Controls `--censor-codes` purescript-psa flag , censorCodes ? [ "UserDefinedWarning" ] + , pursDependencies ? buildPursDependencies { + inherit name strictComp censorCodes; + } , ... }: pkgs.stdenv.mkDerivation { @@ -197,16 +244,24 @@ let export NODE_PATH="${nodeModules}/lib/node_modules" ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" - cp -r $src . ${linkExtraSources} ${linkData} - install-spago-style + + # copy the dependency build artifacts and sources + # preserve the modification date so that we don't rebuild them + mkdir -p output .spago + cp -rp ${pursDependencies}/.spago/* .spago + cp -rp ${pursDependencies}/output/* output + + # add write permissions for the PS compiler to use + # `output/cache-db.json` + chmod -R +w output/ ''; buildPhase = '' psa ${pkgs.lib.optionalString strictComp "--strict" } \ --censor-lib \ --is-lib=.spago ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} \ - --censor-codes=${builtins.concatStringsSep "," censorCodes} "./**/*.purs" \ + --censor-codes=${builtins.concatStringsSep "," censorCodes} "$src/**/*.purs" \ -gsourcemaps,js ''; # We also need to copy all of `src` here, since compiled modules in `output` @@ -215,7 +270,7 @@ let # module) installPhase = '' mkdir $out - mv output $out/ + cp -r output/* $out/ cp -r $src/* $out/ ${pkgs.lib.optionalString hasExtraSources ''cp -r ./${extraSourcesDir} $out/''} ${pkgs.lib.optionalString hasData ''cp -r ./${dataDir} $out/''} @@ -613,7 +668,7 @@ let in { inherit - buildPursProject runPursTest runPlutipTest runE2ETest + buildPursProject buildPursDependencies runPursTest runPlutipTest runE2ETest bundlePursProjectEsbuild bundlePursProjectWebpack buildPursDocs buildSearchablePursDocs launchSearchablePursDocs purs nodejs mkNodeModules; From 1604657c1303117d7043feaedceaab104c6b5312 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 12 Oct 2023 22:16:48 +0400 Subject: [PATCH 360/478] Move compilers to nativeBuildInputs --- nix/default.nix | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 6fafd0d86..8da24e310 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -18,7 +18,10 @@ , extraSources ? [ ] , extraSourcesDir ? ".extras" # Data directory to add to the build and provide in the `devShell` as `dataDir` + # E.g. [ { name = "my-data"; path = ./. ; }] + # will be available at `data/my-data` in the `buildPursProject`s output, , data ? [ ] + # A directory to store `data` entries in. , dataDir ? "data" # Configuration that will be used to generate a `devShell` for the project , shell ? { } @@ -181,10 +184,10 @@ let pkgs.stdenv.mkDerivation { inherit name; buildInputs = [ - spagoPkgs.installSpagoStyle - pkgs.easy-ps.psa ]; nativeBuildInputs = [ + spagoPkgs.installSpagoStyle + pkgs.easy-ps.psa purs pkgs.easy-ps.spago ]; @@ -232,10 +235,10 @@ let inherit name src; buildInputs = [ nodeModules - spagoPkgs.installSpagoStyle - pkgs.easy-ps.psa ]; nativeBuildInputs = [ + spagoPkgs.installSpagoStyle + pkgs.easy-ps.psa purs pkgs.easy-ps.spago ]; @@ -270,8 +273,7 @@ let # module) installPhase = '' mkdir $out - cp -r output/* $out/ - cp -r $src/* $out/ + cp -r output $out/ ${pkgs.lib.optionalString hasExtraSources ''cp -r ./${extraSourcesDir} $out/''} ${pkgs.lib.optionalString hasData ''cp -r ./${dataDir} $out/''} ''; From 29695e65039aaad2d8924800c616ea4ba3ccd8b5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 18:27:03 +0400 Subject: [PATCH 361/478] Rewrite the bundling system (Nix & Makefile) --- Makefile | 50 +++++++++++++------- esbuild/bundle.js | 4 +- esbuild/config.js | 4 +- esbuild/serve.js | 11 ++--- examples/index.html | 13 ------ examples/index.js | 9 ---- flake.nix | 9 ++-- nix/default.nix | 110 +++++++++++++++++++++++++++++++++----------- webpack.config.cjs | 5 +- 9 files changed, 134 insertions(+), 81 deletions(-) delete mode 100644 examples/index.html delete mode 100644 examples/index.js diff --git a/Makefile b/Makefile index b30082faa..1b507d496 100644 --- a/Makefile +++ b/Makefile @@ -1,31 +1,49 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint .SHELLFLAGS := -eu -o pipefail -c - +serve-port := 4008 ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') js-sources := $(shell fd --no-ignore-parent -ejs) -ps-entrypoint := Ctl.Examples.ByUrl # points to one of the example PureScript modules in examples/ +# points to one of the example PureScript modules in examples/ +ps-entrypoint := Ctl.Examples.ByUrl +ps-entrypoint-function := main preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') -esbuild-bundle: - @spago build \ - && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} +spago-build: + @spago build + +create-bundle-entrypoint: + @mkdir -p dist/ + @echo 'import("../output/${ps-entrypoint}/index.js").then(m => m.${ps-entrypoint-function}());' > ./dist/entrypoint.js + +create-html-entrypoint: + @mkdir -p dist/ + @cat << EOF > dist/index.html + + + + + EOF + +esbuild-bundle: spago-build create-bundle-entrypoint + @mkdir -p dist/ + @BROWSER_RUNTIME=1 node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + +esbuild-serve: spago-build create-bundle-entrypoint create-html-entrypoint -esbuild-serve: esbuild-bundle - BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} + BROWSER_RUNTIME=1 node esbuild/serve.js ./dist/entrypoint.js dist/index.js dist/ ${serve-port} -webpack-bundle: - @spago build \ - && rm -rf dist/webpack/* \ - && cp -rf fixtures/* dist/webpack \ - && BROWSER_RUNTIME=1 webpack --mode=production --env entry=./output/${ps-entrypoint}/index.js +webpack-bundle: spago-build create-bundle-entrypoint + BROWSER_RUNTIME=1 webpack --mode=production \ + -o dist/ --env entry=./dist/entrypoint.js -webpack-serve: - @spago build \ - && BROWSER_RUNTIME=1 webpack-dev-server --progress --env entry=./output/${ps-entrypoint}/index.js +webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint + BROWSER_RUNTIME=1 webpack-dev-server --progress \ + --port ${serve-port} \ + -o dist/ --env entry=./dist/entrypoint.js .ONESHELL: check-explicit-exports: diff --git a/esbuild/bundle.js b/esbuild/bundle.js index f8b295be2..8b114bcfd 100755 --- a/esbuild/bundle.js +++ b/esbuild/bundle.js @@ -2,12 +2,12 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; if (process.argv.length < 4) { - throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_DIR`; + throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_FILENAME`; } esbuild.build( buildOptions({ entryPoint: process.argv[2], - outputDir: process.argv[3], + outfile: process.argv[3], }) ); diff --git a/esbuild/config.js b/esbuild/config.js index e69198952..c3294b5f8 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -1,9 +1,9 @@ import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -export const buildOptions = ({ entryPoint, outputDir }) => ({ +export const buildOptions = ({ entryPoint, outfile }) => ({ entryPoints: [entryPoint], - outdir: outputDir, + outfile: outfile, define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, }, diff --git a/esbuild/serve.js b/esbuild/serve.js index a1ee33f79..c079f1cc8 100755 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -1,20 +1,19 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; -if (process.argv.length < 7) { - throw `usage: nodejs serve.js PURESCRIPT_MODULE OUTPUT_DIR SERVE_DIR HOST PORT`; +if (process.argv.length < 6) { + throw `usage: nodejs serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; } const ctx = await esbuild.context( buildOptions({ - pursEntryPoint: process.argv[2], - outputDir: process.argv[3], + entryPoint: process.argv[2], + outfile: process.argv[3], }) ); const config = { - host: process.argv[5], - port: process.argv[6], + port: parseInt(process.argv[5]), servedir: process.argv[4], }; diff --git a/examples/index.html b/examples/index.html deleted file mode 100644 index 3247c9a06..000000000 --- a/examples/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - Examples source code is located in examples/ directory.
- - diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 717933184..000000000 --- a/examples/index.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -// This needs to be asynchronous to load the WASM from cardano-serialization-lib -// -// You also need to call `spago bundle-module` to generate the module that is -// imported here. From the repository root, run: -// spago bundle-module -m
--to output.js -// Normally it should be done via Nix (see flake.nix) or via a Makefile -import("../output.js").then(m => m.main()); diff --git a/flake.nix b/flake.nix index 20086d9a3..dfe7ccffd 100644 --- a/flake.nix +++ b/flake.nix @@ -157,7 +157,9 @@ in rec { packages = { - ctl-example-bundle-web = project.bundlePursProjectEsbuild { + ctl-purs-project = project.buildPursProject { }; + + ctl-example-bundle-web-esbuild = project.bundlePursProjectEsbuild { main = "Ctl.Examples.ByUrl"; }; @@ -178,14 +180,13 @@ checks = { ctl-e2e-test = project.runE2ETest { name = "ctl-e2e-test"; - testMain = "Test.Ctl.E2E"; - env = { OGMIOS_FIXTURES = "${ogmiosFixtures}"; }; + runnerMain = "Test.Ctl.E2E"; + testMain = "Ctl.Examples.ByUrl"; buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; }; ctl-plutip-test = project.runPlutipTest { name = "ctl-plutip-test"; testMain = "Test.Ctl.Plutip"; - env = { OGMIOS_FIXTURES = "${ogmiosFixtures}"; }; }; ctl-staking-test = project.runPlutipTest { name = "ctl-staking-test"; diff --git a/nix/default.nix b/nix/default.nix index 8da24e310..ba209eb76 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -279,13 +279,13 @@ let ''; }; - project = buildPursProject { }; - # Runs a test written in Purescript using NodeJS. runPursTest = { - # The name of the main Purescript module - testMain ? "Test.Main" + # The main Purescript module + testMain + # The entry point function in the main PureScript module + , psEntryPoint ? "main" # Can be used to override the name of the resulting derivation , name ? "${projectName}-check" # Generated `node_modules` in the Nix store. Can be passed to have better @@ -296,21 +296,30 @@ let # Passed through to the `buildInputs` of the derivation. Use this to add # additional packages to the test environment , buildInputs ? [ ] + , builtProject ? buildPursProject { main = testMain; } , ... }: pkgs.runCommand "${name}" ( { - buildInputs = [ project nodeModules ] ++ buildInputs; + inherit src; + nativeBuildInputs = [ builtProject nodeModules ] ++ buildInputs; NODE_PATH = "${nodeModules}/lib/node_modules"; } // env ) - # spago will attempt to download things, which will fail in the - # sandbox, so we can just use node instead - # (idea taken from `plutus-playground-client`) '' - cp -r ${project}/* . + # Copy the purescript project files + cp -r ${builtProject}/* . + + # The tests may depend on sources + cp -r $src/* . + + # Provide NPM dependencies to the test suite scripts ln -sfn $NODE_PATH node_modules - ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.main())' + + # Call the main module and execute the entry point function + ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.${psEntryPoint}())' + + # Create output file to tell Nix we succeeded touch $out ''; @@ -338,8 +347,18 @@ let runE2ETest = { - # The name of the main Purescript module - testMain ? "Test.Ctl.E2E" + # The name of the main Purescript module for the runner + runnerMain + # Entry point function of the `runnerMain` module + , runnerPsEntryPoint ? "main" + # The name of the test module that will be bundled and served via a + # webserver + , testMain + # Environment file with E2E test definitions, relative to `src` + , envFile ? "test/e2e-ci.env" + # A file with empty settings for chromium, relative to `src` + , emptySettingsFile ? "test-data/empty-settings.tar.gz" + , testTimeout ? 200 # Can be used to override the name of the resulting derivation , name ? "${projectName}-e2e" # Generated `node_modules` in the Nix store. Can be passed to have better @@ -353,6 +372,9 @@ let , bundledPursProject ? (bundlePursProjectWebpack { main = testMain; }) + , builtRunnerProject ? (buildPursProject { + main = runnerMain; + }) , ... }@args: let @@ -403,8 +425,10 @@ let in pkgs.runCommand "${name}" ({ - buildInputs = with pkgs; [ - project + inherit src; + nativeBuildInputs = with pkgs; [ + builtRunnerProject + bundledPursProject nodeModules ogmios kupo @@ -421,27 +445,48 @@ let '' chmod -R +rw . - source ${project}/test/e2e-ci.env + # Load the test definitions from file + source $src/${envFile} - export E2E_SETTINGS_ARCHIVE="${project}/test-data/empty-settings.tar.gz" + export E2E_SETTINGS_ARCHIVE="$src/${emptySettingsFile}" export E2E_CHROME_USER_DATA="./test-data/chrome-user-data" - export E2E_TEST_TIMEOUT=200 + export E2E_TEST_TIMEOUT=${toString testTimeout} export E2E_BROWSER=${chromium}/bin/chromium # use custom bwrap-ed chromium export E2E_NO_HEADLESS=false export PLUTIP_PORT=8087 export OGMIOS_PORT=1345 export E2E_EXTRA_BROWSER_ARGS="--disable-web-security" - python -m http.server 4008 --directory ${bundledPursProject} & + # Move bundle files to the served dir + mkdir -p serve + cp -r ${bundledPursProject}/* serve/ + + # Create an HTML that just serves entry point to the bundle + cat << EOF > serve/index.html + + + + + EOF + + # Launch a webserver and wait for the content to become available + python -m http.server 4008 --directory serve 2>/dev/null & until curl -S http://127.0.0.1:4008/index.html &>/dev/null; do echo "Trying to connect to webserver..."; sleep 0.1; done; - mkdir project - cp -r ${project}/* project ln -sfn $NODE_PATH node_modules - ${nodejs}/bin/node --enable-source-maps -e 'import("./project/output/${testMain}/index.js").then(m => m.main())' e2e-test run + + cp -r ${builtRunnerProject}/output . + cp -r $src/* . + chmod -R +rw . + + ${nodejs}/bin/node \ + --enable-source-maps \ + -e 'import("./output/${runnerMain}/index.js").then(m => m.${runnerPsEntryPoint}())' \ + e2e-test run + mkdir $out '' ; @@ -453,24 +498,28 @@ let name ? "${projectName}-bundle-" + (if browserRuntime then "web" else "nodejs") # The main Purescript module - , main ? "Main" + , main + # The entry point function in the main PureScript module + , psEntryPoint ? "main" # Whether this bundle is being produced for a browser environment or not , browserRuntime ? true , esbuildBundleScript ? "esbuild/bundle.js" # Generated `node_modules` in the Nix store. Can be passed to have better # control over individual project components , nodeModules ? projectNodeModules + , builtProject ? buildPursProject { inherit main; } , ... }: pkgs.runCommand "${name}" { + inherit src; buildInputs = [ nodejs nodeModules - project ]; nativeBuildInputs = [ purs pkgs.easy-ps.spago + builtProject ]; } '' @@ -480,8 +529,10 @@ let export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} chmod -R +rw . - cp -r ${project}/* . - node ${esbuildBundleScript} ./output/${main}/index.js dist/ + cp -r ${builtProject}/* . + cp -r $src/* . + echo 'import("./output/${main}/index.js").then(m => m.${psEntryPoint}());' > entrypoint.js + node ${esbuildBundleScript} ./entrypoint.js dist/index.js mkdir $out mv dist/* $out ''; @@ -507,15 +558,17 @@ let , nodeModules ? projectNodeModules # If the spago bundle-module output should be included in the derivation , includeBundledModule ? false + , builtProject ? buildPursProject { inherit main; } , ... }: pkgs.runCommand "${name}" { + inherit src; buildInputs = [ ]; nativeBuildInputs = [ nodejs nodeModules - project + builtProject purs pkgs.easy-ps.spago ]; @@ -525,7 +578,8 @@ let export NODE_PATH="${nodeModules}/lib/node_modules" export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} - cp -r ${project}/* . + cp -r ${builtProject}/* . + cp -r $src/* . chmod -R +rw . mkdir -p ./dist echo 'import("./output/${main}/index.js").then(m => m.${psEntryPoint}());' > entrypoint.js @@ -675,6 +729,6 @@ in buildPursDocs buildSearchablePursDocs launchSearchablePursDocs purs nodejs mkNodeModules; devShell = shellFor shell; - compiled = project; + compiled = buildPursProject { }; nodeModules = projectNodeModules; } diff --git a/webpack.config.cjs b/webpack.config.cjs index 6b1524827..01ac0e104 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -23,6 +23,9 @@ module.exports = env => { stats: { errorDetails: true }, devServer: { + static: { + directory: path.join(__dirname, 'dist'), + }, client: { overlay: false }, @@ -41,7 +44,7 @@ module.exports = env => { entry: env.entry, output: { - path: path.resolve(__dirname, "dist/webpack"), + path: path.resolve(__dirname, "dist"), filename: "index.js", library: { type: "module", From eb8e7e8e833216dc6ef13b6a0788d43c3d280e9f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 18:27:55 +0400 Subject: [PATCH 362/478] Fix internal module name (Ctl.Internal.Test.E2E.Route) --- src/Contract/Test/E2E.purs | 2 +- src/Internal/Test/E2E/Route.purs | 2 +- test/E2E/Route.purs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Contract/Test/E2E.purs b/src/Contract/Test/E2E.purs index e9acb4c89..7f8582ba8 100644 --- a/src/Contract/Test/E2E.purs +++ b/src/Contract/Test/E2E.purs @@ -2,7 +2,7 @@ module Contract.Test.E2E ( module X ) where -import Ctl.Internal.E2E.Route (E2EConfigName, E2ETestName, addLinks, route) as X import Ctl.Internal.Test.E2E.Feedback.Hooks (e2eFeedbackHooks) as X import Ctl.Internal.Test.E2E.Options (parseCliArgs) as X +import Ctl.Internal.Test.E2E.Route (E2EConfigName, E2ETestName, addLinks, route) as X import Ctl.Internal.Test.E2E.Runner (runE2ECommand, runE2ETests) as X diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index f3bf46b10..6bb113bf6 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -1,4 +1,4 @@ -module Ctl.Internal.E2E.Route +module Ctl.Internal.Test.E2E.Route ( E2ETestName , E2EConfigName , route diff --git a/test/E2E/Route.purs b/test/E2E/Route.purs index 856295b08..8d20e4166 100644 --- a/test/E2E/Route.purs +++ b/test/E2E/Route.purs @@ -2,7 +2,7 @@ module Test.Ctl.E2E.Route where import Prelude -import Ctl.Internal.E2E.Route (parseRoute) +import Ctl.Internal.Test.E2E.Route (parseRoute) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.Either (isRight) import Effect.Aff (Aff) From 0825b1be0c833d4504ceaa271c17ccd8f04b5e18 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 19:51:09 +0400 Subject: [PATCH 363/478] Remove html-webpack-plugin dependency --- package-lock.json | 533 --------------------------------------------- package.json | 1 - webpack.config.cjs | 1 - 3 files changed, 535 deletions(-) diff --git a/package-lock.json b/package-lock.json index efff18a3e..209e8241c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,6 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.3", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", @@ -659,12 +658,6 @@ "@types/send": "*" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -1132,15 +1125,6 @@ "ansi-html": "bin/ansi-html" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1417,12 +1401,6 @@ "multicast-dns": "^7.2.5" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1653,16 +1631,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001519", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", @@ -1774,18 +1742,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1806,15 +1762,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -2021,34 +1968,6 @@ "node": "*" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2194,15 +2113,6 @@ "doctoc": "doctoc.js" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -2279,16 +2189,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3120,15 +3020,6 @@ "minimalistic-assert": "^1.0.1" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3198,50 +3089,6 @@ } ] }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -3807,12 +3654,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/longest-streak": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", @@ -3823,15 +3664,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/markdown-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", @@ -4327,16 +4159,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -4441,18 +4263,6 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4612,16 +4422,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -4662,16 +4462,6 @@ "node": ">= 0.8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -4765,16 +4555,6 @@ "node": ">=8" } }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -5026,15 +4806,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/remark-footnotes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", @@ -5090,47 +4861,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -5662,18 +5392,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -5884,12 +5602,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true - }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -6107,12 +5819,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -7063,12 +6769,6 @@ "@types/send": "*" } }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, "@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -7474,12 +7174,6 @@ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -7696,12 +7390,6 @@ "multicast-dns": "^7.2.5" } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -7881,16 +7569,6 @@ "get-intrinsic": "^1.0.2" } }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "caniuse-lite": { "version": "1.0.30001519", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", @@ -7958,15 +7636,6 @@ "safe-buffer": "^5.0.1" } }, - "clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -7984,12 +7653,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -8176,25 +7839,6 @@ "randomfill": "^1.0.3" } }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -8309,15 +7953,6 @@ "update-section": "^0.3.3" } }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, "dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -8369,16 +8004,6 @@ "domhandler": "^4.2.0" } }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -9022,12 +8647,6 @@ "minimalistic-assert": "^1.0.1" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -9089,34 +8708,6 @@ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - } - }, - "html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, "htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -9492,27 +9083,12 @@ "p-locate": "^4.1.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "longest-streak": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, "markdown-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", @@ -9878,16 +9454,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -9961,15 +9527,6 @@ "path-key": "^3.0.0" } }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -10084,16 +9641,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -10127,16 +9674,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -10209,16 +9746,6 @@ "find-up": "^4.0.0" } }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10419,12 +9946,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, "remark-footnotes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", @@ -10464,39 +9985,6 @@ "mdast-util-from-markdown": "^0.8.0" } }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - } - } - }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -10935,15 +10423,6 @@ "safe-buffer": "~5.2.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -11091,12 +10570,6 @@ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true - }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -11256,12 +10729,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/package.json b/package.json index 0d036440b..ddc811b7e 100755 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.3", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", diff --git a/webpack.config.cjs b/webpack.config.cjs index 01ac0e104..52eedb1a7 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -2,7 +2,6 @@ const path = require("path"); const webpack = require("webpack"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); module.exports = env => { From bf1de1950aac903757350e46577ea91191806eb5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 20:02:53 +0400 Subject: [PATCH 364/478] Simplify esbuild script in nix --- nix/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index ba209eb76..7caafe49e 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -528,13 +528,12 @@ let ln -sfn $NODE_PATH node_modules export PATH="${nodeModules}/bin:$PATH" ${pkgs.lib.optionalString browserRuntime "export BROWSER_RUNTIME=1"} - chmod -R +rw . cp -r ${builtProject}/* . cp -r $src/* . + chmod -R +rw . echo 'import("./output/${main}/index.js").then(m => m.${psEntryPoint}());' > entrypoint.js - node ${esbuildBundleScript} ./entrypoint.js dist/index.js mkdir $out - mv dist/* $out + node ${esbuildBundleScript} ./entrypoint.js $out/index.js ''; # Bundles a Purescript project using Webpack, typically for the browser From 8014c940cf69516c0a00048eec79b2ba95fd94f3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 20:07:57 +0400 Subject: [PATCH 365/478] Simplify webpack build script in nix --- nix/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 7caafe49e..ae72f1d61 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -583,10 +583,9 @@ let mkdir -p ./dist echo 'import("./output/${main}/index.js").then(m => m.${psEntryPoint}());' > entrypoint.js ${pkgs.lib.optionalString includeBundledModule "cp ${bundledModuleName} ./dist"} - webpack --mode=production -c ${webpackConfig} -o ./dist \ - --entry ./entrypoint.js mkdir $out - mv ./dist/* $out + webpack --mode=production -c ${webpackConfig} -o $out/ \ + --entry ./entrypoint.js ''; pursDocsSearchNpm = From d568417a482e34b1eb9c39313ef2e729a3ad3c68 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 20:32:21 +0400 Subject: [PATCH 366/478] Synchronize webpack & esbuild setup in the template --- templates/ctl-scaffold/esbuild/bundle.js | 11 +- templates/ctl-scaffold/esbuild/config.js | 10 +- templates/ctl-scaffold/esbuild/serve.js | 25 +++- templates/ctl-scaffold/flake.lock | 8 +- templates/ctl-scaffold/flake.nix | 14 +- templates/ctl-scaffold/index.html | 71 --------- templates/ctl-scaffold/index.js | 8 - templates/ctl-scaffold/package.json | 1 - templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- templates/ctl-scaffold/webpack.config.cjs | 172 ++++++++++------------ webpack.config.cjs | 13 -- 12 files changed, 132 insertions(+), 209 deletions(-) delete mode 100644 templates/ctl-scaffold/index.html delete mode 100644 templates/ctl-scaffold/index.js diff --git a/templates/ctl-scaffold/esbuild/bundle.js b/templates/ctl-scaffold/esbuild/bundle.js index c3a5dd652..8b114bcfd 100644 --- a/templates/ctl-scaffold/esbuild/bundle.js +++ b/templates/ctl-scaffold/esbuild/bundle.js @@ -1,4 +1,13 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; -esbuild.build(buildOptions); +if (process.argv.length < 4) { + throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_FILENAME`; +} + +esbuild.build( + buildOptions({ + entryPoint: process.argv[2], + outfile: process.argv[3], + }) +); diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index ca6f2e542..c3294b5f8 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -1,9 +1,9 @@ import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -export const buildOptions = { - entryPoints: [`output/${process.argv[2]}/index.js`], - outdir: "dist/esbuild", +export const buildOptions = ({ entryPoint, outfile }) => ({ + entryPoints: [entryPoint], + outfile: outfile, define: { BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, }, @@ -23,5 +23,5 @@ export const buildOptions = { platform: "browser", format: "esm", treeShaking: true, - logLevel: "warning", -}; + logLevel: "error", +}); diff --git a/templates/ctl-scaffold/esbuild/serve.js b/templates/ctl-scaffold/esbuild/serve.js index 8b4220c43..c079f1cc8 100644 --- a/templates/ctl-scaffold/esbuild/serve.js +++ b/templates/ctl-scaffold/esbuild/serve.js @@ -1,9 +1,22 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; -const ctx = await esbuild.context(buildOptions); -await ctx.serve({ - host: "127.0.0.1", - port: 4008, - servedir: "dist/esbuild", -}); +if (process.argv.length < 6) { + throw `usage: nodejs serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; +} + +const ctx = await esbuild.context( + buildOptions({ + entryPoint: process.argv[2], + outfile: process.argv[3], + }) +); + +const config = { + port: parseInt(process.argv[5]), + servedir: process.argv[4], +}; + +console.log("serving:", config); + +await ctx.serve(config); diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 4d3c688e6..17da8409c 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -2757,17 +2757,17 @@ ] }, "locked": { - "lastModified": 1691599815, - "narHash": "sha256-i7t+KgDAMCaYqqF+BdBAsV1B4/9gFr11Yd9RpxF10JQ=", + "lastModified": 1697213277, + "narHash": "sha256-vEfiNwLI4ngh1RYfEfHfU4H6PO6DkCBzQMFG8Ynv49Q=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "325665b19859bbf3e48e296e9aa717673f5f3d79", + "rev": "8014c940cf69516c0a00048eec79b2ba95fd94f3", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "325665b19859bbf3e48e296e9aa717673f5f3d79", + "rev": "8014c940cf69516c0a00048eec79b2ba95fd94f3", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index cf1d5cfb0..482b48648 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "325665b19859bbf3e48e296e9aa717673f5f3d79"; + rev = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; @@ -118,13 +118,19 @@ in { default = self.packages.${system}.ctl-scaffold-bundle-web; - ctl-scaffold-bundle-web = (psProjectFor pkgs).bundlePursProject { + + ctl-scaffold-bundle-web-esbuild = (psProjectFor pkgs).bundlePursProjectEsbuild { + main = "Scaffold.Main"; + }; + + ctl-scaffold-bundle-web-webpack = (psProjectFor pkgs).bundlePursProjectWebpack { main = "Scaffold.Main"; - entrypoint = "index.js"; }; + ctl-scaffold-runtime = pkgs.buildCtlRuntime runtimeConfig; }); + # `launchCtlRuntime` will generate a Nix expression from the provided # config, build it into a JSON file, and then run it with Arion # @@ -186,4 +192,6 @@ default = (psProjectFor pkgs).devShell; }); }; + + nixConfig.bash-prompt = "[\\[\\e[0;1m\\]\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; } diff --git a/templates/ctl-scaffold/index.html b/templates/ctl-scaffold/index.html deleted file mode 100644 index b8c10982c..000000000 --- a/templates/ctl-scaffold/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - diff --git a/templates/ctl-scaffold/index.js b/templates/ctl-scaffold/index.js deleted file mode 100644 index c2eeb8660..000000000 --- a/templates/ctl-scaffold/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -// This needs to be asynchronous to load the WASM from CSL -// -// You also need to call `spago bundle-module` to generate the module that is -// imported here. From the repository root, run: -// spago bundle-module -m
--to output.js -import("./output.js").then(m => m.main()); diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index e6ad49787..34d1ad9c6 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -52,7 +52,6 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.3", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 765b35fc4..f18969cfc 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -342,7 +342,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "325665b19859bbf3e48e296e9aa717673f5f3d79" + , version = "8014c940cf69516c0a00048eec79b2ba95fd94f3" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index ddecaa01d..4f3b7e2ef 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "325665b19859bbf3e48e296e9aa717673f5f3d79"; + version = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "325665b19859bbf3e48e296e9aa717673f5f3d79"; - sha256 = "156hfl8sflfzc5svs5k0zzil2pdi8380azm1mac2cc6000m7xfwb"; + rev = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; + sha256 = "1m73xy4z2in181rj1443xqygm0akvzqi27qnslhpiqn808vy4ixw"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/webpack.config.cjs b/templates/ctl-scaffold/webpack.config.cjs index 7f4710173..00c39dead 100644 --- a/templates/ctl-scaffold/webpack.config.cjs +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -2,107 +2,93 @@ const path = require("path"); const webpack = require("webpack"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); -module.exports = { - mode: "development", +module.exports = env => { + return { + mode: "development", - experiments: { - asyncWebAssembly: false, - layers: false, - lazyCompilation: false, - outputModule: true, - syncWebAssembly: true, - topLevelAwait: true, - }, + experiments: { + asyncWebAssembly: false, + layers: false, + lazyCompilation: false, + outputModule: true, + syncWebAssembly: true, + topLevelAwait: true, + }, - devtool: "eval-source-map", + devtool: "eval-source-map", - stats: { errorDetails: true }, + stats: { errorDetails: true }, - devServer: { - client: { - overlay: false, - }, - port: 4008, - proxy: { - "/kupo": { - // `KUPO_HOST` env variable must be set to the base URL of the Kupo - // service, otherwise all requests to Kupo will fail. - target: process.env.KUPO_HOST || "http://localhost:1442", - changeOrigin: true, - pathRewrite: { "^/kupo": "" }, - }, - }, - }, + devServer: { + static: { + directory: path.join(__dirname, 'dist'), + }, + client: { + overlay: false + }, + port: 4008, + proxy: { + "/kupo": { + // `KUPO_HOST` env variable must be set to the base URL of the Kupo + // service, otherwise all requests to Kupo will fail. + target: process.env.KUPO_HOST || "http://localhost:1442", + changeOrigin: true, + pathRewrite: { "^/kupo": "" }, + }, + }, + }, - // we can add more entrypoints as needed - entry: "./index.js", + // we can add more entrypoints as needed + entry: env.entry, - output: { - path: path.resolve(__dirname, "dist"), - filename: "bundle.js", - library: { - type: "module", - }, - }, + output: { + path: path.resolve(__dirname, "dist"), + filename: "index.js", + library: { + type: "module", + }, + }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/i, - type: "asset", - }, - { - test: /\.plutus$/i, - type: "asset/source", - }, - ], - }, + resolve: { + // We use node_modules provided by Nix shell via an environment variable + modules: [process.env.NODE_PATH], + extensions: [".js"], + fallback: { + buffer: require.resolve("buffer/"), + http: false, + url: false, + stream: false, + crypto: false, + https: false, + net: false, + tls: false, + zlib: false, + os: false, + path: false, + fs: false, + readline: false, + child_process: false, + }, + }, - resolve: { - // We use node_modules provided by Nix shell via an environment variable - modules: [process.env.NODE_PATH], - extensions: [".js"], - fallback: { - buffer: require.resolve("buffer/"), - http: false, - url: false, - stream: false, - crypto: false, - https: false, - net: false, - tls: false, - zlib: false, - os: false, - path: false, - fs: false, - readline: false, - child_process: false, - }, - }, - - plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - }), - new NodePolyfillPlugin(), - new webpack.LoaderOptionsPlugin({ - debug: true, - }), - new HtmlWebpackPlugin({ - title: "ctl-scaffold", - template: "./index.html", - inject: false, // See stackoverflow.com/a/38292765/3067181 - }), - new webpack.ProvidePlugin({ - Buffer: ["buffer", "Buffer"], - }), - // ContextReplacementPlugin is used just to suppress a webpack warning: - // "Critical dependency: the request of a dependency is an expression" - // See https://stackoverflow.com/a/59235546/17365145 - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), - ], + plugins: [ + new webpack.DefinePlugin({ + BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, + }), + new NodePolyfillPlugin(), + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + new webpack.ProvidePlugin({ + Buffer: ["buffer", "Buffer"], + }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), + ], + }; }; diff --git a/webpack.config.cjs b/webpack.config.cjs index 52eedb1a7..61c2e77fb 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -50,19 +50,6 @@ module.exports = env => { } }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/i, - type: "asset", - }, - { - test: /\.plutus$/i, - type: "asset/source", - }, - ], - }, - resolve: { // We use node_modules provided by Nix shell via an environment variable modules: [process.env.NODE_PATH], From 19be30b100344291e505e04c17c7125f6573449b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 13 Oct 2023 20:49:24 +0400 Subject: [PATCH 367/478] Update template's Makefile --- Makefile | 3 +- templates/ctl-scaffold/Makefile | 67 +++++++++++++++---- .../ctl-scaffold/dist/esbuild/index.html | 11 --- .../ctl-scaffold/dist/esbuild/wrapper.js | 6 -- 4 files changed, 57 insertions(+), 30 deletions(-) delete mode 100644 templates/ctl-scaffold/dist/esbuild/index.html delete mode 100644 templates/ctl-scaffold/dist/esbuild/wrapper.js diff --git a/Makefile b/Makefile index 1b507d496..09bddd630 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SHELL := bash .ONESHELL: .PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint .SHELLFLAGS := -eu -o pipefail -c -serve-port := 4008 + ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') js-sources := $(shell fd --no-ignore-parent -ejs) @@ -11,6 +11,7 @@ ps-entrypoint := Ctl.Examples.ByUrl ps-entrypoint-function := main preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') +serve-port := 4008 spago-build: @spago build diff --git a/templates/ctl-scaffold/Makefile b/templates/ctl-scaffold/Makefile index 84208ebb5..0e4ba027f 100644 --- a/templates/ctl-scaffold/Makefile +++ b/templates/ctl-scaffold/Makefile @@ -1,21 +1,51 @@ SHELL := bash +.PHONY: esbuild-bundle esbuild-serve .ONESHELL: .SHELLFLAGS := -eu -o pipefail -c -ps-sources := $$(fd -epurs) -ps-entrypoint := Scaffold.Main -e2e-entrypoint := Scaffold.Test.E2E.Serve -ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js -esbuild-bundle: - @spago build && BROWSER_RUNTIME=1 node esbuild/bundle.js ${ps-entrypoint} +ps-sources := $(shell fd --no-ignore-parent -epurs) +nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') +js-sources := $(shell fd --no-ignore-parent -ejs) +# points to one of the example PureScript modules in examples/ +ps-entrypoint := Scaffold.Test.E2E.Serve +ps-entrypoint-function := main +preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') +preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') +serve-port := 4008 -esbuild-serve: - @spago build \ - && cd dist/esbuild \ - && ln -sfn ../../scripts scripts \ - && cd ../.. \ - && BROWSER_RUNTIME=1 node esbuild/serve.js ${ps-entrypoint} +spago-build: + @spago build + +create-bundle-entrypoint: + @mkdir -p dist/ + @echo 'import("../output/${ps-entrypoint}/index.js").then(m => m.${ps-entrypoint-function}());' > ./dist/entrypoint.js + +create-html-entrypoint: + @mkdir -p dist/ + @cat << EOF > dist/index.html + + + + + EOF + +esbuild-bundle: spago-build create-bundle-entrypoint + @mkdir -p dist/ + @BROWSER_RUNTIME=1 node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + +esbuild-serve: spago-build create-bundle-entrypoint create-html-entrypoint + + BROWSER_RUNTIME=1 node esbuild/serve.js ./dist/entrypoint.js dist/index.js dist/ ${serve-port} + +webpack-bundle: spago-build create-bundle-entrypoint + BROWSER_RUNTIME=1 webpack --mode=production \ + -o dist/ --env entry=./dist/entrypoint.js + +webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint + BROWSER_RUNTIME=1 webpack-dev-server --progress \ + --port ${serve-port} \ + -o dist/ --env entry=./dist/entrypoint.js run-dev: @${ps-bundle} && BROWSER_RUNTIME=1 webpack-dev-server --progress @@ -29,6 +59,19 @@ run-build: check-format: @purs-tidy check ${ps-sources} + @prettier --loglevel warn -c ${js-sources} + @eslint --quiet ${js-sources} --parser-options 'sourceType: module' format: @purs-tidy format-in-place ${ps-sources} + prettier -w ${js-sources} + +clean: + @ rm -r .psc-ide-port || true + @ rm -rf .psci_modules || true + @ rm -rf .spago || true + @ rm -rf generated-docs || true + @ rm -rf .spago2nix || true + @ rm -rf node_modules || true + @ rm -rf output || true + @ rm -rf dist || true diff --git a/templates/ctl-scaffold/dist/esbuild/index.html b/templates/ctl-scaffold/dist/esbuild/index.html deleted file mode 100644 index 7c9b27620..000000000 --- a/templates/ctl-scaffold/dist/esbuild/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - Examples source code is located in examples/ directory.
- - diff --git a/templates/ctl-scaffold/dist/esbuild/wrapper.js b/templates/ctl-scaffold/dist/esbuild/wrapper.js deleted file mode 100644 index 9f0811035..000000000 --- a/templates/ctl-scaffold/dist/esbuild/wrapper.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -import * as m from "./index.js"; - -m.main(); -console.log("app starting"); From d2fe25d0c0a30023e70cc04a354d6359a1ee05f5 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 17 Oct 2023 10:15:04 +1300 Subject: [PATCH 368/478] Use JS.BigInt --- examples/AdditionalUtxos.purs | 2 +- examples/AlwaysMints.purs | 2 +- examples/AlwaysSucceeds.purs | 2 +- examples/BalanceTxConstraints.purs | 2 +- examples/ChangeGeneration.purs | 2 +- examples/ContractTestUtils.purs | 4 +-- examples/ExUnits.purs | 4 +-- examples/IncludeDatum.purs | 2 +- .../KeyWallet/Internal/Pkh2PkhContract.purs | 4 +-- examples/Lose7Ada.purs | 2 +- examples/MintsMultipleTokens.purs | 2 +- examples/MultipleRedeemers.purs | 2 +- examples/NativeScriptMints.purs | 4 +-- examples/OneShotMinting.purs | 2 +- examples/PaysWithDatum.purs | 2 +- examples/Pkh2Pkh.purs | 2 +- examples/PlutusV2/InlineDatum.purs | 2 +- examples/PlutusV2/ReferenceInputs.purs | 2 +- .../PlutusV2/ReferenceInputsAndScripts.purs | 2 +- examples/PlutusV2/ReferenceScripts.purs | 2 +- examples/SatisfiesAnyOf.purs | 2 +- examples/SignMultiple.purs | 2 +- examples/TxChaining.purs | 2 +- examples/Utxos.purs | 2 +- packages.dhall | 13 ++++++-- spago-packages.nix | 30 +++++++++---------- spago.dhall | 2 +- src/Contract/Plutarch/Types.purs | 2 +- src/Contract/Test/Assert.purs | 2 +- src/Contract/Time.purs | 2 +- src/Contract/Transaction.purs | 2 +- src/Internal/BalanceTx/BalanceTx.purs | 4 +-- src/Internal/BalanceTx/CoinSelection.purs | 9 ++++-- src/Internal/BalanceTx/Collateral.purs | 2 +- src/Internal/BalanceTx/Collateral/Select.purs | 4 +-- src/Internal/BalanceTx/Constraints.purs | 2 +- src/Internal/BalanceTx/Error.purs | 2 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 2 +- src/Internal/BalanceTx/RedeemerIndex.purs | 2 +- src/Internal/BalanceTx/UtxoMinAda.purs | 2 +- src/Internal/Cardano/Types/Transaction.purs | 2 +- src/Internal/Cardano/Types/Value.purs | 4 +-- src/Internal/CoinSelection/UtxoIndex.purs | 4 +-- src/Internal/Contract/WaitUntilSlot.purs | 2 +- src/Internal/Contract/Wallet.purs | 2 +- src/Internal/Deserialization/BigInt.purs | 2 +- src/Internal/Deserialization/Transaction.purs | 4 +-- src/Internal/Equipartition.purs | 4 +-- src/Internal/FromData.purs | 2 +- src/Internal/Helpers.purs | 4 +-- src/Internal/Metadata/Cip25/Common.purs | 4 +-- src/Internal/Metadata/Cip25/V2.purs | 2 +- src/Internal/Metadata/FromMetadata.purs | 2 +- src/Internal/Metadata/ToMetadata.purs | 2 +- src/Internal/Partition.purs | 4 +-- src/Internal/Plutip/Server.purs | 2 +- src/Internal/Plutus/Types/Value.purs | 4 +-- src/Internal/ProcessConstraints/Error.purs | 2 +- src/Internal/QueryM/Kupo.purs | 2 +- src/Internal/QueryM/Ogmios.purs | 4 +-- src/Internal/Serialization/BigInt.purs | 2 +- src/Internal/Serialization/PlutusData.purs | 2 +- src/Internal/Service/Blockfrost.purs | 4 +-- src/Internal/Test/E2E/Runner.purs | 2 +- src/Internal/Test/KeyDir.purs | 4 +-- src/Internal/Test/UtxoDistribution.purs | 2 +- src/Internal/ToData.purs | 4 +-- src/Internal/Types/BigNum.purs | 4 +-- src/Internal/Types/Epoch.purs | 2 +- src/Internal/Types/EraSummaries.purs | 2 +- src/Internal/Types/Int.purs | 2 +- src/Internal/Types/Interval.purs | 4 +-- src/Internal/Types/NatRatio.purs | 2 +- src/Internal/Types/Natural.purs | 4 +-- src/Internal/Types/PlutusData.purs | 4 +-- src/Internal/Types/Rational.purs | 4 +-- src/Internal/Types/SystemStart.purs | 4 +-- src/Internal/Types/TokenName.purs | 2 +- src/Internal/Types/TransactionMetadata.purs | 2 +- src/Internal/Types/TxConstraints.purs | 2 +- src/Internal/Wallet/Cip30.purs | 2 +- templates/ctl-scaffold/packages.dhall | 15 ++++++++-- templates/ctl-scaffold/spago-packages.nix | 30 +++++++++---------- templates/ctl-scaffold/spago.dhall | 2 +- templates/ctl-scaffold/test/Main.purs | 2 +- test/ApplyArgs.purs | 2 +- test/BalanceTx/ChangeGeneration.purs | 2 +- test/BalanceTx/Collateral.purs | 2 +- test/BalanceTx/Time.purs | 2 +- test/Blockfrost.purs | 2 +- .../GenerateFixtures/NativeScript.purs | 2 +- .../GenerateFixtures/ScriptInfo.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/Data.purs | 4 +-- test/Data/Interval.purs | 4 +-- test/Deserialization.purs | 2 +- test/Fixtures.purs | 2 +- test/Hashing.purs | 2 +- test/Partition.purs | 4 +-- test/Plutip/Contract.purs | 2 +- test/Plutip/Contract/Assert.purs | 2 +- test/Plutip/Contract/OgmiosMempool.purs | 2 +- test/Plutip/ExUnits.purs | 2 +- test/Plutip/Staking.purs | 2 +- test/Plutip/UtxoDistribution.purs | 4 +-- test/Plutus/Conversion/Value.purs | 2 +- test/Plutus/Time.purs | 2 +- test/Serialization.purs | 2 +- test/Transaction.purs | 2 +- test/Types/Interval.purs | 2 +- 110 files changed, 192 insertions(+), 171 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 49338d0b9..53e4e102e 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -41,8 +41,8 @@ import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (fromFoldable) as Array -import Data.BigInt (fromInt) as BigInt import Data.Map (difference, filter, keys) as Map +import JS.BigInt (fromInt) as BigInt import Test.QuickCheck (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 1afaff7d3..f8fddc2be 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -21,7 +21,7 @@ import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers -import Data.BigInt as BigInt +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index 1d8de7cd1..26f1677de 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -35,9 +35,9 @@ import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.BigInt as BigInt import Data.Lens (view) import Effect.Exception (error) +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 8a90da6cb..b06f9bb85 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -50,9 +50,9 @@ import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Data.Array (head) import Data.Array (sort) as Array -import Data.BigInt (BigInt, fromInt) import Data.Map (keys, member) as Map import Data.Set (findMin) as Set +import JS.BigInt (BigInt, fromInt) newtype ContractParams = ContractParams { aliceKeyWallet :: KeyWallet diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 7f38681c1..d91ba1823 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -27,11 +27,11 @@ import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Data.Array (fold, length, replicate, take, zip) -import Data.BigInt (fromInt) as BigInt import Data.Lens (to, (^.)) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) import Data.Tuple (Tuple(Tuple)) +import JS.BigInt (fromInt) as BigInt import Test.Spec.Assertions (shouldEqual) -- | A contract that creates `outputsToScript` number of outputs at a script address, diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index e6353fe05..76e8382d1 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -64,10 +64,10 @@ import Contract.Wallet ) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Lens (view) import Effect.Exception (throw) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt type ContractParams = { receiverPkh :: PaymentPubKeyHash diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 6050400cd..6340d689f 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -33,10 +33,10 @@ import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Lens (view) import Effect.Exception (error) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 7faf3675d..5a21a4094 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -33,9 +33,9 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.BigInt as BigInt import Data.Lens (view) import Effect.Exception (error) +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/KeyWallet/Internal/Pkh2PkhContract.purs b/examples/KeyWallet/Internal/Pkh2PkhContract.purs index 8040bb5a0..53bb3d9b3 100644 --- a/examples/KeyWallet/Internal/Pkh2PkhContract.purs +++ b/examples/KeyWallet/Internal/Pkh2PkhContract.purs @@ -22,13 +22,13 @@ import Ctl.Examples.KeyWallet.Internal.Pkh2PkhHtmlForm import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Serialization.Hash (ed25519KeyHashFromBech32) import Ctl.Internal.Types.RawBytes (hexToRawBytes) -import Data.BigInt (BigInt) -import Data.BigInt (fromString) as BigInt import Data.Log.Formatter.Pretty (prettyFormatter) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Effect.Class (class MonadEffect) import Effect.Exception (Error, error, message) +import JS.BigInt (BigInt) +import JS.BigInt (fromString) as BigInt runKeyWalletContract_ :: (PaymentPubKeyHash -> BigInt -> Unlock -> Contract Unit) -> Effect Unit diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index ca13311c5..43cbd25b9 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -36,11 +36,11 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) -import Data.BigInt as BigInt import Data.Foldable (fold) import Data.Functor ((<$>)) import Data.Map as Map import Effect.Exception (error) +import JS.BigInt as BigInt import Test.Spec.Assertions (shouldEqual) main :: Effect Unit diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index e4cc9ea4f..eb731b40d 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -30,8 +30,8 @@ import Ctl.Examples.Helpers ( mkCurrencySymbol , mkTokenName ) as Helpers -import Data.BigInt (fromInt) as BigInt import Effect.Exception (error) +import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index 3ab3c9f84..f5bef4b0b 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -37,11 +37,11 @@ import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts ( mintAlwaysMintsV2ToTheScript ) import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) -import Data.BigInt as BigInt import Data.List as List import Data.Map as Map import Data.Traversable (sequence) import Effect.Exception (error) +import JS.BigInt as BigInt contract :: Contract Unit contract = do diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index a9e8aa1f8..eb3cc0d0d 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -29,8 +29,8 @@ import Ctl.Examples.Helpers , mustPayToPubKeyStakeAddress ) as Helpers import Data.Array (head) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt +import JS.BigInt (BigInt) +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index a4cb3aacb..b37bb08e2 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -51,9 +51,9 @@ import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Data.Array (head, singleton) as Array -import Data.BigInt (BigInt) import Data.Map (toUnfoldable) as Map import Effect.Exception (error, throw) +import JS.BigInt (BigInt) main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index 70262fe81..1cc9efded 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -49,7 +49,7 @@ import Contract.Wallet import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddressWithDatum) import Data.Array (head) -import Data.BigInt (fromInt) as BigInt +import JS.BigInt (fromInt) as BigInt type ContractResult = { address :: Address diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index d3b2d643e..85b3752d7 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -17,7 +17,7 @@ import Contract.TxConstraints as Constraints import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Data.Array (head) -import Data.BigInt as BigInt +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 13022978c..d2f2eca5f 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -38,9 +38,9 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) -import Data.BigInt as BigInt import Data.Map as Map import Effect.Exception (error) +import JS.BigInt as BigInt import Test.Spec.Assertions (shouldEqual) main :: Effect Unit diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 9909e2aef..0725d52aa 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -40,10 +40,10 @@ import Contract.Wallet import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) as Array -import Data.BigInt (fromInt) as BigInt import Data.Lens.Getter ((^.)) import Data.Map (member, toUnfoldable) as Map import Data.Set (member) as Set +import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 054d73b08..b0a453bf9 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -62,8 +62,8 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysMints ) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) -import Data.BigInt (fromInt) as BigInt import Data.Map (toUnfoldable) as Map +import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index 73d726a0e..a52783f7a 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -33,8 +33,8 @@ import Contract.Value (lovelaceValueOf) as Value import Contract.Wallet (ownStakePubKeyHashes) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) -import Data.BigInt (fromInt) as BigInt import Data.Map (toUnfoldable) as Map +import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/SatisfiesAnyOf.purs b/examples/SatisfiesAnyOf.purs index 5763ba240..7443c0868 100644 --- a/examples/SatisfiesAnyOf.purs +++ b/examples/SatisfiesAnyOf.purs @@ -22,7 +22,7 @@ import Contract.PlutusData import Contract.ScriptLookups as Lookups import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints -import Data.BigInt as BigInt +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 60e776ddc..c8c08a15b 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -36,11 +36,11 @@ import Contract.Wallet ) import Control.Monad.Reader (asks) import Data.Array (head) -import Data.BigInt as BigInt import Data.Map (Map, filter) import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref +import JS.BigInt as BigInt getLockedInputs :: Contract (Map TransactionHash (Set UInt)) diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 07bea450e..77300022b 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -31,7 +31,7 @@ import Contract.TxConstraints as Constraints import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) -import Data.BigInt as BigInt +import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/Utxos.purs b/examples/Utxos.purs index fb46be87b..8b782c711 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -35,9 +35,9 @@ import Contract.Wallet import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array -import Data.BigInt (fromInt) as BigInt import Data.Log.Tag (tag) import Data.Map (toUnfoldable) as Map +import JS.BigInt (fromInt) as BigInt import Test.QuickCheck.Arbitrary (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) diff --git a/packages.dhall b/packages.dhall index 59d1f7eb2..bb7e263fb 100644 --- a/packages.dhall +++ b/packages.dhall @@ -117,7 +117,7 @@ let additions = , "argonaut-core" , "arrays" , "bifunctors" - , "bigints" + , "js-bigints" , "bignumber" , "const" , "control" @@ -145,7 +145,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6" + , version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82" } , bignumber = { dependencies = @@ -249,6 +249,15 @@ let additions = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" } + , js-bigints = + { dependencies = + [ "integers" + , "maybe" + , "prelude" + ] + , repo = "https://github.com/purescript-contrib/purescript-js-bigints" + , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" + } } in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index ad8fec593..8fc9f46bd 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; + version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; - sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; + rev = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; + sha256 = "1brh39w3krjscnpsda5yk171yiq0ykf148bzapl1w21qc4g9ifpr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -185,18 +185,6 @@ let installPhase = "ln -s $src $out"; }; - "bigints" = pkgs.stdenv.mkDerivation { - name = "bigints"; - version = "v7.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-bigints.git"; - rev = "e73f55b866e437c7bf04c7d262de7c205c47bbca"; - sha256 = "0msh5sv6g0k69fi0qv4xi1g89bfwai099f0ycjb8a69mnjq8x21n"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; @@ -617,6 +605,18 @@ let installPhase = "ln -s $src $out"; }; + "js-bigints" = pkgs.stdenv.mkDerivation { + name = "js-bigints"; + version = "36a7d8ac75a7230043ae511f3145f9ed130954a9"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-contrib/purescript-js-bigints"; + rev = "36a7d8ac75a7230043ae511f3145f9ed130954a9"; + sha256 = "0q3j7jl6ga63ygw2hmfigxjq8nbj56p3bn94x7vnhnhq7996bkpd"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "js-date" = pkgs.stdenv.mkDerivation { name = "js-date"; version = "v8.0.0"; diff --git a/spago.dhall b/spago.dhall index 74edc759b..fa0ef5f27 100644 --- a/spago.dhall +++ b/spago.dhall @@ -15,7 +15,7 @@ You can edit this file as you like. , "arrays" , "avar" , "bifunctors" - , "bigints" + , "js-bigints" , "bignumber" , "checked-exceptions" , "console" diff --git a/src/Contract/Plutarch/Types.purs b/src/Contract/Plutarch/Types.purs index e7959a975..68cd2fbf4 100644 --- a/src/Contract/Plutarch/Types.purs +++ b/src/Contract/Plutarch/Types.purs @@ -23,7 +23,7 @@ import Contract.PlutusData , class ToData , PlutusData(List, Integer) ) -import Data.BigInt (BigInt) +import JS.BigInt (BigInt) newtype PRational = PRational R.Rational diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 3cf104e40..1577e0e1e 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -100,7 +100,6 @@ import Ctl.Internal.Plutus.Types.Transaction import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Data.Array (foldr) import Data.Array (fromFoldable, length, mapWithIndex, partition) as Array -import Data.BigInt (BigInt) import Data.Either (Either, either, hush) import Data.Foldable (fold, foldMap, null, sum) import Data.Generic.Rep (class Generic) @@ -118,6 +117,7 @@ import Effect.Class (liftEffect) import Effect.Exception (Error, error, message, throw, try) import Effect.Ref (Ref) import Effect.Ref as Ref +import JS.BigInt (BigInt) import Type.Proxy (Proxy(Proxy)) -- | Monad allowing for accumulation of assertion failures. diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index d80564c29..fed74f8f2 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -106,7 +106,6 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) as ExportSystemStart import Data.Array as Array -import Data.BigInt as BigInt import Data.Foldable (find) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) @@ -114,6 +113,7 @@ import Data.UInt as UInt import Effect.Aff (delay) import Effect.Aff.Class (liftAff) import Effect.Exception (error) +import JS.BigInt as BigInt -- | Get a summary of the current era. getCurrentEra :: Contract EraSummary diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 6256dde89..e621e82f5 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -236,7 +236,6 @@ import Ctl.Internal.Types.VRFKeyHash ) as X import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) import Data.Either (Either) import Data.Foldable (foldl, length) import Data.Generic.Rep (class Generic) @@ -253,6 +252,7 @@ import Effect.Aff (bracket, error) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (try) +import JS.BigInt (BigInt) -- | Signs a transaction with potential failure. signTransaction diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 2de3a4340..5345a280d 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -155,8 +155,6 @@ import Data.Array.NonEmpty ) as NEArray import Data.Array.NonEmpty as NEA import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) -import Data.BigInt (toString) as BigInt import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) import Data.Function (on) @@ -175,6 +173,8 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) +import JS.BigInt (BigInt) +import JS.BigInt (toString) as BigInt -- | Balances an unbalanced transaction using the specified balancer -- | constraints. diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index ede499faf..5762b2957 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -60,8 +60,6 @@ import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (snoc, uncons) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (cons', fromArray, singleton, uncons) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt (abs, fromInt, toString) as BigInt import Data.Foldable (foldMap) as Foldable import Data.Function (applyFlipped) import Data.Generic.Rep (class Generic) @@ -79,6 +77,8 @@ import Data.Show.Generic (genericShow) import Data.Tuple (fst) as Tuple import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (class MonadEffect) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, toString) as BigInt import Test.QuickCheck.Arbitrary (class Arbitrary) import Test.QuickCheck.Gen (elements) as Arbitrary import Type.Proxy (Proxy(Proxy)) @@ -374,7 +374,10 @@ runSelectionStep lens state distanceFromTarget :: SelectionState -> BigInt distanceFromTarget = - BigInt.abs <<< sub targetQuantity <<< lens.currentQuantity + bigIntAbs <<< sub targetQuantity <<< lens.currentQuantity + + bigIntAbs :: BigInt -> BigInt + bigIntAbs x = if x < zero then negate x else x targetMultiplier :: Int targetMultiplier = diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index f7eccf29e..e210562cc 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -30,7 +30,6 @@ import Ctl.Internal.Cardano.Types.Value (getNonAdaAsset, mkValue, valueToCoin') import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.BigNum (maxValue, toBigInt) as BigNum import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) -import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap, foldl) import Data.Lens.Setter ((?~)) @@ -38,6 +37,7 @@ import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) import Data.Ord.Max (Max(Max)) import Effect.Class (liftEffect) +import JS.BigInt (BigInt) addTxCollateral :: Array TransactionUnspentOutput -> Transaction -> Transaction addTxCollateral collateral transaction = diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index ad091d077..992471d0a 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -19,8 +19,6 @@ import Ctl.Internal.Cardano.Types.Value (NonAdaAsset) import Ctl.Internal.Cardano.Types.Value (getNonAdaAsset, valueToCoin') as Value import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.BigInt (BigInt) -import Data.BigInt (fromInt) as BigInt import Data.Foldable (foldMap, foldl) import Data.Function (on) import Data.List (List(Nil, Cons)) @@ -34,6 +32,8 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple (fst, snd) as Tuple import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt) as BigInt minRequiredCollateral :: BigInt minRequiredCollateral = BigInt.fromInt 5_000_000 diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index f50e01ae4..0517d5f43 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -38,7 +38,6 @@ import Ctl.Internal.Serialization.Address (Address, NetworkId) import Ctl.Internal.Types.OutputDatum (OutputDatum) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (singleton) as Array -import Data.BigInt (BigInt) import Data.Function (applyFlipped) import Data.Lens (Lens') import Data.Lens.Iso.Newtype (_Newtype) @@ -49,6 +48,7 @@ import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, over2, unwrap, wrap) import Data.Set (Set) import Data.Set (singleton) as Set +import JS.BigInt (BigInt) import Type.Proxy (Proxy(Proxy)) newtype BalanceTxConstraints = BalanceTxConstraints diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 0a0386db1..ad08d96e5 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -51,7 +51,6 @@ import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) -import Data.BigInt (toString) as BigInt import Data.Either (Either(Left, Right), either, isLeft) import Data.Foldable (find, foldMap, foldl, length) import Data.FoldableWithIndex (foldMapWithIndex) @@ -66,6 +65,7 @@ import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String import Data.String.Common (joinWith, split) as String import Data.String.Utils (padEnd) +import JS.BigInt (toString) as BigInt -- | Errors conditions that may possibly arise during transaction balancing data BalanceTxError diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index a5f3040fc..64ce404a7 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -61,7 +61,6 @@ import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes) import Data.Array (fromFoldable, notElem) as Array import Data.Bifunctor (bimap) -import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap) import Data.Lens.Getter ((^.)) @@ -76,6 +75,7 @@ import Data.Tuple (snd) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) +import JS.BigInt (BigInt) evalTxExecutionUnits :: Transaction diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index ff7bbc3b0..3308e1db7 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -37,7 +37,6 @@ import Ctl.Internal.Types.RewardAddress (RewardAddress) import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (findIndex) -import Data.BigInt as BigInt import Data.Either (Either, note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) @@ -48,6 +47,7 @@ import Data.Newtype (class Newtype, unwrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) +import JS.BigInt as BigInt attachRedeemers :: Array Redeemer -> Transaction -> Transaction attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers diff --git a/src/Internal/BalanceTx/UtxoMinAda.purs b/src/Internal/BalanceTx/UtxoMinAda.purs index 8258f3017..e1d37dba3 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.purs +++ b/src/Internal/BalanceTx/UtxoMinAda.purs @@ -22,10 +22,10 @@ import Ctl.Internal.Types.BigNum import Ctl.Internal.Types.ProtocolParameters ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) ) -import Data.BigInt (BigInt) import Data.Maybe (Maybe, fromJust) import Effect (Effect) import Effect.Exception (error) +import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) foreign import minAdaForOutput diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index ece8eac6f..0a92ad9dd 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -147,7 +147,6 @@ import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) import Data.Array (union) -import Data.BigInt (BigInt) import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) import Data.Lens (lens') @@ -169,6 +168,7 @@ import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Data.UInt as UInt +import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) import Type.Proxy (Proxy(Proxy)) diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 1143621e2..9c994678c 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -102,8 +102,6 @@ import Data.Array (fromFoldable) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (replicate, singleton, zipWith) as NEArray import Data.Bifunctor (bimap) -import Data.BigInt (BigInt, fromInt, toNumber) -import Data.BigInt as BigInt import Data.Bitraversable (bitraverse, ltraverse) import Data.Either (Either(Left), note) import Data.Foldable (any, fold, foldl, length) @@ -127,6 +125,8 @@ import Data.These (These(Both, That, This)) import Data.Traversable (class Traversable, traverse) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt, fromInt, toNumber) +import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (Gen, chooseInt, suchThat, vectorOf) diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index cbfe56a70..3ee70c1fe 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -38,8 +38,6 @@ import Data.Array (all, foldl) as Array import Data.Array ((!!)) import Data.Array.NonEmpty (cons') import Data.Bifunctor (bimap) -import Data.BigInt (BigInt) -import Data.BigInt (fromInt) as BigInt import Data.Foldable (all, length) as Foldable import Data.Foldable (foldl) import Data.Function (on) @@ -72,6 +70,8 @@ import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (class MonadEffect, liftEffect) import Effect.Random (randomInt) as Random +import JS.BigInt (BigInt) +import JS.BigInt (fromInt) as BigInt import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (oneOf) import Type.Proxy (Proxy(Proxy)) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index b52778dcd..149dd7006 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -29,7 +29,6 @@ import Ctl.Internal.Types.Natural as Natural import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Array (length, mapMaybe) import Data.Bifunctor (lmap) -import Data.BigInt as BigInt import Data.DateTime.Instant (unInstant) import Data.Either (Either(Right, Left), either) import Data.Foldable (maximum) @@ -42,6 +41,7 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import Effect.Now (now) +import JS.BigInt as BigInt -- | The returned slot will be no less than the slot provided as argument. waitUntilSlot :: Slot -> Contract Chain.Tip diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index f9651c496..90be1902b 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -44,7 +44,6 @@ import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Data.Array (cons, foldMap, foldr) import Data.Array as Array -import Data.BigInt as BigInt import Data.Either (hush) import Data.Foldable (fold, foldl) import Data.Function (on) @@ -57,6 +56,7 @@ import Data.UInt as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) +import JS.BigInt as BigInt getUnusedAddresses :: Contract (Array Address) getUnusedAddresses = fold <$> do diff --git a/src/Internal/Deserialization/BigInt.purs b/src/Internal/Deserialization/BigInt.purs index 68b61e013..370a99d9c 100644 --- a/src/Internal/Deserialization/BigInt.purs +++ b/src/Internal/Deserialization/BigInt.purs @@ -5,8 +5,8 @@ module Ctl.Internal.Deserialization.BigInt import Prelude import Ctl.Internal.Serialization.Types (BigInt) -import Data.BigInt as BigInt import Data.Maybe (Maybe) +import JS.BigInt as BigInt convertBigInt :: BigInt -> Maybe BigInt.BigInt convertBigInt = BigInt.fromString <<< _BigInt_to_str diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index 44dfde2e2..f17faa2a3 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -194,8 +194,6 @@ import Ctl.Internal.Types.TransactionMetadata ) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Bifunctor (bimap, lmap) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Bitraversable (bitraverse) import Data.Either (Either) import Data.Map as M @@ -208,6 +206,8 @@ import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) import Data.UInt as UInt import Data.Variant (Variant) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Type.Row (type (+)) -- | Deserializes CBOR encoded transaction to a CTL's native type. diff --git a/src/Internal/Equipartition.purs b/src/Internal/Equipartition.purs index 9e22c8053..f78c0c389 100644 --- a/src/Internal/Equipartition.purs +++ b/src/Internal/Equipartition.purs @@ -8,9 +8,9 @@ import Prelude import Data.Array (replicate) import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (appendArray, replicate, singleton) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt (fromInt, toInt) as BigInt import Data.Maybe (fromJust) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, toInt) as BigInt import Partial.Unsafe (unsafePartial) -- | Represents types whose values can be equally divided into several parts. diff --git a/src/Internal/FromData.purs b/src/Internal/FromData.purs index 6098b6356..fa4d284e2 100644 --- a/src/Internal/FromData.purs +++ b/src/Internal/FromData.purs @@ -41,7 +41,6 @@ import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (uncons) import Data.Array as Array import Data.ArrayBuffer.Types (Uint8Array) -import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), hush, note) import Data.Generic.Rep as G import Data.List (List) @@ -56,6 +55,7 @@ import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) import Data.UInt (UInt) import Data.Unfoldable (class Unfoldable) +import JS.BigInt (BigInt) import Noble.Secp256k1.ECDSA ( ECDSASignature , MessageHash diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 63e1f00ad..641483365 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -39,8 +39,6 @@ import Aeson (class EncodeAeson, Aeson, encodeAeson, toString) import Control.Monad.Error.Class (class MonadError, throwError) import Data.Array (union) import Data.Bifunctor (bimap) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Bitraversable (ltraverse) import Data.Either (Either(Right), either) import Data.Function (on) @@ -66,6 +64,8 @@ import Effect.Class (class MonadEffect) import Effect.Class.Console (log) import Effect.Exception (throw) import Foreign.Object as Obj +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) diff --git a/src/Internal/Metadata/Cip25/Common.purs b/src/Internal/Metadata/Cip25/Common.purs index 92d4cc29c..09b1c5eeb 100644 --- a/src/Internal/Metadata/Cip25/Common.purs +++ b/src/Internal/Metadata/Cip25/Common.purs @@ -36,13 +36,13 @@ import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Plutus.Types.AssocMap as AssocMap import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (note) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested ((/\)) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt nftMetadataLabel :: BigInt nftMetadataLabel = BigInt.fromInt 721 diff --git a/src/Internal/Metadata/Cip25/V2.purs b/src/Internal/Metadata/Cip25/V2.purs index 81f136491..7cdeefbbd 100644 --- a/src/Internal/Metadata/Cip25/V2.purs +++ b/src/Internal/Metadata/Cip25/V2.purs @@ -64,7 +64,6 @@ import Ctl.Internal.Types.TransactionMetadata import Data.Array (catMaybes, concat, groupBy) import Data.Array.NonEmpty (NonEmptyArray, toArray) import Data.Array.NonEmpty (head) as NonEmpty -import Data.BigInt (fromInt, toString) as BigInt import Data.Either (Either(Left), note) import Data.Function (on) import Data.Generic.Rep (class Generic) @@ -77,6 +76,7 @@ import Data.Traversable (fold, for, sequence, traverse) import Data.Tuple (Tuple) import Data.Tuple.Nested ((/\)) import Foreign.Object (Object, toUnfoldable) as FO +import JS.BigInt (fromInt, toString) as BigInt import Partial.Unsafe (unsafePartial) -- | ``` diff --git a/src/Internal/Metadata/FromMetadata.purs b/src/Internal/Metadata/FromMetadata.purs index 050215939..6f115b1e8 100644 --- a/src/Internal/Metadata/FromMetadata.purs +++ b/src/Internal/Metadata/FromMetadata.purs @@ -8,11 +8,11 @@ import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataList, Int, Bytes, Text) ) import Data.Array (toUnfoldable, uncons) as Array -import Data.BigInt (BigInt) import Data.Maybe (Maybe(Just, Nothing)) import Data.NonEmpty (NonEmpty, (:|)) import Data.Traversable (traverse) import Data.Unfoldable (class Unfoldable) +import JS.BigInt (BigInt) -------------------------------------------------------------------------------- -- FromMetadata diff --git a/src/Internal/Metadata/ToMetadata.purs b/src/Internal/Metadata/ToMetadata.purs index 9b9659713..b8dd0bf33 100644 --- a/src/Internal/Metadata/ToMetadata.purs +++ b/src/Internal/Metadata/ToMetadata.purs @@ -10,12 +10,12 @@ import Ctl.Internal.Types.Int (Int, fromBigInt) as Int import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataMap, MetadataList, Int, Bytes, Text) ) -import Data.BigInt (BigInt) import Data.Map (Map) import Data.Map (fromFoldable, toUnfoldable) as Map import Data.Maybe (fromJust) import Data.Profunctor.Strong ((***)) import Data.Tuple (Tuple) +import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- diff --git a/src/Internal/Partition.purs b/src/Internal/Partition.purs index 134b8ca9f..16c4ad80e 100644 --- a/src/Internal/Partition.purs +++ b/src/Internal/Partition.purs @@ -19,8 +19,6 @@ import Data.Array.NonEmpty , zip , zipWith ) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt (fromInt, toInt) as BigInt import Data.Foldable (any, length, sum) import Data.Function (on) import Data.Maybe (Maybe(Just, Nothing), fromJust) @@ -28,6 +26,8 @@ import Data.Newtype (class Newtype, unwrap) import Data.Ordering (invert) as Ordering import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, toInt) as BigInt import Partial.Unsafe (unsafePartial) class Partition (a :: Type) where diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index c7a501052..0b24c22da 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -78,7 +78,6 @@ import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), either, isLeft) import Data.Foldable (sum) import Data.HTTP.Method as Method @@ -107,6 +106,7 @@ import Effect.Class (liftEffect) import Effect.Exception (error, message, throw) import Effect.Ref (Ref) import Effect.Ref as Ref +import JS.BigInt as BigInt import Mote (bracket) as Mote import Mote.Description (Description(Group, Test)) import Mote.Monad (MoteT(MoteT), mapTest) diff --git a/src/Internal/Plutus/Types/Value.purs b/src/Internal/Plutus/Types/Value.purs index 9e9496055..3e3c31a00 100644 --- a/src/Internal/Plutus/Types/Value.purs +++ b/src/Internal/Plutus/Types/Value.purs @@ -57,8 +57,6 @@ import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.TokenName (TokenName, adaToken, mkTokenName) import Data.Array (concatMap, filter, replicate) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left)) import Data.Foldable (all, fold) import Data.Generic.Rep (class Generic) @@ -69,6 +67,8 @@ import Data.These (These(Both, That, This), these) import Data.Traversable (sequence) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (Gen, chooseInt) diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 5f9f5f57b..9d41e0a68 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -19,10 +19,10 @@ import Ctl.Internal.Types.Scripts ) import Ctl.Internal.Types.TokenName (TokenName) import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) +import JS.BigInt (BigInt) data MkUnbalancedTxError = CannotConvertPaymentPubKeyHash PaymentPubKeyHash diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index bb05ca609..85395945b 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -88,7 +88,6 @@ import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Array (uncons) import Data.Array as Array import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) import Data.Either (Either(Left, Right), note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) @@ -109,6 +108,7 @@ import Effect.Aff (Aff, delay) import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object (toUnfoldable) as Object +import JS.BigInt (BigInt) -------------------------------------------------------------------------------- -- Requests diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 6058faa20..6c733e4dc 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -184,8 +184,6 @@ import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) @@ -214,6 +212,8 @@ import Data.UInt as UInt import Foreign.Object (Object) import Foreign.Object (singleton, toUnfoldable) as ForeignObject import Foreign.Object as Object +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) diff --git a/src/Internal/Serialization/BigInt.purs b/src/Internal/Serialization/BigInt.purs index 00dcfc3e0..8a0418ce9 100644 --- a/src/Internal/Serialization/BigInt.purs +++ b/src/Internal/Serialization/BigInt.purs @@ -6,8 +6,8 @@ import Prelude import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.Serialization.Types (BigInt) -import Data.BigInt as BigInt import Data.Maybe (Maybe) +import JS.BigInt as BigInt convertBigInt :: BigInt.BigInt -> Maybe BigInt convertBigInt = _BigInt_from_str maybeFfiHelper <<< BigInt.toString diff --git a/src/Internal/Serialization/PlutusData.purs b/src/Internal/Serialization/PlutusData.purs index b607fc206..e15a4bd44 100644 --- a/src/Internal/Serialization/PlutusData.purs +++ b/src/Internal/Serialization/PlutusData.purs @@ -21,10 +21,10 @@ import Ctl.Internal.Serialization.Types import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.PlutusData as T -import Data.BigInt as BigInt import Data.Maybe (Maybe, fromJust) import Data.Tuple (Tuple, fst, snd) import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) convertPlutusData :: T.PlutusData -> PlutusData diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 987d8db14..81ffa2cbe 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -211,8 +211,6 @@ import Ctl.Internal.Types.TransactionMetadata ) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) -import Data.BigInt (BigInt) -import Data.BigInt (fromString, toNumber) as BigInt import Data.BigNumber (BigNumber, toFraction) import Data.BigNumber as BigNumber import Data.DateTime.Instant (instant, toDateTime) @@ -241,6 +239,8 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) import Foreign.Object (Object) +import JS.BigInt (BigInt) +import JS.BigInt (fromString, toNumber) as BigInt -------------------------------------------------------------------------------- -- BlockfrostServiceM diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index c14aec7ae..26a659b9c 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -81,7 +81,6 @@ import Ctl.Internal.Wallet.Key ) import Data.Array (catMaybes, mapMaybe, nub) import Data.Array as Array -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), isLeft) import Data.Foldable (fold) import Data.HTTP.Method (Method(GET)) @@ -114,6 +113,7 @@ import Effect.Class (liftEffect) import Effect.Console (log) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref +import JS.BigInt as BigInt import Mote (group, test) import Node.Buffer (fromArrayBuffer) import Node.ChildProcess diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 04718dd50..9575f9d01 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -76,8 +76,6 @@ import Ctl.Internal.Types.TxConstraints import Ctl.Internal.Wallet (KeyWallet) import Data.Array (catMaybes) import Data.Array as Array -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Right, Left), hush) import Data.Foldable (fold, sum) import Data.Lens ((^.)) @@ -104,6 +102,8 @@ import Effect.Class (liftEffect) import Effect.Class.Console (info) import Effect.Exception (error, throw) import Effect.Ref as Ref +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Mote.Monad (mapTest) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (mkdir, readTextFile, readdir, writeTextFile) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 3647112ad..73a365c80 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -52,7 +52,6 @@ import Ctl.Internal.Wallet.Key ) import Data.Array (head) import Data.Array as Array -import Data.BigInt (BigInt) import Data.FoldableWithIndex (foldMapWithIndex) import Data.List (List, (:)) import Data.Map as Map @@ -63,6 +62,7 @@ import Data.Tuple (Tuple) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (liftEffect) import Effect.Ref as Ref +import JS.BigInt (BigInt) import Type.Prelude (Proxy(Proxy)) -- | UTxO amount in Lovelaces diff --git a/src/Internal/ToData.purs b/src/Internal/ToData.purs index 722f1d6fe..b1799f0d1 100644 --- a/src/Internal/ToData.purs +++ b/src/Internal/ToData.purs @@ -35,8 +35,6 @@ import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (cons, sortWith) import Data.Array as Array import Data.ArrayBuffer.Types (Uint8Array) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Foldable (class Foldable) import Data.Generic.Rep as G @@ -49,6 +47,8 @@ import Data.Symbol (class IsSymbol) import Data.TextEncoder (encodeUtf8) import Data.Tuple (Tuple(Tuple), fst, snd) import Data.UInt (UInt) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Noble.Secp256k1.ECDSA ( ECDSAPublicKey , ECDSASignature diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs index d2e28d38b..e5a75d039 100644 --- a/src/Internal/Types/BigNum.purs +++ b/src/Internal/Types/BigNum.purs @@ -24,13 +24,13 @@ import Aeson (JsonDecodeError(TypeMismatch)) as Aeson import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) import Ctl.Internal.Error (E, noteE) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Data.BigInt (BigInt) -import Data.BigInt (fromString, toString) as BigInt import Data.Either (note) import Data.Int (fromString) as Int import Data.Maybe (Maybe, fromJust) import Data.UInt (UInt) import Data.UInt (fromInt, fromString, toString) as UInt +import JS.BigInt (BigInt) +import JS.BigInt (fromString, toString) as BigInt import Partial.Unsafe (unsafePartial) import Type.Row (type (+)) diff --git a/src/Internal/Types/Epoch.purs b/src/Internal/Types/Epoch.purs index 4b01d1a12..fed438326 100644 --- a/src/Internal/Types/Epoch.purs +++ b/src/Internal/Types/Epoch.purs @@ -4,9 +4,9 @@ import Prelude import Aeson (class DecodeAeson, class EncodeAeson) import Ctl.Internal.Helpers (showWithParens) -import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) +import JS.BigInt (BigInt) -- | An epoch number or length with greater precision for Ogmios than -- | `Cardano.Types.Epoch`. [ 0 .. 18446744073709552000 ] diff --git a/src/Internal/Types/EraSummaries.purs b/src/Internal/Types/EraSummaries.purs index 04aa5f686..e1d11c076 100644 --- a/src/Internal/Types/EraSummaries.purs +++ b/src/Internal/Types/EraSummaries.purs @@ -22,11 +22,11 @@ import Ctl.Internal.Helpers (showWithParens) import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Service.Helpers (aesonObject) import Ctl.Internal.Types.Epoch (Epoch) -import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe) import Data.Newtype (class Newtype, wrap) import Data.Show.Generic (genericShow) +import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- diff --git a/src/Internal/Types/Int.purs b/src/Internal/Types/Int.purs index d3e875ebe..5d9fceb7c 100644 --- a/src/Internal/Types/Int.purs +++ b/src/Internal/Types/Int.purs @@ -22,10 +22,10 @@ import Aeson import Control.Alternative ((<|>)) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromInt) as BigNum -import Data.BigInt as BigInt import Data.Either (note) import Data.Function (on) import Data.Maybe (Maybe, fromJust) +import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) import Prim as Prim diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index ad78852c6..9a957d5eb 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -120,8 +120,6 @@ import Data.Array (find, head, index, length) import Data.Array.NonEmpty (singleton) as NEArray import Data.Array.NonEmpty ((:)) import Data.Bifunctor (bimap, lmap) -import Data.BigInt (BigInt) -import Data.BigInt (fromInt, fromNumber, fromString, toNumber) as BigInt import Data.Either (Either(Left, Right), note) import Data.Generic.Rep (class Generic) import Data.Lattice @@ -137,6 +135,8 @@ import Data.Show.Generic (genericShow) import Data.Tuple (uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Foreign.Object (Object) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, fromNumber, fromString, toNumber) as BigInt import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) import Test.QuickCheck (class Arbitrary, arbitrary) diff --git a/src/Internal/Types/NatRatio.purs b/src/Internal/Types/NatRatio.purs index 4b41a7ca2..a55a300d3 100644 --- a/src/Internal/Types/NatRatio.purs +++ b/src/Internal/Types/NatRatio.purs @@ -23,8 +23,8 @@ import Ctl.Internal.Types.Rational , numerator , (%) ) as Rational -import Data.BigInt (BigInt) import Data.Maybe (Maybe(Nothing)) +import JS.BigInt (BigInt) -- | `NatRatio` is a newtype over `Rational` with smart constructors to create a -- | `NatRatio` safely. Therefore, the data constructor is not exported. diff --git a/src/Internal/Types/Natural.purs b/src/Internal/Types/Natural.purs index 8228b8113..ac94710c0 100644 --- a/src/Internal/Types/Natural.purs +++ b/src/Internal/Types/Natural.purs @@ -20,11 +20,11 @@ import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) -import Data.BigInt (BigInt) -import Data.BigInt (fromInt, fromString) as BigInt import Data.Either (Either(Left), note) import Data.Function (on) import Data.Maybe (Maybe(Nothing, Just), fromMaybe) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, fromString) as BigInt newtype Natural = Natural BigInt diff --git a/src/Internal/Types/PlutusData.purs b/src/Internal/Types/PlutusData.purs index 6283b6b2f..d9a67c594 100644 --- a/src/Internal/Types/PlutusData.purs +++ b/src/Internal/Types/PlutusData.purs @@ -24,8 +24,6 @@ import Control.Alt ((<|>)) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Log.Tag (TagSet, tag, tagSetTag) @@ -35,6 +33,8 @@ import Data.Show.Generic (genericShow) import Data.Traversable (for) import Data.Tuple (Tuple) import Data.Tuple.Nested ((/\)) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt -- Doesn't distinguish "BuiltinData" and "Data" like Plutus: data PlutusData diff --git a/src/Internal/Types/Rational.purs b/src/Internal/Types/Rational.purs index 1024b38f7..4b7d940c2 100644 --- a/src/Internal/Types/Rational.purs +++ b/src/Internal/Types/Rational.purs @@ -26,12 +26,12 @@ import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Nat import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) -import Data.BigInt (BigInt) -import Data.BigInt (fromInt) as BigInt import Data.Either (Either(Left)) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Ratio (Ratio) import Data.Ratio (denominator, numerator, (%)) as Ratio +import JS.BigInt (BigInt) +import JS.BigInt (fromInt) as BigInt -- | `Rational` is a newtype over `Ratio` with a smart constructor `reduce` -- | that allows to create a `Rational` safely. The constructor is not exposed. diff --git a/src/Internal/Types/SystemStart.purs b/src/Internal/Types/SystemStart.purs index c1b8895c5..80e37b524 100644 --- a/src/Internal/Types/SystemStart.purs +++ b/src/Internal/Types/SystemStart.purs @@ -9,8 +9,6 @@ module Ctl.Internal.Types.SystemStart import Prelude import Control.Alt ((<|>)) -import Data.BigInt (BigInt) -import Data.BigInt (fromNumber) as BigInt import Data.DateTime (DateTime) import Data.DateTime.Instant (fromDateTime, unInstant) import Data.Either (Either, hush) @@ -20,6 +18,8 @@ import Data.Maybe (Maybe, fromJust) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.String (length, take) as String +import JS.BigInt (BigInt) +import JS.BigInt (fromNumber) as BigInt import Partial.Unsafe (unsafePartial) newtype SystemStart = SystemStart DateTime diff --git a/src/Internal/Types/TokenName.purs b/src/Internal/Types/TokenName.purs index 1219262cc..86593a9d3 100644 --- a/src/Internal/Types/TokenName.purs +++ b/src/Internal/Types/TokenName.purs @@ -28,7 +28,6 @@ import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex, byteLength) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Data.ArrayBuffer.Types (Uint8Array) -import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) import Data.Either (Either(Right, Left), either, note) import Data.Map (Map) @@ -39,6 +38,7 @@ import Data.String.CodePoints (drop, take) import Data.TextEncoder (encodeUtf8) import Data.Traversable (class Traversable, traverse) import Data.Tuple.Nested (type (/\)) +import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (resize) diff --git a/src/Internal/Types/TransactionMetadata.purs b/src/Internal/Types/TransactionMetadata.purs index 55e76dfc7..c92752e99 100644 --- a/src/Internal/Types/TransactionMetadata.purs +++ b/src/Internal/Types/TransactionMetadata.purs @@ -21,12 +21,12 @@ import Ctl.Internal.Helpers ) import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int (Int) as Int -import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map (empty) as Map import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) +import JS.BigInt (BigInt) newtype GeneralTransactionMetadata = GeneralTransactionMetadata diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 4fec99e66..a7f9ab229 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -134,7 +134,6 @@ import Ctl.Internal.Types.Scripts import Ctl.Internal.Types.TokenName (TokenName) import Ctl.Internal.Types.Transaction (DataHash, TransactionInput) import Data.Array as Array -import Data.BigInt (BigInt) import Data.Foldable (class Foldable, foldMap, foldl, foldr) import Data.Generic.Rep (class Generic) import Data.Lattice (join) @@ -145,6 +144,7 @@ import Data.Monoid (guard) import Data.Newtype (class Newtype, over, unwrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) import Prim.TypeError (class Warn, Text) -------------------------------------------------------------------------------- diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 57e05150d..f698e5dd5 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -46,7 +46,6 @@ import Ctl.Internal.Types.CborBytes , rawBytesAsCborBytes ) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) -import Data.BigInt (fromInt) as BigInt import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) @@ -54,6 +53,7 @@ import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) +import JS.BigInt (fromInt) as BigInt type DataSignature = { key :: CborBytes diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 765b35fc4..b83a46920 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -117,7 +117,7 @@ let additions = , "argonaut-core" , "arrays" , "bifunctors" - , "bigints" + , "js-bigints" , "bignumber" , "const" , "control" @@ -145,7 +145,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6" + , version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82" } , bignumber = { dependencies = @@ -262,7 +262,7 @@ let additions = , "arrays" , "avar" , "bifunctors" - , "bigints" + , "js-bigints" , "bignumber" , "checked-exceptions" , "console" @@ -344,6 +344,15 @@ let additions = , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" , version = "325665b19859bbf3e48e296e9aa717673f5f3d79" } + , js-bigints = + { dependencies = + [ "integers" + , "maybe" + , "prelude" + ] + , repo = "https://github.com/purescript-contrib/purescript-js-bigints" + , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" + } } in upstream // additions diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index ddecaa01d..743cf27d6 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; + version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "e411566cf5e3adf05ea9ae866705886cfba4bfa6"; - sha256 = "01wqbd9pz1pmz1f0z5w4gwaswbdnkr9md7fihg4d91vs690zf792"; + rev = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; + sha256 = "1brh39w3krjscnpsda5yk171yiq0ykf148bzapl1w21qc4g9ifpr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -185,18 +185,6 @@ let installPhase = "ln -s $src $out"; }; - "bigints" = pkgs.stdenv.mkDerivation { - name = "bigints"; - version = "v7.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-bigints.git"; - rev = "e73f55b866e437c7bf04c7d262de7c205c47bbca"; - sha256 = "0msh5sv6g0k69fi0qv4xi1g89bfwai099f0ycjb8a69mnjq8x21n"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "bignumber" = pkgs.stdenv.mkDerivation { name = "bignumber"; version = "760d11b41ece31b8cdd3c53349c5c2fd48d3ff89"; @@ -629,6 +617,18 @@ let installPhase = "ln -s $src $out"; }; + "js-bigints" = pkgs.stdenv.mkDerivation { + name = "js-bigints"; + version = "36a7d8ac75a7230043ae511f3145f9ed130954a9"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-contrib/purescript-js-bigints"; + rev = "36a7d8ac75a7230043ae511f3145f9ed130954a9"; + sha256 = "0q3j7jl6ga63ygw2hmfigxjq8nbj56p3bn94x7vnhnhq7996bkpd"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "js-date" = pkgs.stdenv.mkDerivation { name = "js-date"; version = "v8.0.0"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index d56a902bc..988099120 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -5,7 +5,7 @@ You can edit this file as you like. { name = "ctl-package-example" , dependencies = [ "aff" - , "bigints" + , "js-bigints" , "cardano-transaction-lib" , "datetime" , "effect" diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index d3f13d060..1ea12ce4e 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -14,7 +14,6 @@ import Contract.Test.Plutip , withWallets ) import Contract.Test.Utils (exitCode, interruptOnSignal) -import Data.BigInt (fromInt) as BigInt import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff ( Milliseconds(Milliseconds) @@ -22,6 +21,7 @@ import Effect.Aff , effectCanceler , launchAff ) +import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Scaffold (contract) import Test.Spec.Runner (defaultConfig) diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index 9e08c782b..da5048010 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -16,12 +16,12 @@ import Control.Monad.Error.Class (class MonadError) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) -import Data.BigInt (fromInt) import Data.List.Lazy (replicate) import Data.Profunctor.Choice (left) import Effect.Aff (Error, error, throwError) import Foreign.Object (Object) import Foreign.Object as Object +import JS.BigInt (fromInt) import Mote (group, test) import Test.Spec.Assertions (shouldEqual) diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs index 3cced8073..b0ae5eff2 100644 --- a/test/BalanceTx/ChangeGeneration.purs +++ b/test/BalanceTx/ChangeGeneration.purs @@ -5,7 +5,7 @@ import Prelude import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.BigInt (fromInt) as BigInt +import JS.BigInt (fromInt) as BigInt import Mote (group, test) suite :: TestPlanM ContractTest Unit diff --git a/test/BalanceTx/Collateral.purs b/test/BalanceTx/Collateral.purs index 152a75946..4bad2e75a 100644 --- a/test/BalanceTx/Collateral.purs +++ b/test/BalanceTx/Collateral.purs @@ -24,7 +24,6 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Data.Array (length, range, replicate, zipWith) as Array -import Data.BigInt (fromInt) as BigInt import Data.List (singleton) as List import Data.Map (fromFoldable) as Map import Data.Maybe (Maybe(Just)) @@ -36,6 +35,7 @@ import Data.UInt (UInt) import Data.UInt (fromInt, toInt) as UInt import Effect.Aff (Aff) import Effect.Class (liftEffect) +import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Test.Ctl.Fixtures ( currencySymbol1 diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index c910f46b0..8d265bb51 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -29,9 +29,9 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromInt, toInt) as BigNum import Ctl.Internal.Types.Interval (Interval) -import Data.BigInt (fromString) as BigInt import Effect.Aff (Aff) import Effect.Exception (error) +import JS.BigInt (fromString) as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (fail, shouldEqual) diff --git a/test/Blockfrost.purs b/test/Blockfrost.purs index 287373ac8..fb3d84732 100644 --- a/test/Blockfrost.purs +++ b/test/Blockfrost.purs @@ -29,7 +29,6 @@ import Ctl.Internal.Service.Blockfrost import Ctl.Internal.Service.Blockfrost as Blockfrost import Data.Array ((!!)) import Data.Bifunctor (lmap) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), fromRight, isRight) import Data.FoldableWithIndex (forWithIndex_) import Data.Log.Formatter.Pretty (prettyFormatter) @@ -40,6 +39,7 @@ import Data.Tuple.Nested ((/\)) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) import Effect.Class.Console (log) +import JS.BigInt as BigInt import Mote (group, test) import Node.Process (argv) import Partial.Unsafe (unsafePartial) diff --git a/test/Blockfrost/GenerateFixtures/NativeScript.purs b/test/Blockfrost/GenerateFixtures/NativeScript.purs index 256674a30..5d2c45a1a 100644 --- a/test/Blockfrost/GenerateFixtures/NativeScript.purs +++ b/test/Blockfrost/GenerateFixtures/NativeScript.purs @@ -31,8 +31,8 @@ import Ctl.Internal.Service.Blockfrost ) import Ctl.Internal.Service.Blockfrost (getScriptByHash) as Blockfrost import Data.Array (mapWithIndex) -import Data.BigInt (fromInt) as BigInt import Data.UInt (fromInt) as UInt +import JS.BigInt (fromInt) as BigInt import Test.Ctl.Blockfrost.GenerateFixtures.Helpers ( blockfrostBackend , getSkeyFilepathFromEnv diff --git a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs index ed1d754f8..46421748f 100644 --- a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs +++ b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs @@ -35,9 +35,9 @@ import Ctl.Internal.Service.Blockfrost ) import Ctl.Internal.Service.Blockfrost (getScriptInfo) as Blockfrost import Data.Array (zip) as Array -import Data.BigInt (fromInt) as BigInt import Data.FoldableWithIndex (forWithIndex_) import Data.UInt (fromInt) as UInt +import JS.BigInt (fromInt) as BigInt import Test.Ctl.Blockfrost.GenerateFixtures.Helpers ( blockfrostBackend , getSkeyFilepathFromEnv diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 6059a383e..499db9afa 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -29,7 +29,6 @@ import Ctl.Internal.Types.ByteArray (byteArrayFromAscii) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.BigInt (fromInt) as BigInt import Data.Foldable (fold, foldMap) import Data.Generic.Rep (class Generic) import Data.Map (fromFoldable, values) as Map @@ -44,6 +43,7 @@ import Effect.Aff (Aff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throw) import Effect.Unsafe (unsafePerformEffect) +import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.CoinSelection.Arbitrary diff --git a/test/Data.purs b/test/Data.purs index de27966d2..8271ca5a6 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -34,8 +34,6 @@ import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) import Data.Array.NonEmpty (fromNonEmpty) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) @@ -47,6 +45,8 @@ import Data.Tuple (Tuple(Tuple), uncurry) import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Exception (Error) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.QuickCheck ((===)) diff --git a/test/Data/Interval.purs b/test/Data/Interval.purs index 8d313a46b..8808d9ad4 100644 --- a/test/Data/Interval.purs +++ b/test/Data/Interval.purs @@ -33,11 +33,11 @@ import Ctl.Internal.Types.Interval , genUpperRay , mkFiniteInterval ) -import Data.BigInt (BigInt) -import Data.BigInt as BigInt import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt import Mote (group, test) import Test.QuickCheck (Result, arbitrary, quickCheck, (===)) import Test.QuickCheck.Gen (Gen) diff --git a/test/Deserialization.purs b/test/Deserialization.purs index 8f51d601a..f85cf66b4 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -40,7 +40,6 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (fromBigInt, toBigInt) as BigNum import Ctl.Internal.Types.Transaction (TransactionInput) as T import Data.Array as Array -import Data.BigInt as BigInt import Data.Either (hush) import Data.Foldable (fold) import Data.Maybe (isJust, isNothing) @@ -50,6 +49,7 @@ import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) +import JS.BigInt as BigInt import Mote (group, skip, test) import Test.Ctl.Fixtures ( nativeScriptFixture1 diff --git a/test/Fixtures.purs b/test/Fixtures.purs index bbd8b1e75..b76d11831 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -205,7 +205,6 @@ import Ctl.Internal.Types.TransactionMetadata , TransactionMetadatumLabel(TransactionMetadatumLabel) ) import Data.Array as Array -import Data.BigInt as BigInt import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) @@ -215,6 +214,7 @@ import Data.Set (singleton) as Set import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) +import JS.BigInt as BigInt import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) diff --git a/test/Hashing.purs b/test/Hashing.purs index d762a8a23..11c92b5a2 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -22,10 +22,10 @@ import Ctl.Internal.Types.ByteArray import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.Types.Scripts (PlutusScript, plutusV1Script, plutusV2Script) import Ctl.Internal.Types.Transaction (DataHash) -import Data.BigInt (fromInt) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Effect.Aff (Aff) +import JS.BigInt (fromInt) import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (plutusDataFixture7) diff --git a/test/Partition.purs b/test/Partition.purs index 77b86eb1a..dfa9e868f 100644 --- a/test/Partition.purs +++ b/test/Partition.purs @@ -12,8 +12,6 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.Array (elem) as Array import Data.Array.NonEmpty (NonEmptyArray, (:)) import Data.Array.NonEmpty (length, singleton, sort, zip) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt (fromInt) as BigInt import Data.Foldable (all, foldMap, sum) import Data.Maybe (Maybe(Just, Nothing), isNothing) import Data.Newtype (class Newtype, unwrap) @@ -21,6 +19,8 @@ import Data.Ord.Max (Max(Max)) import Data.Ord.Min (Min(Min)) import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (suchThat) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index cd9c3e0c3..63652ec96 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -157,7 +157,6 @@ import Ctl.Internal.Wallet.Cip30Mock , withCip30Mock ) import Data.Array (head, (!!)) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right), isLeft, isRight) import Data.Foldable (fold, foldM, length) import Data.Lens (view) @@ -170,6 +169,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (throw) +import JS.BigInt as BigInt import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 543c4c39e..824b65341 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -23,12 +23,12 @@ import Ctl.Examples.ContractTestUtils as ContractTestUtils import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) import Data.Array (head) -import Data.BigInt as BigInt import Data.Either (isLeft, isRight) import Data.Newtype (wrap) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (liftEffect) import Effect.Exception (throw) +import JS.BigInt as BigInt import Mote (group, test) import Test.Ctl.Fixtures (cip25MetadataFixture1) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) diff --git a/test/Plutip/Contract/OgmiosMempool.purs b/test/Plutip/Contract/OgmiosMempool.purs index dc9a77223..269ec587a 100644 --- a/test/Plutip/Contract/OgmiosMempool.purs +++ b/test/Plutip/Contract/OgmiosMempool.purs @@ -18,7 +18,7 @@ import Contract.Test.Mote (TestPlanM) import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum import Data.Array (length) -import Data.BigInt as BigInt +import JS.BigInt as BigInt import Mote (group, skip, test) import Test.Spec.Assertions (shouldEqual) diff --git a/test/Plutip/ExUnits.purs b/test/Plutip/ExUnits.purs index 73c433234..b05bc9373 100644 --- a/test/Plutip/ExUnits.purs +++ b/test/Plutip/ExUnits.purs @@ -11,9 +11,9 @@ import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.ExUnits as ExUnits import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.BigInt as BigInt import Data.Either (isLeft) import Effect.Aff (try) +import JS.BigInt as BigInt import Mote (test) import Test.Spec.Assertions (shouldSatisfy) diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 538913c37..d4d698ed0 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -74,7 +74,6 @@ import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.IncludeDatum (only42Script) import Data.Array (head, (!!)) import Data.Array as Array -import Data.BigInt as BigInt import Data.Foldable (for_) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (unwrap) @@ -95,6 +94,7 @@ import Effect.Aff import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) +import JS.BigInt as BigInt import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config) as Common diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index 04d1f2f74..fcc796eb1 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -45,8 +45,6 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) import Data.Array (foldl, head, replicate, zip) import Data.Array.NonEmpty (fromNonEmpty) as NEArray -import Data.BigInt (BigInt) -import Data.BigInt (fromInt, toString) as BigInt import Data.Foldable (intercalate) import Data.FoldableWithIndex (foldlWithIndex) import Data.Map (empty, insert, isEmpty) as Map @@ -58,6 +56,8 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (throw) +import JS.BigInt (BigInt) +import JS.BigInt (fromInt, toString) as BigInt import Mote (group, test) import Test.Ctl.Plutip.Common (config, privateStakeKey) import Test.QuickCheck (class Arbitrary, arbitrary) diff --git a/test/Plutus/Conversion/Value.purs b/test/Plutus/Conversion/Value.purs index 6cce4c950..36d8a4438 100644 --- a/test/Plutus/Conversion/Value.purs +++ b/test/Plutus/Conversion/Value.purs @@ -11,12 +11,12 @@ import Ctl.Internal.Plutus.Types.Value (Value) as Plutus import Ctl.Internal.Plutus.Types.Value as Plutus.Value import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.Array (length, range, zip) -import Data.BigInt (fromInt) import Data.Maybe (fromJust) import Data.Traversable (for_) import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) +import JS.BigInt (fromInt) import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (currencySymbol1, tokenName1, tokenName2) diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 0187c9c08..97ff2fcd2 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -44,11 +44,11 @@ import Ctl.Internal.Types.Interval , ToOnChainPosixTimeRangeError(PosixTimeToSlotError', SlotToPosixTimeError') ) import Ctl.Internal.Types.SystemStart (sysStartFromOgmiosTimestampUnsafe) -import Data.BigInt as BigInt import Data.Int as Int import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) +import JS.BigInt as BigInt import Mote (group) import Test.Ctl.Utils (toFromAesonTest, toFromAesonTestWith) diff --git a/test/Serialization.purs b/test/Serialization.purs index aabb3f997..64c3a6fb3 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -22,7 +22,6 @@ import Ctl.Internal.Types.BigNum (fromString, one) as BN import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Ctl.Internal.Types.CborBytes (cborBytesToHex) import Ctl.Internal.Types.PlutusData as PD -import Data.BigInt as BigInt import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) import Data.Newtype (unwrap, wrap) @@ -30,6 +29,7 @@ import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error) +import JS.BigInt as BigInt import Mote (group, test) import Test.Ctl.Fixtures ( txBinaryFixture1 diff --git a/test/Transaction.purs b/test/Transaction.purs index 7b0692f7d..da44aa6e6 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -31,7 +31,6 @@ import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , PlutusScript(PlutusScript) ) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (over, unwrap) @@ -40,6 +39,7 @@ import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (throw) +import JS.BigInt as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures.CostModels (costModelsFixture1) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 727e1d521..e671c55a8 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -33,13 +33,13 @@ import Ctl.Internal.Types.Interval ) import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Bifunctor (lmap) -import Data.BigInt (fromInt, fromString) as BigInt import Data.Either (Either(Left, Right), either) import Data.Maybe (fromJust) import Data.Newtype (unwrap) import Data.Traversable (traverse_) import Effect (Effect) import Effect.Exception (error) +import JS.BigInt (fromInt, fromString) as BigInt import Mote (group, test) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) From 6e4debe87ddbafaa3c77033888f9c998e28cd7ca Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 17 Oct 2023 18:30:30 +0400 Subject: [PATCH 369/478] Support nodejs bundling. Proxy-pass kupo requests when serving via esbuild --- Makefile | 23 +++++++++++---- esbuild/config.js | 62 ++++++++++++++++++++++++---------------- esbuild/serve.js | 55 +++++++++++++++++++++++++++++++++-- package-lock.json | 21 ++++++++++++++ package.json | 1 + webpack.config.cjs | 71 ++++++++++++++++++++++++++++++---------------- 6 files changed, 176 insertions(+), 57 deletions(-) diff --git a/Makefile b/Makefile index 09bddd630..3b2b7300d 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,21 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') -js-sources := $(shell fd --no-ignore-parent -ejs) -# points to one of the example PureScript modules in examples/ +js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) + +### Bundler setup + +# The main Purescript module ps-entrypoint := Ctl.Examples.ByUrl +# The entry point function in the main PureScript module ps-entrypoint-function := main +# Whether to bundle for the browser +browser-runtime := 1 # Use "1" for true and "" for false + preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') serve-port := 4008 @@ -20,6 +27,9 @@ create-bundle-entrypoint: @mkdir -p dist/ @echo 'import("../output/${ps-entrypoint}/index.js").then(m => m.${ps-entrypoint-function}());' > ./dist/entrypoint.js +delete-bundle-entrypoint: + @rm -f ./dist/entrypoint.js + create-html-entrypoint: @mkdir -p dist/ @cat << EOF > dist/index.html @@ -31,15 +41,16 @@ create-html-entrypoint: esbuild-bundle: spago-build create-bundle-entrypoint @mkdir -p dist/ - @BROWSER_RUNTIME=1 node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + BROWSER_RUNTIME=${browser-runtime} node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + @make delete-bundle-entrypoint esbuild-serve: spago-build create-bundle-entrypoint create-html-entrypoint - BROWSER_RUNTIME=1 node esbuild/serve.js ./dist/entrypoint.js dist/index.js dist/ ${serve-port} webpack-bundle: spago-build create-bundle-entrypoint - BROWSER_RUNTIME=1 webpack --mode=production \ + BROWSER_RUNTIME=${browser-runtime} webpack --mode=production \ -o dist/ --env entry=./dist/entrypoint.js + @make delete-bundle-entrypoint webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint BROWSER_RUNTIME=1 webpack-dev-server --progress \ diff --git a/esbuild/config.js b/esbuild/config.js index c3294b5f8..c1785847a 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -1,27 +1,41 @@ import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -export const buildOptions = ({ entryPoint, outfile }) => ({ - entryPoints: [entryPoint], - outfile: outfile, - define: { - BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - }, - plugins: [ - polyfillNode({ - polyfills: { - crypto: true, - fs: true, - os: true, - }, - }), - wasmLoader({ - mode: "deferred", - }), - ], - bundle: true, - platform: "browser", - format: "esm", - treeShaking: true, - logLevel: "error", -}); +const isBrowser = !!process.env.BROWSER_RUNTIME; + +export const buildOptions = ({ entryPoint, outfile }) => { + const config = { + entryPoints: [entryPoint], + outfile: outfile, + define: { + BROWSER_RUNTIME: isBrowser ? "true" : '""', + }, + plugins: [ + wasmLoader({ + mode: "deferred", + }), + ], + bundle: true, + platform: isBrowser ? "browser" : "node", + format: "esm", + treeShaking: true, + logLevel: "error", + }; + + // https://esbuild.github.io/api/#packages + if (!isBrowser) { + config.packages = "external"; + } else { + config.plugins.push( + polyfillNode({ + polyfills: { + crypto: true, + fs: true, + os: true, + }, + }) + ); + } + + return config; +}; diff --git a/esbuild/serve.js b/esbuild/serve.js index c079f1cc8..00ad2ffe3 100755 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -1,5 +1,7 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; +import http from "node:http"; +import * as url from "url"; if (process.argv.length < 6) { throw `usage: nodejs serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; @@ -13,10 +15,57 @@ const ctx = await esbuild.context( ); const config = { - port: parseInt(process.argv[5]), + // Use the next port for esbuild server, + // we need a port for our proxy (see below). + port: parseInt(process.argv[5]) + 1, servedir: process.argv[4], }; -console.log("serving:", config); +let { host, port } = await ctx.serve(config); -await ctx.serve(config); +// Proxy Kupo to esbuild server +const kupoEndpoint = process.env.KUPO_HOST || "http://localhost:1442"; +const kupoHost = url.parse(kupoEndpoint).hostname; +const kupoPort = url.parse(kupoEndpoint).port || 80; + +http + .createServer((req, res) => { + const options = { + hostname: host, + port: port, + path: req.url, + method: req.method, + headers: req.headers, + }; + + // Forward each incoming request to esbuild + const proxyReq = http.request(options, proxyRes => { + // If esbuild returns "not found" and the path starts from /kupo/ + if (proxyRes.statusCode === 404 && req.url.startsWith("/kupo/")) { + // Connect to Kupo running on port 1442 + const kupoOptions = { + hostname: kupoHost, + port: kupoPort, + path: req.url.slice("/kupo".length), + method: req.method, + headers: req.headers, + }; + // Request the corresponding path + http + .request(kupoOptions, kupoRes => { + // Pipe the response from Kupo back to the client + res.writeHead(kupoRes.statusCode, kupoRes.headers); + kupoRes.pipe(res, { end: true }); + }) + .end(); + } else { + // Otherwise, forward the response from esbuild to the client + res.writeHead(proxyRes.statusCode, proxyRes.headers); + proxyRes.pipe(res, { end: true }); + } + }); + + // Forward the body of the request to esbuild + req.pipe(proxyReq, { end: true }); + }) + .listen(parseInt(process.argv[5])); diff --git a/package-lock.json b/package-lock.json index 209e8241c..2314c4c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", + "utf-8-validate": "^5.0.10", "ws": "8.4.0", "xhr2": "0.2.1" }, @@ -5801,6 +5802,18 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -10711,6 +10724,14 @@ } } }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", diff --git a/package.json b/package.json index ddc811b7e..c627e3f2c 100755 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", + "utf-8-validate": "^5.0.10", "ws": "8.4.0", "xhr2": "0.2.1" }, diff --git a/webpack.config.cjs b/webpack.config.cjs index 61c2e77fb..f492dc070 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -4,10 +4,11 @@ const path = require("path"); const webpack = require("webpack"); const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); +const isBrowser = !!process.env.BROWSER_RUNTIME; + module.exports = env => { - return { + const config = { mode: "development", - experiments: { asyncWebAssembly: false, layers: false, @@ -23,10 +24,10 @@ module.exports = env => { devServer: { static: { - directory: path.join(__dirname, 'dist'), + directory: path.join(__dirname, "dist"), }, client: { - overlay: false + overlay: false, }, port: 4008, proxy: { @@ -47,14 +48,34 @@ module.exports = env => { filename: "index.js", library: { type: "module", - } + }, }, resolve: { // We use node_modules provided by Nix shell via an environment variable modules: [process.env.NODE_PATH], extensions: [".js"], - fallback: { + }, + + plugins: [ + new webpack.DefinePlugin({ + BROWSER_RUNTIME: isBrowser, + }), + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), + ], + }; + + config.target = isBrowser ? "web" : "node18"; + config.node = isBrowser ? {} : { __dirname: true }; + config.resolve.fallback = isBrowser + ? { buffer: require.resolve("buffer/"), http: false, url: false, @@ -69,25 +90,27 @@ module.exports = env => { fs: false, readline: false, child_process: false, - }, - }, + } + : {}; - plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - }), - new NodePolyfillPlugin(), - new webpack.LoaderOptionsPlugin({ - debug: true, - }), + // Preserves console.log calls in NodeJS + // https://stackoverflow.com/a/71024096/17365145 + config.optimization = isBrowser + ? {} + : { + minimize: false, + }; + + if (isBrowser) { + // Provide top-level `Buffer` + config.plugins.push( new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], - }), - // ContextReplacementPlugin is used just to suppress a webpack warning: - // "Critical dependency: the request of a dependency is an expression" - // See https://stackoverflow.com/a/59235546/17365145 - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), - ], - }; + }) + ); + // Provide NodeJS polyfills + config.plugins.push(new NodePolyfillPlugin()); + } + + return config; }; From 080e06bb872564742b9d05652a80d126a36f1189 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 17 Oct 2023 20:41:23 +0400 Subject: [PATCH 370/478] Update the template --- esbuild/bundle.js | 2 +- esbuild/serve.js | 5 +- templates/ctl-scaffold/Makefile | 31 +- templates/ctl-scaffold/esbuild/bundle.js | 2 +- templates/ctl-scaffold/esbuild/config.js | 62 +- templates/ctl-scaffold/esbuild/serve.js | 58 +- templates/ctl-scaffold/flake.lock | 8 +- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 663 +--------------------- templates/ctl-scaffold/package.json | 1 + templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- templates/ctl-scaffold/webpack.config.cjs | 176 +++--- 13 files changed, 244 insertions(+), 774 deletions(-) diff --git a/esbuild/bundle.js b/esbuild/bundle.js index 8b114bcfd..7ff2cc3a3 100755 --- a/esbuild/bundle.js +++ b/esbuild/bundle.js @@ -2,7 +2,7 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; if (process.argv.length < 4) { - throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_FILENAME`; + throw `usage: node bundle.js ENTRY_POINT OUTPUT_FILENAME`; } esbuild.build( diff --git a/esbuild/serve.js b/esbuild/serve.js index 00ad2ffe3..ecfc84a91 100755 --- a/esbuild/serve.js +++ b/esbuild/serve.js @@ -4,7 +4,7 @@ import http from "node:http"; import * as url from "url"; if (process.argv.length < 6) { - throw `usage: nodejs serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; + throw `usage: node serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; } const ctx = await esbuild.context( @@ -23,7 +23,8 @@ const config = { let { host, port } = await ctx.serve(config); -// Proxy Kupo to esbuild server +// Proxy Kupo to esbuild server. This is needed due to CORS + const kupoEndpoint = process.env.KUPO_HOST || "http://localhost:1442"; const kupoHost = url.parse(kupoEndpoint).hostname; const kupoPort = url.parse(kupoEndpoint).port || 80; diff --git a/templates/ctl-scaffold/Makefile b/templates/ctl-scaffold/Makefile index 0e4ba027f..3867c1319 100644 --- a/templates/ctl-scaffold/Makefile +++ b/templates/ctl-scaffold/Makefile @@ -1,15 +1,21 @@ SHELL := bash -.PHONY: esbuild-bundle esbuild-serve .ONESHELL: +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint .SHELLFLAGS := -eu -o pipefail -c - ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') -js-sources := $(shell fd --no-ignore-parent -ejs) -# points to one of the example PureScript modules in examples/ +js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) + +### Bundler setup + +# The main Purescript module ps-entrypoint := Scaffold.Test.E2E.Serve +# The entry point function in the main PureScript module ps-entrypoint-function := main +# Whether to bundle for the browser +browser-runtime := 1 # Use "1" for true and "" for false + preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') serve-port := 4008 @@ -30,30 +36,27 @@ create-html-entrypoint: EOF +delete-bundle-entrypoint: + @rm -f ./dist/entrypoint.js + esbuild-bundle: spago-build create-bundle-entrypoint - @mkdir -p dist/ - @BROWSER_RUNTIME=1 node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + BROWSER_RUNTIME=${browser-runtime} node esbuild/bundle.js ./dist/entrypoint.js dist/index.js + @make delete-bundle-entrypoint esbuild-serve: spago-build create-bundle-entrypoint create-html-entrypoint BROWSER_RUNTIME=1 node esbuild/serve.js ./dist/entrypoint.js dist/index.js dist/ ${serve-port} webpack-bundle: spago-build create-bundle-entrypoint - BROWSER_RUNTIME=1 webpack --mode=production \ + BROWSER_RUNTIME=${browser-runtime} webpack --mode=production \ -o dist/ --env entry=./dist/entrypoint.js + @make delete-bundle-entrypoint webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint BROWSER_RUNTIME=1 webpack-dev-server --progress \ --port ${serve-port} \ -o dist/ --env entry=./dist/entrypoint.js -run-dev: - @${ps-bundle} && BROWSER_RUNTIME=1 webpack-dev-server --progress - -e2e-serve: - spago bundle-module -m ${e2e-entrypoint} --to output.js - BROWSER_RUNTIME=1 webpack-dev-server --progress - run-build: @${ps-bundle} && BROWSER_RUNTIME=1 webpack --mode=production diff --git a/templates/ctl-scaffold/esbuild/bundle.js b/templates/ctl-scaffold/esbuild/bundle.js index 8b114bcfd..7ff2cc3a3 100644 --- a/templates/ctl-scaffold/esbuild/bundle.js +++ b/templates/ctl-scaffold/esbuild/bundle.js @@ -2,7 +2,7 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; if (process.argv.length < 4) { - throw `usage: nodejs bundle.js ENTRY_POINT OUTPUT_FILENAME`; + throw `usage: node bundle.js ENTRY_POINT OUTPUT_FILENAME`; } esbuild.build( diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index c3294b5f8..c1785847a 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -1,27 +1,41 @@ import { wasmLoader } from "esbuild-plugin-wasm"; import { polyfillNode } from "esbuild-plugin-polyfill-node"; -export const buildOptions = ({ entryPoint, outfile }) => ({ - entryPoints: [entryPoint], - outfile: outfile, - define: { - BROWSER_RUNTIME: process.env.BROWSER_RUNTIME, - }, - plugins: [ - polyfillNode({ - polyfills: { - crypto: true, - fs: true, - os: true, - }, - }), - wasmLoader({ - mode: "deferred", - }), - ], - bundle: true, - platform: "browser", - format: "esm", - treeShaking: true, - logLevel: "error", -}); +const isBrowser = !!process.env.BROWSER_RUNTIME; + +export const buildOptions = ({ entryPoint, outfile }) => { + const config = { + entryPoints: [entryPoint], + outfile: outfile, + define: { + BROWSER_RUNTIME: isBrowser ? "true" : '""', + }, + plugins: [ + wasmLoader({ + mode: "deferred", + }), + ], + bundle: true, + platform: isBrowser ? "browser" : "node", + format: "esm", + treeShaking: true, + logLevel: "error", + }; + + // https://esbuild.github.io/api/#packages + if (!isBrowser) { + config.packages = "external"; + } else { + config.plugins.push( + polyfillNode({ + polyfills: { + crypto: true, + fs: true, + os: true, + }, + }) + ); + } + + return config; +}; diff --git a/templates/ctl-scaffold/esbuild/serve.js b/templates/ctl-scaffold/esbuild/serve.js index c079f1cc8..ecfc84a91 100644 --- a/templates/ctl-scaffold/esbuild/serve.js +++ b/templates/ctl-scaffold/esbuild/serve.js @@ -1,8 +1,10 @@ import * as esbuild from "esbuild"; import { buildOptions } from "./config.js"; +import http from "node:http"; +import * as url from "url"; if (process.argv.length < 6) { - throw `usage: nodejs serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; + throw `usage: node serve.js ENTRY_POINT OUTPUT_FILE SERVE_DIR PORT`; } const ctx = await esbuild.context( @@ -13,10 +15,58 @@ const ctx = await esbuild.context( ); const config = { - port: parseInt(process.argv[5]), + // Use the next port for esbuild server, + // we need a port for our proxy (see below). + port: parseInt(process.argv[5]) + 1, servedir: process.argv[4], }; -console.log("serving:", config); +let { host, port } = await ctx.serve(config); -await ctx.serve(config); +// Proxy Kupo to esbuild server. This is needed due to CORS + +const kupoEndpoint = process.env.KUPO_HOST || "http://localhost:1442"; +const kupoHost = url.parse(kupoEndpoint).hostname; +const kupoPort = url.parse(kupoEndpoint).port || 80; + +http + .createServer((req, res) => { + const options = { + hostname: host, + port: port, + path: req.url, + method: req.method, + headers: req.headers, + }; + + // Forward each incoming request to esbuild + const proxyReq = http.request(options, proxyRes => { + // If esbuild returns "not found" and the path starts from /kupo/ + if (proxyRes.statusCode === 404 && req.url.startsWith("/kupo/")) { + // Connect to Kupo running on port 1442 + const kupoOptions = { + hostname: kupoHost, + port: kupoPort, + path: req.url.slice("/kupo".length), + method: req.method, + headers: req.headers, + }; + // Request the corresponding path + http + .request(kupoOptions, kupoRes => { + // Pipe the response from Kupo back to the client + res.writeHead(kupoRes.statusCode, kupoRes.headers); + kupoRes.pipe(res, { end: true }); + }) + .end(); + } else { + // Otherwise, forward the response from esbuild to the client + res.writeHead(proxyRes.statusCode, proxyRes.headers); + proxyRes.pipe(res, { end: true }); + } + }); + + // Forward the body of the request to esbuild + req.pipe(proxyReq, { end: true }); + }) + .listen(parseInt(process.argv[5])); diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 17da8409c..57540eb0b 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -2757,17 +2757,17 @@ ] }, "locked": { - "lastModified": 1697213277, - "narHash": "sha256-vEfiNwLI4ngh1RYfEfHfU4H6PO6DkCBzQMFG8Ynv49Q=", + "lastModified": 1697553030, + "narHash": "sha256-noK4fgwvaV3rlLVPnW2wH3WScYVgJ/M/fc+F1tQ8i40=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "8014c940cf69516c0a00048eec79b2ba95fd94f3", + "rev": "6e4debe87ddbafaa3c77033888f9c998e28cd7ca", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "8014c940cf69516c0a00048eec79b2ba95fd94f3", + "rev": "6e4debe87ddbafaa3c77033888f9c998e28cd7ca", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 482b48648..112806582 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; + rev = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 27ccbe434..414a8c52d 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -28,6 +28,7 @@ "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", + "utf-8-validate": "^5.0.10", "ws": "8.4.0", "xhr2": "0.2.1" }, @@ -36,7 +37,6 @@ "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", - "html-webpack-plugin": "5.5.3", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", @@ -635,12 +635,6 @@ "@types/send": "*" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -1084,15 +1078,6 @@ "ansi-html": "bin/ansi-html" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1359,12 +1344,6 @@ "multicast-dns": "^7.2.5" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1595,16 +1574,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001519", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", @@ -1676,18 +1645,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1708,15 +1665,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -1923,34 +1871,6 @@ "node": "*" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2079,38 +1999,6 @@ "node": ">=6" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/domain-browser": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", @@ -2123,57 +2011,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2947,15 +2784,6 @@ "minimalistic-assert": "^1.0.1" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3025,50 +2853,6 @@ } ] }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -3539,21 +3323,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -3742,16 +3511,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -3856,18 +3615,6 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4027,16 +3774,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -4059,16 +3796,6 @@ "node": ">= 0.8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -4162,16 +3889,6 @@ "node": ">=8" } }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -4423,56 +4140,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -4995,18 +4662,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -5198,12 +4853,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true - }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -5336,6 +4985,18 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -5354,12 +5015,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -6247,12 +5902,6 @@ "@types/send": "*" } }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, "@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -6634,12 +6283,6 @@ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6850,12 +6493,6 @@ "multicast-dns": "^7.2.5" } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -7035,16 +6672,6 @@ "get-intrinsic": "^1.0.2" } }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "caniuse-lite": { "version": "1.0.30001519", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", @@ -7088,15 +6715,6 @@ "safe-buffer": "^5.0.1" } }, - "clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -7114,12 +6732,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -7306,25 +6918,6 @@ "randomfill": "^1.0.3" } }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -7425,76 +7018,12 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, "domain-browser": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", "dev": true }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -8099,12 +7628,6 @@ "minimalistic-assert": "^1.0.1" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -8166,34 +7689,6 @@ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - } - }, - "html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -8517,21 +8012,6 @@ "p-locate": "^4.1.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -8683,16 +8163,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -8766,15 +8236,6 @@ "path-key": "^3.0.0" } }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -8889,16 +8350,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -8918,16 +8369,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -9000,16 +8441,6 @@ "find-up": "^4.0.0" } }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -9210,45 +8641,6 @@ "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - } - } - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -9681,15 +9073,6 @@ "safe-buffer": "~5.2.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -9825,12 +9208,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true - }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -9921,6 +9298,14 @@ } } }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -9939,12 +9324,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 34d1ad9c6..ad17c1b6f 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -44,6 +44,7 @@ "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", + "utf-8-validate": "^5.0.10", "ws": "8.4.0", "xhr2": "0.2.1" }, diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index f18969cfc..4de1cef62 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -342,7 +342,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "8014c940cf69516c0a00048eec79b2ba95fd94f3" + , version = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 4f3b7e2ef..1ebaffc68 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; + version = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "8014c940cf69516c0a00048eec79b2ba95fd94f3"; - sha256 = "1m73xy4z2in181rj1443xqygm0akvzqi27qnslhpiqn808vy4ixw"; + rev = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; + sha256 = "13cb7kadd1fgglzz69v0hmqr4x8zn1nrskxmjkmmss9g1izbi0ly"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/webpack.config.cjs b/templates/ctl-scaffold/webpack.config.cjs index 00c39dead..f492dc070 100644 --- a/templates/ctl-scaffold/webpack.config.cjs +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -4,91 +4,113 @@ const path = require("path"); const webpack = require("webpack"); const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); +const isBrowser = !!process.env.BROWSER_RUNTIME; + module.exports = env => { - return { - mode: "development", + const config = { + mode: "development", + experiments: { + asyncWebAssembly: false, + layers: false, + lazyCompilation: false, + outputModule: true, + syncWebAssembly: true, + topLevelAwait: true, + }, + + devtool: "eval-source-map", - experiments: { - asyncWebAssembly: false, - layers: false, - lazyCompilation: false, - outputModule: true, - syncWebAssembly: true, - topLevelAwait: true, + stats: { errorDetails: true }, + + devServer: { + static: { + directory: path.join(__dirname, "dist"), + }, + client: { + overlay: false, + }, + port: 4008, + proxy: { + "/kupo": { + // `KUPO_HOST` env variable must be set to the base URL of the Kupo + // service, otherwise all requests to Kupo will fail. + target: process.env.KUPO_HOST || "http://localhost:1442", + changeOrigin: true, + pathRewrite: { "^/kupo": "" }, }, + }, + }, - devtool: "eval-source-map", + entry: env.entry, - stats: { errorDetails: true }, + output: { + path: path.resolve(__dirname, "dist"), + filename: "index.js", + library: { + type: "module", + }, + }, - devServer: { - static: { - directory: path.join(__dirname, 'dist'), - }, - client: { - overlay: false - }, - port: 4008, - proxy: { - "/kupo": { - // `KUPO_HOST` env variable must be set to the base URL of the Kupo - // service, otherwise all requests to Kupo will fail. - target: process.env.KUPO_HOST || "http://localhost:1442", - changeOrigin: true, - pathRewrite: { "^/kupo": "" }, - }, - }, - }, + resolve: { + // We use node_modules provided by Nix shell via an environment variable + modules: [process.env.NODE_PATH], + extensions: [".js"], + }, - // we can add more entrypoints as needed - entry: env.entry, + plugins: [ + new webpack.DefinePlugin({ + BROWSER_RUNTIME: isBrowser, + }), + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + // ContextReplacementPlugin is used just to suppress a webpack warning: + // "Critical dependency: the request of a dependency is an expression" + // See https://stackoverflow.com/a/59235546/17365145 + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), + new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), + ], + }; - output: { - path: path.resolve(__dirname, "dist"), - filename: "index.js", - library: { - type: "module", - }, - }, + config.target = isBrowser ? "web" : "node18"; + config.node = isBrowser ? {} : { __dirname: true }; + config.resolve.fallback = isBrowser + ? { + buffer: require.resolve("buffer/"), + http: false, + url: false, + stream: false, + crypto: false, + https: false, + net: false, + tls: false, + zlib: false, + os: false, + path: false, + fs: false, + readline: false, + child_process: false, + } + : {}; - resolve: { - // We use node_modules provided by Nix shell via an environment variable - modules: [process.env.NODE_PATH], - extensions: [".js"], - fallback: { - buffer: require.resolve("buffer/"), - http: false, - url: false, - stream: false, - crypto: false, - https: false, - net: false, - tls: false, - zlib: false, - os: false, - path: false, - fs: false, - readline: false, - child_process: false, - }, - }, + // Preserves console.log calls in NodeJS + // https://stackoverflow.com/a/71024096/17365145 + config.optimization = isBrowser + ? {} + : { + minimize: false, + }; + + if (isBrowser) { + // Provide top-level `Buffer` + config.plugins.push( + new webpack.ProvidePlugin({ + Buffer: ["buffer", "Buffer"], + }) + ); + // Provide NodeJS polyfills + config.plugins.push(new NodePolyfillPlugin()); + } - plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - }), - new NodePolyfillPlugin(), - new webpack.LoaderOptionsPlugin({ - debug: true, - }), - new webpack.ProvidePlugin({ - Buffer: ["buffer", "Buffer"], - }), - // ContextReplacementPlugin is used just to suppress a webpack warning: - // "Critical dependency: the request of a dependency is an expression" - // See https://stackoverflow.com/a/59235546/17365145 - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-browser/), - new webpack.ContextReplacementPlugin(/cardano-serialization-lib-nodejs/), - ], - }; + return config; }; From cc808a76ab8b279a2cf6c1b20b7d6bae7c5fca1f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 17 Oct 2023 20:47:34 +0400 Subject: [PATCH 371/478] Update formatting rules --- scripts/whitespace-check.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/whitespace-check.sh b/scripts/whitespace-check.sh index 5439ba834..2e0f26cfb 100755 --- a/scripts/whitespace-check.sh +++ b/scripts/whitespace-check.sh @@ -18,17 +18,17 @@ examples/ fixtures/scripts/ scripts/ src/ +esbuild/ templates/ctl-scaffold/*.md templates/ctl-scaffold/*.nix templates/ctl-scaffold/*.dhall -templates/ctl-scaffold/index.html -templates/ctl-scaffold/index.js templates/ctl-scaffold/package.json -templates/ctl-scaffold/webpack.config.js +templates/ctl-scaffold/webpack.config.cjs templates/ctl-scaffold/Makefile templates/ctl-scaffold/exe/ templates/ctl-scaffold/src/ templates/ctl-scaffold/test/ +templates/ctl-scaffold/esbuild/ test/ " From b0373b50311bf2f7689879e320222c020c89cc9b Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 18 Oct 2023 13:02:42 +1300 Subject: [PATCH 372/478] Improve docs in Contract.Transaction --- src/Contract/Transaction.purs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index d38df47ea..de1ac9934 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -407,8 +407,7 @@ unUnbalancedTx -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. -- | --- | This is a 'non-throwing' variant of this functionality. If you want a --- | 'throwing' variant, use `balanceTxWithConstraints` instead. +-- | `balanceTxWithConstraints` is a throwing variant. balanceTxWithConstraintsE :: UnbalancedTx -> BalanceTxConstraintsBuilder @@ -419,10 +418,10 @@ balanceTxWithConstraintsE tx = in BalanceTx.balanceTxWithConstraints tx' ix --- | 'Throwing' variant of `balanceTxWithConstraintsE`. +-- | Attempts to balance an `UnbalancedTx` using the specified +-- | balancer constraints. -- | --- | If you want a non-'throwing' variant, use `balanceWithConstraintsE` --- | instead. +-- | 'Throwing' variant of `balanceTxWithConstraintsE`. balanceTxWithConstraints :: UnbalancedTx -> BalanceTxConstraintsBuilder @@ -433,17 +432,17 @@ balanceTxWithConstraints tx bcb = do Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err Right ftx -> pure ftx --- | Same as `balanceTxWithConstraintsE`, but uses the default balancer --- | constraints. +-- | Balance a transaction without providing balancer constraints. -- | --- | This is a 'non-throwing' variant of this functionality. +-- | `balanceTx` is a throwing variant. balanceTxE :: UnbalancedTx -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) balanceTxE = flip balanceTxWithConstraintsE mempty --- | 'Throwing' variant of `balanceTxE`. If you want --- | a non-'throwing' variant, use `balanceTxE` instead. +-- | Balance a transaction without providing balancer constraints. +-- | +-- | `balanceTxE` is a non-throwing version of this function. balanceTx :: UnbalancedTx -> Contract FinalizedTransaction balanceTx utx = do result <- balanceTxE utx From 60f017243585f6b83aab93459794211e47db5be0 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 18 Oct 2023 13:28:03 +1300 Subject: [PATCH 373/478] Remove unnecessary liftedE --- src/Contract/Transaction.purs | 5 ++- src/Internal/Test/KeyDir.purs | 4 +-- src/Internal/Test/UtxoDistribution.purs | 4 +-- test/Plutip/Staking.purs | 42 ++++++++++++------------- test/Utils/DrainWallets.purs | 4 +-- 5 files changed, 29 insertions(+), 30 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index de1ac9934..8946360bc 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -483,8 +483,7 @@ balanceAndLockWithConstraints :: UnbalancedTx /\ BalanceTxConstraintsBuilder -> Contract FinalizedTransaction balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do - balancedTx <- - liftedE $ balanceTxWithConstraintsE unbalancedTx constraints + balancedTx <- balanceTxWithConstraints unbalancedTx constraints void $ withUsedTxOuts $ lockTransactionInputs (unwrap balancedTx) pure balancedTx @@ -551,7 +550,7 @@ submitTxFromConstraintsReturningFee -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } submitTxFromConstraintsReturningFee lookups constraints = do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTxE unbalancedTx + balancedTx <- balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx pure { txHash, txFinalFee: getTxFinalFee balancedSignedTx } diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 03c727959..fa3f2faaf 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -21,7 +21,7 @@ import Contract.Monad import Contract.TextEnvelope (decodeTextEnvelope) import Contract.Transaction ( awaitTxConfirmed - , balanceTxE + , balanceTx , signTransaction , submit , submitTxFromConstraints @@ -387,7 +387,7 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = lookups = unspentOutputs utxos unbalancedTx <- liftedE $ mkUnbalancedTxImpl lookups constraints - balancedTx <- liftedE $ balanceTxE unbalancedTx + balancedTx <- balanceTx unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index a52c265ed..e4ae9b47e 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -26,7 +26,7 @@ import Contract.ScriptLookups as Lookups import Contract.Transaction ( TransactionOutputWithRefScript(TransactionOutputWithRefScript) , awaitTxConfirmed - , balanceTxE + , balanceTx , signTransaction , submit ) @@ -215,7 +215,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints signedTx <- withKeyWallet ourWallet $ - signTransaction =<< liftedE (balanceTxE unbalancedTx) + signTransaction =<< balanceTx unbalancedTx signedTx' <- foldM (\tx { wallet } -> withKeyWallet wallet $ signTransaction tx) signedTx diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index b19bbf5ec..a086aea5d 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -40,7 +40,7 @@ import Contract.Time (getCurrentEpoch) import Contract.Transaction ( Epoch(Epoch) , PoolPubKeyHash(PoolPubKeyHash) - , balanceTxE + , balanceTx , mkPoolPubKeyHash , signTransaction , vrfKeyHashFromBytes @@ -158,7 +158,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -171,7 +171,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog test "PlutusScript" do let @@ -206,7 +206,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -223,7 +223,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog test "NativeScript" do let @@ -256,7 +256,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -269,7 +269,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do let @@ -294,7 +294,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog privateStakeKey <- liftM (error "Failed to get private stake key") $ keyWalletPrivateStakeKey alice @@ -343,7 +343,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list do @@ -370,7 +370,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog let waitEpoch :: Epoch -> Contract Epoch @@ -423,7 +423,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Register stake script do @@ -435,7 +435,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Select a pool poolId <- selectPoolId @@ -451,7 +451,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -481,7 +481,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -538,7 +538,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Alice registers stake script (again, no need to validate it) do @@ -550,7 +550,7 @@ suite = do lookups = mempty ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Bob performs operations with the stake script that require his -- (and only his) signature. @@ -570,7 +570,7 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -600,7 +600,7 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -636,7 +636,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Select a pool ID poolId <- selectPoolId @@ -652,7 +652,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -685,7 +685,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - liftedE (balanceTxE ubTx) >>= signTransaction >>= submitAndLog + balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 983a9a853..02487a641 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -13,7 +13,7 @@ import Contract.Monad (liftedE, runContract) import Contract.ScriptLookups (mkUnbalancedTx, unspentOutputs) import Contract.Transaction ( awaitTxConfirmed - , balanceTxE + , balanceTx , signTransaction , submit ) @@ -121,7 +121,7 @@ run privateKey walletsDir = runContract config do unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints - balancedTx <- liftedE $ balanceTxE unbalancedTx + balancedTx <- balanceTx unbalancedTx balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) From bc6fad48a31afacbc7e0e97ae06459b5cd42fbbf Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 20 Oct 2023 11:44:25 +1300 Subject: [PATCH 374/478] Better error message printing in Contract.UnbalancedTx --- src/Contract/UnbalancedTx.purs | 148 ++++++++++++++++++++++++++------- 1 file changed, 116 insertions(+), 32 deletions(-) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index cbefcd17e..07fa6c27b 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -11,7 +11,20 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) -import Ctl.Internal.Cardano.Types.Value (pprintValue) +import Ctl.Internal.Cardano.Types.NativeScript + ( NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + ) +import Ctl.Internal.Cardano.Types.Value + ( getCurrencySymbol + , pprintValue + ) import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Transaction ( TransactionOutput(TransactionOutput) @@ -73,6 +86,11 @@ import Ctl.Internal.ProcessConstraints.Error ) as X import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X +import Ctl.Internal.Serialization.Address (addressBech32) +import Ctl.Internal.Serialization.Hash + ( ed25519KeyHashToBytes + , scriptHashToBytes + ) import Ctl.Internal.Transaction (explainModifyTxError) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Interval (explainPosixTimeToSlotError) @@ -80,15 +98,24 @@ import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) ) import Ctl.Internal.Types.PlutusData (pprintPlutusData) +import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.ScriptLookups ( ScriptLookups ) +import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) +import Ctl.Internal.Types.TokenName (TokenName, fromTokenName) +import Ctl.Internal.Types.Transaction + ( DataHash(DataHash) + , TransactionInput(TransactionInput) + ) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Data.Either (Either(Left, Right)) import Data.FoldableWithIndex (foldMapWithIndex) import Data.Log.Tag as TagSet import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap) +import Data.String as String +import Data.Tuple.Nested ((/\)) import Effect.Exception (error) -- | Create an `UnbalancedTx` given `ScriptLookups` and @@ -114,9 +141,9 @@ mkUnbalancedTx lookups constraints = explainMkUnbalancedTxError :: MkUnbalancedTxError -> String explainMkUnbalancedTxError = case _ of CannotFindDatum -> "Cannot find datum" - CannotQueryDatum dh -> + CannotQueryDatum (DataHash dh) -> "Querying for datum by datum hash (" - <> show dh + <> byteArrayToHex dh <> ") failed: no datum found" CannotConvertPOSIXTimeRange tr ttsErr -> @@ -133,46 +160,57 @@ explainMkUnbalancedTxError = case _ of <> "Please report this as a bug here: " <> bugTrackerLink CannotGetValidatorHashFromAddress addr -> - "Cannot get a payment validator hash from address " <> show addr + "Cannot get a payment validator hash from address " <> + addressBech32 addr CannotMakeValue _ tn _ -> "Attempted to make an amount with the ADA currency symbol, and non-empty token name " - <> show tn + <> prettyTokenName tn <> ". This is not allowed, as the ADA currency symbol can only be combined with the empty token name." CannotWithdrawRewardsPubKey spkh -> - "Cannot withdraw rewards, as pubkey " <> show spkh <> " is not registered" + "Cannot withdraw rewards, as pubkey " + <> rawBytesToHex (ed25519KeyHashToBytes $ unwrap $ unwrap spkh) + <> + " is not registered" CannotWithdrawRewardsPlutusScript pssv -> - "Cannot withdraw rewards from Plutus staking script " <> show pssv + "Cannot withdraw rewards from Plutus staking script " <> + prettyPlutusScript (unwrap pssv) CannotWithdrawRewardsNativeScript nssv -> - "Cannot withdraw rewards from native staking script " <> show nssv - DatumNotFound hash -> "Datum with hash " <> show hash <> " not found." - DatumWrongHash hash datum -> "Datum " <> show datum + "Cannot withdraw rewards from native staking script " <> + prettyNativeScript 0 (unwrap nssv) + DatumNotFound (DataHash hash) -> "Datum with hash " <> byteArrayToHex hash <> + " not found." + DatumWrongHash (DataHash dh) datum -> "Datum " + <> show datum <> " does not have the hash " - <> show hash + <> byteArrayToHex dh MintingPolicyHashNotCurrencySymbol mph -> - "Minting policy hash " <> show mph <> - " is not a CurrencySymbol. Please check the validity of the byte representation." - MintingPolicyNotFound mp -> "Minting policy " - <> show mp + "Minting policy hash " + <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> + " is not a CurrencySymbol. Please check the validity of the byte representation." + MintingPolicyNotFound mp -> "Minting policy with hash " + <> rawBytesToHex (scriptHashToBytes $ unwrap mp) <> " not found in a set of minting policies" ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" TxOutRefNotFound ti -> - "Could not find a reference input (" - <> show ti - <> - "). It maybe have been consumed, or was never created." + "Could not find a reference input:\n" + <> prettyTxIn ti + <> "\nIt maybe have been consumed, or was never created." TxOutRefWrongType ti -> - "Transaction output is missing an expected datum: " - <> show ti - <> - "\nContext: we were trying to spend a script output." - ValidatorHashNotFound vh -> "Cannot find validator hash: " <> show vh - WrongRefScriptHash msh tout -> - "Output is missing a reference script hash: " - <> show msh - <> "\nOutput: " + "Transaction output is missing an expected datum:\n" + <> prettyTxIn ti + <> "\nContext: we were trying to spend a script output." + ValidatorHashNotFound vh -> "Cannot find validator hash: " <> + rawBytesToHex (scriptHashToBytes $ unwrap vh) + WrongRefScriptHash msh tout -> case msh of + Nothing -> "Output is missing a reference script hash.\nOutput:\n" <> + prettyOutput tout + Just missingHash -> "Output is missing reference script hash " + <> rawBytesToHex (scriptHashToBytes missingHash) + <> ".\nOutput:\n" <> prettyOutput tout CannotSatisfyAny -> "One of the following happened:\n" @@ -180,10 +218,16 @@ explainMkUnbalancedTxError = case _ of <> "2. All alternatives of a 'mustSatisfyAnyOf' have failed." ExpectedPlutusScriptGotNativeScript mph -> - "Expected a Plutus script, but " <> show mph <> "is a native script." - CannotMintZero cs tn -> "Cannot mint zero of token " <> show tn - <> " of currency " - <> show cs + "Expected a Plutus script, but " + <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> + " is a native script." + CannotMintZero cs tn -> + "Cannot mint zero of token " + <> prettyTokenName tn + <> " of currency " + <> + byteArrayToHex (getCurrencySymbol cs) where prettyOutput :: TransactionOutput -> String prettyOutput (TransactionOutput { address, amount, datum, referenceScript }) = @@ -223,6 +267,46 @@ explainMkUnbalancedTxError = case _ of ) <> "\n" + prettyTokenName :: TokenName -> String + prettyTokenName = fromTokenName byteArrayToHex identity + + prettyPlutusScript :: PlutusScript -> String + prettyPlutusScript (PlutusScript (code /\ lang)) = + show lang <> ": " <> byteArrayToHex code + + prettyTxIn :: TransactionInput -> String + prettyTxIn (TransactionInput ti) = + "Id: " + <> byteArrayToHex (unwrap ti.transactionId) + <> "\nIndex: " + <> + show ti.index + + prettyNativeScript :: Int -> NativeScript -> String + prettyNativeScript indent script = + let + newIndent = indent + 1 + in + case script of + ScriptPubkey kh -> rawBytesToHex $ ed25519KeyHashToBytes kh + ScriptAll scripts -> "All of:\n" <> + joinWithIndentNewline newIndent scripts + ScriptAny scripts -> "At least one of:\n" <> + joinWithIndentNewline newIndent scripts + ScriptNOfK n scripts -> "At least " <> show n <> " of:\n" <> + joinWithIndentNewline newIndent scripts + TimelockStart slot -> "Timelock start for slot " <> show (unwrap slot) + TimelockExpiry slot -> "Timelock expiry for slot " <> show (unwrap slot) + + joinWithIndentNewline :: Int -> Array NativeScript -> String + joinWithIndentNewline indent = map (prettyNativeScript indent) >>> + String.joinWith ("\n" <> spaces (2 * indent)) + + spaces :: Int -> String + spaces n + | n <= 0 = "" + | otherwise = " " <> spaces (n - 1) + -- Helpers bugTrackerLink :: String From 5ec5097cf92450b2a3b926996235029cb2c351ae Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 20 Oct 2023 13:42:11 +1300 Subject: [PATCH 375/478] Use correct mkUnbalancedTx, don't re-export from two places --- CHANGELOG.md | 3 ++ examples/AdditionalUtxos.purs | 9 ++--- examples/BalanceTxConstraints.purs | 6 ++-- examples/ContractTestUtils.purs | 5 +-- examples/KeyWallet/SignMultiple.purs | 7 ++-- examples/PlutusV2/ReferenceInputs.purs | 4 +-- examples/SatisfiesAnyOf.purs | 5 +-- examples/SignMultiple.purs | 6 ++-- examples/TxChaining.purs | 7 ++-- src/Contract/ScriptLookups.purs | 27 +------------- src/Contract/Transaction.purs | 5 ++- src/Internal/Test/UtxoDistribution.purs | 5 +-- test/BalanceTx/Time.purs | 10 +++--- test/Plutip/Contract.purs | 47 ++++++++++++------------- test/Plutip/Staking.purs | 43 +++++++++++----------- test/Utils/DrainWallets.purs | 7 ++-- 16 files changed, 89 insertions(+), 107 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9776ef002..c30cb8d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -108,6 +108,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - UTxO lists and combined input/output/mint/fee values are now being pretty-printed instead of logged using `Show` instance (in the balancer) ([#1531](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1531)) - `mkUnbalancedTx`, `balanceTx` and `balanceTxWithConstraints` now throw instead of returning in `Either` ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- `mkUnbalancedTx` isn't exported from `Contract.ScriptLookups` anymore; get it + from `Contract.UnbalancedTx` instead. + ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545)) ### Fixed diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 1eb079782..37ef2cdb2 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -10,9 +10,9 @@ import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, liftedE, runContract) +import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) -import Contract.ScriptLookups (ScriptLookups, UnbalancedTx, mkUnbalancedTx) +import Contract.ScriptLookups (ScriptLookups, UnbalancedTx) import Contract.ScriptLookups (datum, unspentOutputs, validator) as Lookups import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.Sync (withoutSync) @@ -36,6 +36,7 @@ import Contract.TxConstraints , mustSpendPubKeyOutput , mustSpendScriptOutput ) as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (UtxoMap) import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value @@ -89,7 +90,7 @@ payToValidator vhash = do lookups :: ScriptLookups lookups = Lookups.datum datum - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints pure { unbalancedTx, datum } spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit @@ -123,7 +124,7 @@ spendFromValidator validator additionalUtxos datum = do balancerConstraints = BalancerConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTxWithConstraints unbalancedTx balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index ad636d39f..2a512d684 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -16,7 +16,7 @@ import Contract.BalanceTxConstraints , mustUseUtxosAtAddress ) as BalanceTxConstraints import Contract.Log (logInfo') -import Contract.Monad (Contract, liftedE, liftedM) +import Contract.Monad (Contract, liftedM) import Contract.ScriptLookups as Lookups import Contract.Test.Assert ( ContractAssertionFailure(CustomFailure) @@ -36,6 +36,7 @@ import Contract.Transaction , submit ) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) import Contract.Value (singleton, valueOf) as Value @@ -155,8 +156,7 @@ contract (ContractParams p) = do <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref void $ runChecks checks $ lift do - unbalancedTx <- - liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTxWithConstraints unbalancedTx balanceTxConstraints diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 822f151ea..f14bd1b5d 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -23,7 +23,7 @@ import Contract.AuxiliaryData (setTxMetadata) import Contract.Hashing (datumHash) import Contract.Log (logInfo') import Contract.Metadata (Cip25Metadata) -import Contract.Monad (Contract, liftContractM, liftedE, liftedM) +import Contract.Monad (Contract, liftContractM, liftedM) import Contract.PlutusData (Datum, OutputDatum(OutputDatumHash)) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy) @@ -54,6 +54,7 @@ import Contract.Transaction ) import Contract.TxConstraints (DatumPresence(DatumWitness)) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) import Contract.Value (lovelaceValueOf, singleton) as Value @@ -159,7 +160,7 @@ mkContract p = do lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy p.mintingPolicy - unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints unbalancedTxWithMetadata <- setTxMetadata unbalancedTx p.txMetadata balancedTx <- balanceTx unbalancedTxWithMetadata balancedSignedTx <- signTransaction balancedTx diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 6d186f24f..fc998ca5a 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -3,7 +3,7 @@ module Ctl.Examples.KeyWallet.SignMultiple where import Contract.Prelude import Contract.Log (logInfo') -import Contract.Monad (Contract, liftedE, throwContractError) +import Contract.Monad (Contract, throwContractError) import Contract.ScriptLookups as Lookups import Contract.Transaction ( BalancedSignedTransaction @@ -14,6 +14,7 @@ import Contract.Transaction , withBalancedTxs ) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (lovelaceValueOf) as Value import Control.Monad.Reader (asks) import Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract (runKeyWalletContract_) @@ -41,8 +42,8 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx0 <- mkUnbalancedTx lookups constraints + unbalancedTx1 <- mkUnbalancedTx lookups constraints txIds <- withBalancedTxs [ unbalancedTx0, unbalancedTx1 ] $ \balancedTxs -> do locked <- getLockedInputs diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 9c967f3e8..85af9a486 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -8,7 +8,6 @@ import Contract.Monad ( Contract , launchAff_ , liftContractM - , liftedE , liftedM , runContract ) @@ -31,6 +30,7 @@ import Contract.Transaction , submit ) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (lovelaceValueOf) as Value import Contract.Wallet ( getWalletUtxos @@ -76,7 +76,7 @@ contract = do lookups = mempty void $ runChecks checks $ lift do - unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balancedSignedTx <- signTransaction =<< balanceTx unbalancedTx txHash <- submit balancedSignedTx logInfo' $ "Tx ID: " <> show txHash diff --git a/examples/SatisfiesAnyOf.purs b/examples/SatisfiesAnyOf.purs index 5763ba240..706effe0e 100644 --- a/examples/SatisfiesAnyOf.purs +++ b/examples/SatisfiesAnyOf.purs @@ -13,7 +13,7 @@ import Contract.Prelude import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Hashing (datumHash) as Hashing import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, liftedE, runContract) +import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData ( Datum(Datum) , PlutusData(Integer) @@ -22,6 +22,7 @@ import Contract.PlutusData import Contract.ScriptLookups as Lookups import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Data.BigInt as BigInt main :: Effect Unit @@ -51,4 +52,4 @@ testMustSatisfyAnyOf = do lookups :: Lookups.ScriptLookups lookups = mempty - void $ liftedE $ Lookups.mkUnbalancedTx lookups constraints + void $ mkUnbalancedTx lookups constraints diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 60e776ddc..64cd72c5e 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -10,7 +10,6 @@ import Contract.Log (logInfo', logWarn') import Contract.Monad ( Contract , launchAff_ - , liftedE , liftedM , runContract , throwContractError @@ -27,6 +26,7 @@ import Contract.Transaction , withBalancedTxs ) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (leq) import Contract.Value as Value import Contract.Wallet @@ -72,8 +72,8 @@ contract = do lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx0 <- mkUnbalancedTx lookups constraints + unbalancedTx1 <- mkUnbalancedTx lookups constraints txIds <- withBalancedTxs [ unbalancedTx0, unbalancedTx1 ] $ \balancedTxs -> do locked <- getLockedInputs diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index f2326461f..76507b9ad 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -16,7 +16,7 @@ import Contract.BalanceTxConstraints ) as BalanceTxConstraints import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, liftedE, liftedM, runContract) +import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups import Contract.Transaction ( awaitTxConfirmed @@ -28,6 +28,7 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) @@ -52,7 +53,7 @@ contract = do lookups0 :: Lookups.ScriptLookups lookups0 = mempty - unbalancedTx0 <- liftedE $ Lookups.mkUnbalancedTx lookups0 constraints + unbalancedTx0 <- mkUnbalancedTx lookups0 constraints withBalancedTx unbalancedTx0 \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 @@ -68,7 +69,7 @@ contract = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups1 constraints + unbalancedTx1 <- mkUnbalancedTx lookups1 constraints balancedTx1 <- balanceTxWithConstraints unbalancedTx1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index e889f15e6..48091e0d8 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -1,15 +1,7 @@ -- | A module for creating off-chain script lookups, and an unbalanced -- | transaction. -module Contract.ScriptLookups - ( mkUnbalancedTx - , module X - ) where +module Contract.ScriptLookups (module X) where -import Contract.Monad (Contract) -import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError ( CannotFindDatum @@ -37,11 +29,7 @@ import Ctl.Internal.ProcessConstraints.Error , CannotMintZero ) ) as X -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X -import Ctl.Internal.Types.ScriptLookups - ( ScriptLookups - ) import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , datum @@ -56,16 +44,3 @@ import Ctl.Internal.Types.ScriptLookups , validator , validatorM ) as X -import Ctl.Internal.Types.TxConstraints (TxConstraints) -import Data.Either (Either) - --- | Create an `UnbalancedTx` given `ScriptLookups` and --- | `TxConstraints`. You will probably want to use this version as it returns --- | datums and redeemers that require attaching (and maybe reindexing) in --- | a separate call. In particular, this should be called in conjuction with --- | `balanceTx` and `signTransaction`. -mkUnbalancedTx - :: ScriptLookups - -> TxConstraints - -> Contract (Either MkUnbalancedTxError UnbalancedTx) -mkUnbalancedTx = PC.mkUnbalancedTxImpl diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 8946360bc..5d18826d3 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -41,12 +41,11 @@ import Contract.Metadata (GeneralTransactionMetadata) import Contract.Monad ( Contract , liftContractM - , liftedE , liftedM , runContractInEnv ) -import Contract.ScriptLookups (mkUnbalancedTx) import Contract.TxConstraints (TxConstraints) +import Contract.UnbalancedTx (mkUnbalancedTx) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) @@ -549,7 +548,7 @@ submitTxFromConstraintsReturningFee -> TxConstraints -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } submitTxFromConstraintsReturningFee lookups constraints = do - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index e4ae9b47e..95d2fc39a 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -20,7 +20,7 @@ import Contract.Address , getNetworkId , payPubKeyHashEnterpriseAddress ) -import Contract.Monad (Contract, liftContractM, liftedE, liftedM) +import Contract.Monad (Contract, liftContractM, liftedM) import Contract.Prelude (foldM, foldMap, null) import Contract.ScriptLookups as Lookups import Contract.Transaction @@ -31,6 +31,7 @@ import Contract.Transaction , submit ) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Wallet ( getWalletAddresses @@ -212,7 +213,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do constraints :: Constraints.TxConstraints constraints = Constraints.mustBeSignedBy ourPkh <> foldMap constraintsForWallet walletsInfo - unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints signedTx <- withKeyWallet ourWallet $ signTransaction =<< balanceTx unbalancedTx diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index c910f46b0..b4556db2c 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -7,7 +7,6 @@ import Contract.Monad (Contract, runContract) import Contract.ScriptLookups ( ScriptLookups , UnbalancedTx - , mkUnbalancedTx ) import Contract.Time ( POSIXTime @@ -24,6 +23,7 @@ import Contract.Time , to ) import Contract.TxConstraints (mustValidateIn) +import Contract.UnbalancedTx (mkUnbalancedTxE) import Control.Monad.Except (throwError) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (BigNum) @@ -82,7 +82,7 @@ mkTestFromSingleInterval :: Interval POSIXTime -> Contract Unit mkTestFromSingleInterval interval = do let constraint = mustValidateIn interval - mutx <- mkUnbalancedTx emptyLookup constraint + mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left e -> fail $ show e Right utx -> @@ -94,7 +94,7 @@ testEmptyInterval :: Contract Unit testEmptyInterval = do let constraint = mustValidateIn never - mutx <- mkUnbalancedTx emptyLookup constraint + mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left _ -> pure unit Right utx -> fail $ "Empty interval must fail : " <> show utx @@ -107,7 +107,7 @@ testEmptyMultipleIntervals = do , mkFiniteInterval (now + mkPosixTime "3000") (now + mkPosixTime "4000") ] constraint = foldMap mustValidateIn intervals - mutx <- mkUnbalancedTx emptyLookup constraint + mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left _ -> pure unit Right utx -> fail $ "Empty interval must fail : " <> show utx @@ -117,7 +117,7 @@ mkTestMultipleInterval mkTestMultipleInterval intervals expected = do let constraint = foldMap mustValidateIn intervals - mutx <- mkUnbalancedTx emptyLookup constraint + mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left e -> fail $ show e Right utx -> diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 6393aaf8b..5180238c5 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -25,7 +25,7 @@ import Contract.Metadata , TransactionMetadatum(Text) , TransactionMetadatumLabel(TransactionMetadatumLabel) ) -import Contract.Monad (Contract, liftContractE, liftContractM, liftedE, liftedM) +import Contract.Monad (Contract, liftContractE, liftContractM, liftedM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( Datum(Datum) @@ -84,6 +84,7 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx, mkUnbalancedTxE) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value @@ -238,7 +239,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints res <- ( balanceTxWithConstraintsE ubTx (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) @@ -454,7 +455,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx txId <- submit bsTx awaitTxConfirmed txId @@ -492,7 +493,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints tx <- signTransaction =<< balanceTx ubTx let signWithWallet txToSign wallet = @@ -551,7 +552,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx txId <- submit bsTx awaitTxConfirmed txId @@ -579,7 +580,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints -- Bob signs the tx tx <- signTransaction =<< balanceTx ubTx let @@ -613,7 +614,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx @@ -698,7 +699,7 @@ suite = do $ BigInt.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups' constraints' + ubTx <- mkUnbalancedTx lookups' constraints' result <- balanceTxE ubTx result `shouldSatisfy` isLeft @@ -783,7 +784,7 @@ suite = do $ BigInt.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups' constraints' + ubTx <- mkUnbalancedTx lookups' constraints' result <- balanceTxE ubTx result `shouldSatisfy` isLeft @@ -940,7 +941,7 @@ suite = do givenMetadata = GeneralTransactionMetadata $ Map.fromFoldable [ TransactionMetadatumLabel (BigInt.fromInt 8) /\ Text "foo" ] - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints ubTx' <- setGeneralTxMetadata ubTx givenMetadata bsTx <- signTransaction =<< balanceTx ubTx' txId <- submit bsTx @@ -973,7 +974,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp1 <> Lookups.mintingPolicy mp2 - result <- Lookups.mkUnbalancedTx lookups constraints + result <- mkUnbalancedTxE lookups constraints result `shouldSatisfy` isLeft test "Minting multiple tokens in a single transaction" do @@ -1011,7 +1012,7 @@ suite = do <> Lookups.mintingPolicy mp2 <> Lookups.mintingPolicy mp3 - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx @@ -1201,7 +1202,7 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balanceTxWithConstraintsE unbalancedTx balanceTxConstraints let @@ -1419,7 +1420,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx submit bsTx >>= awaitTxConfirmed @@ -1612,8 +1613,7 @@ suite = do lookups0 :: Lookups.ScriptLookups lookups0 = mempty - unbalancedTx0 <- - liftedE $ Lookups.mkUnbalancedTx lookups0 constraints0 + unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 withBalancedTx unbalancedTx0 \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 @@ -1637,8 +1637,7 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- - liftedE $ Lookups.mkUnbalancedTx lookups1 constraints1 + unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 balancedTx1 <- balanceTxWithConstraints unbalancedTx1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -1734,8 +1733,7 @@ suite = do lookups0 :: Lookups.ScriptLookups lookups0 = Lookups.mintingPolicy mp <> datumLookup - unbalancedTx0 <- - liftedE $ Lookups.mkUnbalancedTx lookups0 constraints0 + unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 withBalancedTx unbalancedTx0 \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 @@ -1760,8 +1758,7 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- - liftedE $ Lookups.mkUnbalancedTx lookups1 constraints1 + unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 balancedTx1 <- balanceTxWithConstraints unbalancedTx1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -1993,8 +1990,8 @@ signMultipleContract = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx1 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - ubTx2 <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx1 <- mkUnbalancedTx lookups constraints + ubTx2 <- mkUnbalancedTx lookups constraints withBalancedTxs [ ubTx1, ubTx2 ] $ \txs -> do locked <- getLockedInputs @@ -2021,6 +2018,6 @@ pkh2PkhContract pkh stakePkh = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx submitAndLog bsTx diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index a086aea5d..8041260c9 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -13,7 +13,7 @@ import Contract.Backend.Ogmios (getPoolParameters) import Contract.Credential (Credential(ScriptCredential)) import Contract.Hashing (plutusScriptStakeValidatorHash, publicKeyHash) import Contract.Log (logInfo') -import Contract.Monad (Contract, liftedE, liftedM) +import Contract.Monad (Contract, liftedM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.Prelude (liftM) @@ -63,6 +63,7 @@ import Contract.TxConstraints , mustWithdrawStakePlutusScript , mustWithdrawStakePubKey ) +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (lovelaceValueOf) import Contract.Wallet ( ownPaymentPubKeyHashes @@ -157,7 +158,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key @@ -170,7 +171,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog test "PlutusScript" do @@ -205,7 +206,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key @@ -222,7 +223,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog test "NativeScript" do @@ -255,7 +256,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Deregister stake key @@ -268,7 +269,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do @@ -293,7 +294,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog privateStakeKey <- liftM (error "Failed to get private stake key") $ @@ -342,7 +343,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list @@ -369,7 +370,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog let @@ -422,7 +423,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Register stake script @@ -434,7 +435,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Select a pool @@ -450,7 +451,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -480,7 +481,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. @@ -537,7 +538,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Alice registers stake script (again, no need to validate it) @@ -549,7 +550,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Bob performs operations with the stake script that require his @@ -569,7 +570,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -599,7 +600,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. @@ -635,7 +636,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Select a pool ID @@ -651,7 +652,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -684,7 +685,7 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog -- Check rewards. diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 02487a641..6e61639c4 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -9,8 +9,8 @@ import Contract.Config , mkCtlBackendParams , testnetConfig ) -import Contract.Monad (liftedE, runContract) -import Contract.ScriptLookups (mkUnbalancedTx, unspentOutputs) +import Contract.Monad (runContract) +import Contract.ScriptLookups (unspentOutputs) import Contract.Transaction ( awaitTxConfirmed , balanceTx @@ -18,6 +18,7 @@ import Contract.Transaction , submit ) import Contract.TxConstraints (mustBeSignedBy, mustSpendPubKeyOutput) +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Wallet ( getWalletAddresses @@ -119,7 +120,7 @@ run privateKey walletsDir = runContract config do <> foldMap (_.pkh >>> mustBeSignedBy) usedWallets lookups = unspentOutputs utxos - unbalancedTx <- liftedE $ mkUnbalancedTx lookups constraints + unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTx unbalancedTx balancedSignedTx <- Array.foldM From 5f1b830e02334a80634d1f412a6ae073e18d7f0c Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Fri, 20 Oct 2023 13:44:55 +1300 Subject: [PATCH 376/478] Fix MLabs link to pass CI --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e96a722be..311629b19 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ CTL is being developed by MLabs. The following companies/funds have contributed - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) - [Catalyst Fund9](https://cardano.ideascale.com/c/idea/420791) - [Catalyst Fund10](https://cardano.ideascale.com/c/idea/101478) -- [MLabs](https://mlabs.city/) +- [MLabs](https://www.mlabs.city/) - [Indigo Protocol](https://indigoprotocol.io/) - [Equine](https://www.equine.gg/) - [Liqwid Labs](https://liqwid.finance/) From e9ac26889c8ed92312823370a8288a5de407a929 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 20 Oct 2023 13:26:31 +0200 Subject: [PATCH 377/478] Easy ogmios updates --- flake.nix | 1 - src/Internal/QueryM/JsonRpc2.purs | 4 +- src/Internal/QueryM/Ogmios.purs | 157 +++++++++--------------------- 3 files changed, 47 insertions(+), 115 deletions(-) diff --git a/flake.nix b/flake.nix index 4c872a1a2..0dd006ff4 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,6 @@ nixpkgs.follows = "nixpkgs"; iohk-nix.follows = "iohk-nix"; haskell-nix.follows = "haskell-nix"; - hackage-nix.follows = "hackage-nix"; cardano-node.follows = "cardano-node"; ogmios-src.follows = "ogmios"; }; diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 7cc03725b..8695c838f 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -52,7 +52,7 @@ mkJsonRpc2Request service method = do $ Record.merge { id } $ Record.merge service method --- | Structure of all json wsp websocket responses +-- | Structure of all json rpc websocket responses -- described in: https://ogmios.dev/getting-started/basics/ type JsonRpc2Response (a :: Type) = { jsonrpc :: String @@ -68,7 +68,7 @@ newtype JsonRpc2Call :: Type -> Type -> Type newtype JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call (i -> Effect { body :: Aeson, id :: String }) --- | Creates a "jsonwsp call" which ties together request input and response output types +-- | Creates a "jsonrpc call" which ties together request input and response output types -- | along with a way to create a request object. mkCallType :: forall (a :: Type) (i :: Type) (o :: Type) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index da61e0a14..2d71b186e 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -14,11 +14,12 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosBlockHeaderHash(OgmiosBlockHeaderHash) , OgmiosTxOut , OgmiosTxOutRef + , OgmiosProtocolParameters(OgmiosProtocolParameters) , PParamRational(PParamRational) , PoolParameters , PoolParametersR(PoolParametersR) - , OgmiosProtocolParameters(OgmiosProtocolParameters) , RedeemerPointer + , ReleasedMempool(ReleasedMempool) , ScriptFailure ( ExtraRedeemers , MissingRequiredDatums @@ -71,72 +72,14 @@ module Ctl.Internal.QueryM.Ogmios import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch, MissingValue, AtKey) - , caseAesonArray - , caseAesonObject - , caseAesonString - , decodeAeson - , encodeAeson - , fromArray - , getField - , getFieldOptional - , getFieldOptional' - , isNull - , isString - , stringifyAeson - , toString - , (.:) - , (.:?) - ) +import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(TypeMismatch, MissingValue, AtKey, UnexpectedValue), caseAesonArray, caseAesonObject, caseAesonString, decodeAeson, encodeAeson, fromArray, getField, getFieldOptional, getFieldOptional', isNull, isString, stringifyAeson, toString, (.:), (.:?)) import Control.Alt ((<|>)) import Control.Alternative (guard) import Control.Monad.Reader.Trans (ReaderT(ReaderT), runReaderT) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( CostModel(CostModel) - , Costmdls(Costmdls) - , ExUnitPrices - , ExUnits - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , PoolPubKeyHash - , Relay(MultiHostName, SingleHostAddr, SingleHostName) - , SubCoin - , URL(URL) - , UnitInterval - ) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , CurrencySymbol - , NonAdaAsset - , Value - , flattenNonAdaValue - , getCurrencySymbol - , getLovelace - , getNonAdaAsset - , mkCurrencySymbol - , mkNonAdaAsset - , mkValue - , valueToCoin - ) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Ctl.Internal.Cardano.Types.Transaction (CostModel(CostModel), Costmdls(Costmdls), ExUnitPrices, ExUnits, Ipv4(Ipv4), Ipv6(Ipv6), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), PoolPubKeyHash, Relay(MultiHostName, SingleHostAddr, SingleHostName), SubCoin, URL(URL), UnitInterval) +import Ctl.Internal.Cardano.Types.Value (Coin(Coin), CurrencySymbol, NonAdaAsset, Value, flattenNonAdaValue, getCurrencySymbol, getLovelace, getNonAdaAsset, mkCurrencySymbol, mkNonAdaAsset, mkValue, valueToCoin) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, mkCallType) @@ -144,46 +87,24 @@ import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ed25519KeyHashFromBytes) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.ByteArray - ( ByteArray - , byteArrayFromIntArray - , byteArrayToHex - , hexToByteArray - ) +import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayFromIntArray, byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries - ( EraSummaries(EraSummaries) - , EraSummary(EraSummary) - , EraSummaryParameters(EraSummaryParameters) - ) +import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries), EraSummary(EraSummary), EraSummaryParameters(EraSummaryParameters)) import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromString) as Natural -import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) - , CostModelV1 - , CostModelV2 - , ProtocolParameters(ProtocolParameters) - , convertPlutusV1CostModel - , convertPlutusV2CostModel - ) +import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte), CostModelV1, CostModelV2, ProtocolParameters(ProtocolParameters), convertPlutusV1CostModel, convertPlutusV2CostModel) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , PlutusScript(PlutusScript) - ) -import Ctl.Internal.Types.SystemStart - ( SystemStart - , sysStartFromOgmiosTimestamp - , sysStartToOgmiosTimestamp - ) +import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2), PlutusScript(PlutusScript)) +import Ctl.Internal.Types.SystemStart (SystemStart, sysStartFromOgmiosTimestamp, sysStartToOgmiosTimestamp) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) +import Data.Argonaut.Encode.Encoders (encodeString) import Data.Array (catMaybes, index) import Data.Array (head, length, replicate) as Array import Data.Bifunctor (lmap) @@ -198,14 +119,7 @@ import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -import Data.String - ( Pattern(Pattern) - , Replacement(Replacement) - , indexOf - , split - , splitAt - , uncons - ) +import Data.String (Pattern(Pattern), Replacement(Replacement), indexOf, split, splitAt, uncons) import Data.String (replaceAll) as String import Data.String.Common (split) as String import Data.String.Utils as StringUtils @@ -278,9 +192,9 @@ type OgmiosAddress = String submitTxCall :: JsonRpc2Call (TxHash /\ CborBytes) SubmitTxR submitTxCall = mkOgmiosCallType { method: "submitTransaction" - , params: \(_ /\ cbor) -> - { transaction: { cbor: cborBytesToHex cbor } - } + , params: \(_ /\ cbor) -> + { transaction: { cbor: cborBytesToHex cbor } + } } -- | Evaluates the execution units of scripts present in a given transaction, @@ -289,7 +203,7 @@ evaluateTxCall :: JsonRpc2Call (CborBytes /\ AdditionalUtxoSet) TxEvaluationR evaluateTxCall = mkOgmiosCallType { method: "evaluateTransaction" , params: \(cbor /\ utxoqr) -> - { transaction: { cbor: cborBytesToHex cbor } + { transaction: { cbor: cborBytesToHex cbor } , additionalUtxo: utxoqr } } @@ -306,7 +220,7 @@ acquireMempoolSnapshotCall = mempoolSnapshotHasTxCall :: MempoolSnapshotAcquired -> JsonRpc2Call TxHash Boolean mempoolSnapshotHasTxCall _ = mkOgmiosCallType - { method: "hasTransacation" + { method: "hasTransaction" , params: { id: _ } } @@ -323,7 +237,7 @@ mempoolSnpashotSizeAndCapacityCall _ = mkOgmiosCallTypeNoArgs "sizeOfMempool" releaseMempoolCall - :: MempoolSnapshotAcquired -> JsonRpc2Call Unit String + :: MempoolSnapshotAcquired -> JsonRpc2Call Unit ReleasedMempool releaseMempoolCall _ = mkOgmiosCallTypeNoArgs "releaseMempool" @@ -338,8 +252,8 @@ instance Show MempoolSnapshotAcquired where instance DecodeAeson MempoolSnapshotAcquired where decodeAeson = - map AwaitAcquired <<< aesonObject - (flip getField "AwaitAcquired" >=> flip getField "slot") + -- todo: ignoring "acquired": "mempool" + map AwaitAcquired <<< aesonObject (flip getField "slot") -- | The acquired snapshot’s size (in bytes), number of transactions, and capacity -- | (in bytes). @@ -377,9 +291,25 @@ instance Show MempoolTransaction where instance DecodeAeson MempoolTransaction where decodeAeson = aesonObject \o -> do id <- o .: "id" - raw <- o .: "raw" + raw <- o .: "cbor" pure $ MempoolTransaction { id, raw } +data ReleasedMempool = ReleasedMempool + +derive instance Generic ReleasedMempool _ + +instance Show ReleasedMempool where + show = genericShow + +instance DecodeAeson ReleasedMempool where + decodeAeson = aesonObject \o -> do + released <- o .: "released" + flip aesonString released $ \s -> + if s == "mempool" then + pure $ ReleasedMempool + else + Left (UnexpectedValue $ encodeString s) + -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- @@ -479,8 +409,10 @@ instance DecodeAeson OgmiosEraSummaries where :: Object Aeson -> Either JsonDecodeError EraSummaryParameters decodeEraSummaryParameters o = do epochLength <- getField o "epochLength" - slotLength <- wrap <$> ((*) slotLengthFactor <$> - (flip getField "seconds" =<< getField o "slotLength")) + slotLength <- wrap <$> + ( (*) slotLengthFactor <$> + (flip getField "seconds" =<< getField o "slotLength") + ) safeZone <- fromMaybe zero <$> getField o "safeZone" pure $ wrap { epochLength, slotLength, safeZone } @@ -700,7 +632,8 @@ instance DecodeAeson TxEvaluationResult where TxEvaluationResult <<< Map.fromFoldable <$> traverse decodeRdmrPtrExUnitsItem array where - decodeRdmrPtrExUnitsItem :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) + decodeRdmrPtrExUnitsItem + :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) decodeRdmrPtrExUnitsItem elem = do (redeemerPtrRaw /\ exUnitsAeson) :: String /\ Aeson <- decodeAeson elem redeemerPtr <- decodeRedeemerPointer redeemerPtrRaw From 20b7388f3dabfc2313f1bd8aabc00b724f887676 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 22 Oct 2023 17:12:52 +0200 Subject: [PATCH 378/478] Update ogmios stake pools query --- src/Internal/QueryM.purs | 29 +++-- src/Internal/QueryM/Ogmios.purs | 197 ++++++++++++++++++++++++-------- src/Internal/QueryM/Pools.purs | 70 ++++++------ test/Ogmios/Aeson.purs | 4 +- 4 files changed, 197 insertions(+), 103 deletions(-) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 12f9d7cdd..be0c95ab0 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -78,7 +78,6 @@ import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.JsWebSocket ( JsWebSocket @@ -124,8 +123,9 @@ import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , DelegationsAndRewardsR , OgmiosProtocolParameters - , PoolIdsR , PoolParametersR + , ReleasedMempool + , StakePoolsQueryArgument , TxHash , aesonObject ) @@ -371,15 +371,15 @@ mempoolSnapshotSizeAndCapacityAff -> Aff Ogmios.MempoolSizeAndCapacity mempoolSnapshotSizeAndCapacityAff ogmiosWs logger ms = mkOgmiosRequestAff ogmiosWs logger - (Ogmios.mempoolSnpashotSizeAndCapacityCall ms) - _.mempoolSizeAndCapcity + (Ogmios.mempoolSnapshotSizeAndCapacityCall ms) + _.mempoolSizeAndCapacity -- todo: typo unit releaseMempoolAff :: OgmiosWebSocket -> Logger -> Ogmios.MempoolSnapshotAcquired - -> Aff String + -> Aff ReleasedMempool releaseMempoolAff ogmiosWs logger ms = mkOgmiosRequestAff ogmiosWs logger (Ogmios.releaseMempoolCall ms) _.releaseMempool @@ -417,13 +417,13 @@ mempoolSnapshotSizeAndCapacity -> QueryM Ogmios.MempoolSizeAndCapacity mempoolSnapshotSizeAndCapacity ms = mkOgmiosRequest - (Ogmios.mempoolSnpashotSizeAndCapacityCall ms) - _.mempoolSizeAndCapcity + (Ogmios.mempoolSnapshotSizeAndCapacityCall ms) + _.mempoolSizeAndCapacity unit releaseMempool :: Ogmios.MempoolSnapshotAcquired - -> QueryM String + -> QueryM ReleasedMempool releaseMempool ms = mkOgmiosRequest (Ogmios.releaseMempoolCall ms) @@ -678,13 +678,11 @@ mkOgmiosWebSocketLens logger isTxConfirmed = do mkListenerSet dispatcher pendingRequests , mempoolNextTx: mkListenerSet dispatcher pendingRequests - , mempoolSizeAndCapcity: + , mempoolSizeAndCapacity: mkListenerSet dispatcher pendingRequests , submit: mkSubmitTxListenerSet dispatcher pendingSubmitTxRequests - , poolIds: - mkListenerSet dispatcher pendingRequests - , poolParameters: + , stakePools: mkListenerSet dispatcher pendingRequests , delegationsAndRewards: mkListenerSet dispatcher pendingRequests @@ -721,12 +719,11 @@ type OgmiosListeners = , currentEpoch :: ListenerSet Unit Ogmios.CurrentEpoch , systemStart :: ListenerSet Unit Ogmios.OgmiosSystemStart , acquireMempool :: ListenerSet Unit Ogmios.MempoolSnapshotAcquired - , releaseMempool :: ListenerSet Unit String + , releaseMempool :: ListenerSet Unit ReleasedMempool , mempoolHasTx :: ListenerSet TxHash Boolean , mempoolNextTx :: ListenerSet Unit (Maybe Ogmios.MempoolTransaction) - , mempoolSizeAndCapcity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity - , poolIds :: ListenerSet Unit PoolIdsR - , poolParameters :: ListenerSet (Array PoolPubKeyHash) PoolParametersR + , mempoolSizeAndCapacity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity + , stakePools :: ListenerSet StakePoolsQueryArgument PoolParametersR , delegationsAndRewards :: ListenerSet (Array String) DelegationsAndRewardsR } diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2d71b186e..f6a339ce8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -39,10 +39,10 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosTxIn , OgmiosTxId , SubmitTxR(SubmitTxSuccess, SubmitFail) + , StakePoolsQueryArgument(StakePoolsQueryArgument) , TxEvaluationFailure(UnparsedError, ScriptFailures) , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) - , PoolIdsR , TxHash , UtxoQR(UtxoQR) , UtxoQueryResult @@ -53,7 +53,7 @@ module Ctl.Internal.QueryM.Ogmios , queryStakePoolsCall , mempoolSnapshotHasTxCall , mempoolSnapshotNextTxCall - , mempoolSnpashotSizeAndCapacityCall + , mempoolSnapshotSizeAndCapacityCall , mkOgmiosCallType , mkOgmiosCallTypeNoArgs , queryChainTipCall @@ -61,7 +61,6 @@ module Ctl.Internal.QueryM.Ogmios , queryEraSummariesCall , queryProtocolParametersCall , querySystemStartCall - , queryPoolParameters , queryDelegationsAndRewards , releaseMempoolCall , submitTxCall @@ -72,14 +71,73 @@ module Ctl.Internal.QueryM.Ogmios import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(TypeMismatch, MissingValue, AtKey, UnexpectedValue), caseAesonArray, caseAesonObject, caseAesonString, decodeAeson, encodeAeson, fromArray, getField, getFieldOptional, getFieldOptional', isNull, isString, stringifyAeson, toString, (.:), (.:?)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError(TypeMismatch, UnexpectedValue) + , caseAesonArray + , caseAesonObject + , caseAesonString + , decodeAeson + , encodeAeson + , fromArray + , fromString + , getField + , getFieldOptional + , getFieldOptional' + , isNull + , isString + , stringifyAeson + , toString + , (.:) + , (.:?) + ) import Control.Alt ((<|>)) import Control.Alternative (guard) import Control.Monad.Reader.Trans (ReaderT(ReaderT), runReaderT) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction (CostModel(CostModel), Costmdls(Costmdls), ExUnitPrices, ExUnits, Ipv4(Ipv4), Ipv6(Ipv6), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), PoolPubKeyHash, Relay(MultiHostName, SingleHostAddr, SingleHostName), SubCoin, URL(URL), UnitInterval) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), CurrencySymbol, NonAdaAsset, Value, flattenNonAdaValue, getCurrencySymbol, getLovelace, getNonAdaAsset, mkCurrencySymbol, mkNonAdaAsset, mkValue, valueToCoin) +import Ctl.Internal.Cardano.Types.NativeScript + ( NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + ) +import Ctl.Internal.Cardano.Types.ScriptRef + ( ScriptRef(NativeScriptRef, PlutusScriptRef) + ) +import Ctl.Internal.Cardano.Types.Transaction + ( CostModel(CostModel) + , Costmdls(Costmdls) + , ExUnitPrices + , ExUnits + , Ipv4(Ipv4) + , Ipv6(Ipv6) + , PoolMetadata(PoolMetadata) + , PoolMetadataHash(PoolMetadataHash) + , PoolPubKeyHash + , Relay(MultiHostName, SingleHostAddr, SingleHostName) + , SubCoin + , URL(URL) + , UnitInterval + ) +import Ctl.Internal.Cardano.Types.Value + ( Coin(Coin) + , CurrencySymbol + , NonAdaAsset + , Value + , flattenNonAdaValue + , getCurrencySymbol + , getLovelace + , getNonAdaAsset + , mkCurrencySymbol + , mkNonAdaAsset + , mkValue + , valueToCoin + ) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, mkCallType) @@ -87,21 +145,40 @@ import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ed25519KeyHashFromBytes) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayFromIntArray, byteArrayToHex, hexToByteArray) +import Ctl.Internal.Types.ByteArray + ( ByteArray + , byteArrayFromIntArray + , byteArrayToHex + , hexToByteArray + ) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries), EraSummary(EraSummary), EraSummaryParameters(EraSummaryParameters)) +import Ctl.Internal.Types.EraSummaries + ( EraSummaries(EraSummaries) + , EraSummary(EraSummary) + , EraSummaryParameters(EraSummaryParameters) + ) import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromString) as Natural -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte), CostModelV1, CostModelV2, ProtocolParameters(ProtocolParameters), convertPlutusV1CostModel, convertPlutusV2CostModel) +import Ctl.Internal.Types.ProtocolParameters + ( CoinsPerUtxoUnit(CoinsPerUtxoByte) + , ProtocolParameters(ProtocolParameters) + ) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2), PlutusScript(PlutusScript)) -import Ctl.Internal.Types.SystemStart (SystemStart, sysStartFromOgmiosTimestamp, sysStartToOgmiosTimestamp) +import Ctl.Internal.Types.Scripts + ( Language(PlutusV1, PlutusV2) + , PlutusScript(PlutusScript) + ) +import Ctl.Internal.Types.SystemStart + ( SystemStart + , sysStartFromOgmiosTimestamp + , sysStartToOgmiosTimestamp + ) import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders (encodeString) @@ -119,12 +196,19 @@ import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -import Data.String (Pattern(Pattern), Replacement(Replacement), indexOf, split, splitAt, uncons) +import Data.String + ( Pattern(Pattern) + , Replacement(Replacement) + , indexOf + , split + , splitAt + , uncons + ) import Data.String (replaceAll) as String import Data.String.Common (split) as String import Data.String.Utils as StringUtils import Data.Traversable (for, sequence, traverse) -import Data.Tuple (Tuple(Tuple), snd, uncurry) +import Data.Tuple (Tuple(Tuple), uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Data.UInt as UInt @@ -161,16 +245,34 @@ queryProtocolParametersCall = mkOgmiosCallTypeNoArgs queryChainTipCall :: JsonRpc2Call Unit ChainTipQR queryChainTipCall = mkOgmiosCallTypeNoArgs "queryNetwork/tip" -queryStakePoolsCall :: JsonRpc2Call Unit PoolIdsR -queryStakePoolsCall = mkOgmiosCallTypeNoArgs "queryLedgerState/stakePools" - -queryPoolParameters :: JsonRpc2Call (Array PoolPubKeyHash) PoolParametersR -queryPoolParameters = mkOgmiosCallType - { method: "Query" - , params: \params -> { query: { poolParameters: params } } +-- | Queries Ogmios for pool parameters of all pools or of the provided pools. +queryStakePoolsCall :: JsonRpc2Call StakePoolsQueryArgument PoolParametersR +queryStakePoolsCall = mkOgmiosCallType + { method: "queryLedgerState/stakePools" + , params: identity } -queryDelegationsAndRewards :: JsonRpc2Call (Array String) DelegationsAndRewardsR +-- TODO: move below, when settled. keep one query to easy in listeners. unwrap to maybe if/when params changes to Maybe (->) + +-- Nothing queries all pools, otherwise query selected pools. +newtype StakePoolsQueryArgument = StakePoolsQueryArgument + (Maybe (Array PoolPubKeyHash)) + +derive instance Newtype StakePoolsQueryArgument _ + +instance EncodeAeson StakePoolsQueryArgument where + encodeAeson a = do + maybe + (encodeAeson {}) + ( \poolPkhs -> encodeAeson + { stakePools: map (\pool -> { id: pool }) poolPkhs } + ) + (unwrap a) + +-- ---------------------- + +queryDelegationsAndRewards + :: JsonRpc2Call (Array String) DelegationsAndRewardsR -- todo: whats string? git blame line below to restore queryDelegationsAndRewards = mkOgmiosCallType { method: "rewardAccountSummaries" , params: \skhs -> @@ -231,9 +333,9 @@ mempoolSnapshotNextTxCall _ = mkOgmiosCallType , params: const { fields: "all" } } -mempoolSnpashotSizeAndCapacityCall +mempoolSnapshotSizeAndCapacityCall :: MempoolSnapshotAcquired -> JsonRpc2Call Unit MempoolSizeAndCapacity -mempoolSnpashotSizeAndCapacityCall _ = +mempoolSnapshotSizeAndCapacityCall _ = mkOgmiosCallTypeNoArgs "sizeOfMempool" releaseMempoolCall @@ -241,6 +343,23 @@ releaseMempoolCall releaseMempoolCall _ = mkOgmiosCallTypeNoArgs "releaseMempool" +-------------------------------------------------------------------------------- +-- Helpers +-------------------------------------------------------------------------------- + +mkOgmiosCallTypeNoArgs + :: forall (o :: Type). String -> JsonRpc2Call Unit o +mkOgmiosCallTypeNoArgs method = + mkOgmiosCallType { method, params: const {} } + +mkOgmiosCallType + :: forall (a :: Type) (i :: Type) (o :: Type) + . EncodeAeson (JsonRpc2Request a) + => { method :: String, params :: i -> a } + -> JsonRpc2Call i o +mkOgmiosCallType = + mkCallType { jsonrpc: "2.0" } + -------------------------------------------------------------------------------- -- Local Tx Monitor Query Response & Parsing -------------------------------------------------------------------------------- @@ -310,23 +429,6 @@ instance DecodeAeson ReleasedMempool where else Left (UnexpectedValue $ encodeString s) --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - -mkOgmiosCallTypeNoArgs - :: forall (o :: Type). String -> JsonRpc2Call Unit o -mkOgmiosCallTypeNoArgs method = - mkOgmiosCallType { method, params: const {} } - -mkOgmiosCallType - :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonRpc2Request a) - => { method :: String, params :: i -> a } - -> JsonRpc2Call i o -mkOgmiosCallType = - mkCallType { jsonrpc: "2.0" } - ---------------- TX SUBMISSION QUERY RESPONSE & PARSING data SubmitTxR @@ -477,7 +579,7 @@ type PoolParameters = , poolMetadata :: Maybe PoolMetadata } -newtype PoolParametersR = PoolParametersR (Map String PoolParameters) +newtype PoolParametersR = PoolParametersR (Map PoolPubKeyHash PoolParameters) derive instance Newtype PoolParametersR _ derive instance Generic PoolParametersR _ @@ -489,13 +591,14 @@ instance DecodeAeson PoolParametersR where decodeAeson aeson = do obj :: Object (Object Aeson) <- decodeAeson aeson kvs <- for (Object.toUnfoldable obj :: Array _) \(Tuple k objParams) -> do + poolPkh <- decodeAeson $ fromString k poolParams <- decodePoolParameters objParams - pure $ k /\ poolParams + pure $ poolPkh /\ poolParams pure $ PoolParametersR $ Map.fromFoldable kvs decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters decodePoolParameters objParams = do - vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrf" + vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrfVerificationKeyHash" pledge <- objParams .: "pledge" cost <- objParams .: "cost" margin <- decodeUnitInterval =<< objParams .: "margin" @@ -969,10 +1072,6 @@ type ChainPoint = , id :: OgmiosBlockHeaderHash } ----------------- POOL ID RESPONSE - -type PoolIdsR = Array PoolPubKeyHash - ---------------- ADDITIONAL UTXO MAP REQUEST newtype AdditionalUtxoSet = AdditionalUtxoSet OgmiosUtxoMap diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index b8b398976..b1c71cfba 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -1,6 +1,7 @@ module Ctl.Internal.QueryM.Pools ( getPoolIds , getPoolParameters + , getPoolsParameters , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards , module X @@ -8,61 +9,60 @@ module Ctl.Internal.QueryM.Pools import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( PoolPubKeyHash - , PoolRegistrationParams - ) +import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash, PoolRegistrationParams) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.QueryM (QueryM, mkOgmiosRequest) -import Ctl.Internal.QueryM.Ogmios - ( DelegationsAndRewardsR(DelegationsAndRewardsR) - , PoolParametersR(PoolParametersR) - ) +import Ctl.Internal.QueryM.Ogmios (DelegationsAndRewardsR(DelegationsAndRewardsR), PoolParameters) import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashToBech32 - , ed25519KeyHashToBech32Unsafe - , ed25519KeyHashToBytes - , scriptHashToBech32Unsafe - , scriptHashToBytes - ) +import Ctl.Internal.Serialization.Hash (ed25519KeyHashToBech32Unsafe, ed25519KeyHashToBytes, scriptHashToBech32Unsafe, scriptHashToBytes) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Data.Map (Map) import Data.Map as Map -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap, wrap) +import Data.Tuple (fst) import Effect.Exception (error) import Record.Builder (build, merge) +-- | Get pool parameters of all pools or of the provided pools. +getStakePools + :: (Maybe (Array PoolPubKeyHash)) + -> QueryM (Map PoolPubKeyHash PoolParameters) +getStakePools selected = unwrap <$> + mkOgmiosRequest Ogmios.queryStakePoolsCall + _.stakePools + (wrap selected) + getPoolIds :: QueryM (Array PoolPubKeyHash) -getPoolIds = mkOgmiosRequest Ogmios.queryStakePoolsCall - _.poolIds - unit +getPoolIds = (Map.toUnfoldableUnordered >>> map fst) <$> + getStakePools Nothing --- TODO: batched variant getPoolParameters :: PoolPubKeyHash -> QueryM PoolRegistrationParams getPoolParameters poolPubKeyHash = do - PoolParametersR params <- mkOgmiosRequest Ogmios.queryPoolParameters - _.poolParameters - [ poolPubKeyHash ] - poolIdStr <- - liftM (error "Unable to encode pool pubkey hash to bech32") - $ ed25519KeyHashToBech32 "pool" - $ unwrap - $ unwrap poolPubKeyHash + params <- getPoolsParameters [ poolPubKeyHash ] res <- liftM (error "Unable to find pool ID in the response") $ Map.lookup - poolIdStr + poolPubKeyHash params - pure $ build - ( merge - { operator: poolPubKeyHash - , poolOwners: res.poolOwners <#> wrap >>> wrap - } + pure res + +getPoolsParameters + :: Array PoolPubKeyHash -> QueryM (Map PoolPubKeyHash PoolRegistrationParams) +getPoolsParameters poolPubKeyHashes = do + response <- getStakePools (Just poolPubKeyHashes) + pure $ Map.mapMaybeWithKey + ( \poolPkh params -> Just $ build + ( merge + { operator: poolPkh + , poolOwners: params.poolOwners <#> wrap >>> wrap + } + ) + params ) - res + response getValidatorHashDelegationsAndRewards :: StakeValidatorHash -> QueryM (Maybe DelegationsAndRewards) diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 7d6ca074a..cfd646067 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -158,9 +158,7 @@ suite = group "Ogmios Aeson tests" do "eraSummaries" -> handle (Proxy :: _ O.OgmiosEraSummaries) "currentProtocolParameters" -> handle (Proxy :: _ O.OgmiosProtocolParameters) - "poolIds" -> handle - (Proxy :: _ O.PoolIdsR) - "poolParameters" -> handle + "stakePools" -> handle (Proxy :: _ O.PoolParametersR) "delegationsAndRewards" -> handle (Proxy :: _ O.DelegationsAndRewardsR) From 076c9e2253f1fce75b01860180f928fae9c3b783 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 22 Oct 2023 22:27:29 +0200 Subject: [PATCH 379/478] Update query encoding/decoding to ogmios 6 --- src/Internal/Cardano/Types/NativeScript.purs | 4 +- src/Internal/QueryM/Ogmios.purs | 99 ++++++++++++-------- src/Internal/QueryM/Pools.purs | 17 +++- 3 files changed, 74 insertions(+), 46 deletions(-) diff --git a/src/Internal/Cardano/Types/NativeScript.purs b/src/Internal/Cardano/Types/NativeScript.purs index 4f39e1c74..a09e14f1b 100644 --- a/src/Internal/Cardano/Types/NativeScript.purs +++ b/src/Internal/Cardano/Types/NativeScript.purs @@ -41,8 +41,8 @@ data NativeScript | ScriptAll (Array NativeScript) | ScriptAny (Array NativeScript) | ScriptNOfK Int (Array NativeScript) - | TimelockStart Slot - | TimelockExpiry Slot + | TimelockStart Slot -- spend after + | TimelockExpiry Slot -- spend before derive instance Eq NativeScript derive instance Generic NativeScript _ diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index f6a339ce8..74c38ec59 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -136,6 +136,7 @@ import Ctl.Internal.Cardano.Types.Value , mkCurrencySymbol , mkNonAdaAsset , mkValue + , unwrapNonAdaAsset , valueToCoin ) import Ctl.Internal.Deserialization.FromBytes (fromBytes) @@ -216,6 +217,7 @@ import Foreign.Object (Object) import Foreign.Object (singleton, toUnfoldable) as ForeignObject import Foreign.Object as Object import Partial.Unsafe (unsafePartial) +import Record.Builder (build, merge) import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) @@ -274,7 +276,7 @@ instance EncodeAeson StakePoolsQueryArgument where queryDelegationsAndRewards :: JsonRpc2Call (Array String) DelegationsAndRewardsR -- todo: whats string? git blame line below to restore queryDelegationsAndRewards = mkOgmiosCallType - { method: "rewardAccountSummaries" + { method: "queryLedgerState/rewardAccountSummaries" , params: \skhs -> { query: { delegationsAndRewards: skhs @@ -390,10 +392,10 @@ instance Show MempoolSizeAndCapacity where instance DecodeAeson MempoolSizeAndCapacity where decodeAeson = aesonObject \o -> do - capacity <- getField o "capacity" + capacity <- getField o "maxCapacity" currentSize <- getField o "currentSize" - numberOfTxs <- getField o "numberOfTxs" - + numberOfTxs <- (flip getField "transactions") >=> (flip getField "count") $ + o pure $ wrap { capacity, currentSize, numberOfTxs } newtype MempoolTransaction = MempoolTransaction @@ -1092,60 +1094,66 @@ instance EncodeAeson AdditionalUtxoSet where encode :: (OgmiosTxOutRef /\ OgmiosTxOut) -> Aeson encode (inp /\ out) = encodeAeson $ - { "txId": inp.txId + { "transaction": { "id": inp.txId } , "index": inp.index + , "address": out.address + , "datumHash": out.datumHash + , "datum": out.datum + , "script": encodeScriptRef <$> out.script + , "value": encodeValue out.value } - /\ - { "address": out.address - , "datumHash": out.datumHash - , "datum": out.datum - , "script": encodeScriptRef <$> out.script - , "value": - { "coins": out.value # valueToCoin # getLovelace - , "assets": out.value # getNonAdaAsset # encodeNonAdaAsset - } - } encodeNativeScript :: NativeScript -> Aeson - encodeNativeScript (ScriptPubkey s) = encodeAeson s + encodeNativeScript (ScriptPubkey s) = + encodeAeson { "clause": "signature", "from": encodeAeson s } encodeNativeScript (ScriptAll ss) = - encodeAeson { "all": encodeNativeScript <$> ss } + encodeAeson { "clause": "all", "from": encodeNativeScript <$> ss } encodeNativeScript (ScriptAny ss) = - encodeAeson { "any": encodeNativeScript <$> ss } + encodeAeson { "clause": "any", "from": encodeNativeScript <$> ss } encodeNativeScript (ScriptNOfK n ss) = - encodeAeson $ - ForeignObject.singleton - (BigInt.toString $ BigInt.fromInt n) - (encodeNativeScript <$> ss) - encodeNativeScript (TimelockStart (Slot n)) = encodeAeson { "startsAt": n } - encodeNativeScript (TimelockExpiry (Slot n)) = encodeAeson - { "expiresAt": n } + encodeAeson + { "clause": "some" + , "atLeast": BigInt.fromInt n + , "from": encodeNativeScript <$> ss + } + encodeNativeScript (TimelockStart (Slot n)) = + encodeAeson { "clause": "after", "slot": n } + encodeNativeScript (TimelockExpiry (Slot n)) = + encodeAeson { "clause": "before", "slot": n } encodeScriptRef :: ScriptRef -> Aeson encodeScriptRef (NativeScriptRef s) = - encodeAeson { "native": encodeNativeScript s } + encodeAeson $ + { "language": "native", "cbor": s, "json": (encodeNativeScript s) } encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV1))) = - encodeAeson { "plutus:v1": s } + encodeAeson { "language": "plutus:v1", "cbor": byteArrayToHex s } encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV2))) = - encodeAeson { "plutus:v2": s } + encodeAeson { "language": "plutus:v2", "cbor": byteArrayToHex s } - encodeNonAdaAsset :: NonAdaAsset -> Aeson - encodeNonAdaAsset assets = encodeMap $ - foldl - (\m' (cs /\ tn /\ n) -> Map.insert (createKey cs tn) n m') - Map.empty - (flattenNonAdaValue assets) + encodeValue :: Value -> Aeson + encodeValue value = encodeMap $ Map.union adaPart nonAdaPart where - createKey cs tn = - if tn' == mempty then csHex else csHex <> "." <> tnHex - where - tn' = getTokenName tn - cs' = getCurrencySymbol cs - csHex = byteArrayToHex cs' - tnHex = byteArrayToHex tn' + adaPart = Map.fromFoldable + [ ( "ada" /\ + ( Map.fromFoldable + [ ("lovelace" /\ (value # valueToCoin # getLovelace)) ] + ) + ) + ] + nonAdaPart = mapKeys (byteArrayToHex <<< getCurrencySymbol) + $ map (mapKeys (byteArrayToHex <<< getTokenName)) + $ unwrapNonAdaAsset + $ getNonAdaAsset value + + mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a + mapKeys f = (Map.toUnfoldable :: Map k1 a -> Array (k1 /\ a)) >>> foldl + (\m' (k /\ v) -> Map.insert (f k) v m') + Map.empty ---------------- UTXO QUERY RESPONSE & PARSING +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! +-- -- the outer result type for Utxo queries, newtyped so that it can have -- appropriate instances to work with `parseJsonRpc2Response` -- | Ogmios response for Utxo Query @@ -1166,6 +1174,7 @@ type OgmiosTxOutRef = , index :: UInt.UInt } +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! parseUtxoQueryResult :: Aeson -> Either JsonDecodeError UtxoQueryResult parseUtxoQueryResult = aesonArray $ foldl insertFunc (Right Map.empty) where @@ -1225,6 +1234,8 @@ type OgmiosTxOut = , script :: Maybe ScriptRef } +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! +-- -- Ogmios currently supplies the Raw OgmiosAddress in addr1 format, rather than the -- cardano-serialization-lib 'OgmiosAddress' type, perhaps this information can be -- extracted. @@ -1239,6 +1250,8 @@ parseTxOut = aesonObject $ \o -> do Just script -> Just <$> parseScript script pure { address, value, datumHash, datum, script } +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! +-- parseScript :: Object Aeson -> Either JsonDecodeError ScriptRef parseScript script = case Array.head $ ForeignObject.toUnfoldable script of @@ -1308,6 +1321,8 @@ parseScript script = _ -> Left scriptTypeMismatch +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! +-- -- parses the `Value` type parseValue :: Object Aeson -> Either JsonDecodeError Value parseValue outer = do @@ -1320,6 +1335,8 @@ parseValue outer = do newtype Assets = Assets (Map CurrencySymbol (Map TokenName BigInt)) +-- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! +-- instance DecodeAeson Assets where decodeAeson j = do jsonRpc2Assets :: Array (String /\ BigInt) <- diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index b1c71cfba..8f17cb1f3 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -9,12 +9,23 @@ module Ctl.Internal.QueryM.Pools import Prelude -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash, PoolRegistrationParams) +import Ctl.Internal.Cardano.Types.Transaction + ( PoolPubKeyHash + , PoolRegistrationParams + ) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.QueryM (QueryM, mkOgmiosRequest) -import Ctl.Internal.QueryM.Ogmios (DelegationsAndRewardsR(DelegationsAndRewardsR), PoolParameters) +import Ctl.Internal.QueryM.Ogmios + ( DelegationsAndRewardsR(DelegationsAndRewardsR) + , PoolParameters + ) import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization.Hash (ed25519KeyHashToBech32Unsafe, ed25519KeyHashToBytes, scriptHashToBech32Unsafe, scriptHashToBytes) +import Ctl.Internal.Serialization.Hash + ( ed25519KeyHashToBech32Unsafe + , ed25519KeyHashToBytes + , scriptHashToBech32Unsafe + , scriptHashToBytes + ) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X From 7ae9a11b063f9b3d4dfaacb33a6e72eb1e762478 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 22 Oct 2023 23:00:55 +0200 Subject: [PATCH 380/478] Remove unused ogmios UTXO query types --- src/Internal/QueryM/Ogmios.purs | 254 +++----------------------------- 1 file changed, 23 insertions(+), 231 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 74c38ec59..06b3011b2 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -44,8 +44,6 @@ module Ctl.Internal.QueryM.Ogmios , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) , TxHash - , UtxoQR(UtxoQR) - , UtxoQueryResult , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -84,12 +82,8 @@ import Aeson , fromArray , fromString , getField - , getFieldOptional - , getFieldOptional' , isNull - , isString , stringifyAeson - , toString , (.:) , (.:?) ) @@ -126,16 +120,10 @@ import Ctl.Internal.Cardano.Types.Transaction ) import Ctl.Internal.Cardano.Types.Value ( Coin(Coin) - , CurrencySymbol - , NonAdaAsset , Value - , flattenNonAdaValue , getCurrencySymbol , getLovelace , getNonAdaAsset - , mkCurrencySymbol - , mkNonAdaAsset - , mkValue , unwrapNonAdaAsset , valueToCoin ) @@ -143,7 +131,7 @@ import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, mkCallType) import Ctl.Internal.Serialization.Address (Slot(Slot)) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ed25519KeyHashFromBytes) +import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum import Ctl.Internal.Types.ByteArray @@ -180,11 +168,11 @@ import Ctl.Internal.Types.SystemStart , sysStartFromOgmiosTimestamp , sysStartToOgmiosTimestamp ) -import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) +import Ctl.Internal.Types.TokenName (getTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders (encodeString) -import Data.Array (catMaybes, index) -import Data.Array (head, length, replicate) as Array +import Data.Array (catMaybes) +import Data.Array (length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt @@ -194,30 +182,21 @@ import Data.Generic.Rep (class Generic) import Data.Int (fromString) as Int import Data.Map (Map) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -import Data.String - ( Pattern(Pattern) - , Replacement(Replacement) - , indexOf - , split - , splitAt - , uncons - ) +import Data.String (Pattern(Pattern), Replacement(Replacement), split) import Data.String (replaceAll) as String import Data.String.Common (split) as String import Data.String.Utils as StringUtils -import Data.Traversable (for, sequence, traverse) -import Data.Tuple (Tuple(Tuple), uncurry) +import Data.Traversable (for, traverse) +import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Data.UInt as UInt import Foreign.Object (Object) -import Foreign.Object (singleton, toUnfoldable) as ForeignObject +import Foreign.Object (toUnfoldable) as ForeignObject import Foreign.Object as Object -import Partial.Unsafe (unsafePartial) -import Record.Builder (build, merge) import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) @@ -1082,6 +1061,20 @@ derive instance Newtype AdditionalUtxoSet _ derive newtype instance Show AdditionalUtxoSet +-- Ogmios tx input +type OgmiosTxOutRef = + { txId :: String + , index :: UInt.UInt + } + +type OgmiosTxOut = + { address :: OgmiosAddress + , value :: Value + , datumHash :: Maybe String + , datum :: Maybe String + , script :: Maybe ScriptRef + } + type OgmiosUtxoMap = Map OgmiosTxOutRef OgmiosTxOut instance EncodeAeson AdditionalUtxoSet where @@ -1150,51 +1143,6 @@ instance EncodeAeson AdditionalUtxoSet where (\m' (k /\ v) -> Map.insert (f k) v m') Map.empty ----------------- UTXO QUERY RESPONSE & PARSING - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! --- --- the outer result type for Utxo queries, newtyped so that it can have --- appropriate instances to work with `parseJsonRpc2Response` --- | Ogmios response for Utxo Query -newtype UtxoQR = UtxoQR UtxoQueryResult - -derive instance Newtype UtxoQR _ -derive newtype instance Show UtxoQR - -instance DecodeAeson UtxoQR where - decodeAeson = map UtxoQR <<< parseUtxoQueryResult - --- the inner type for Utxo Queries -type UtxoQueryResult = Map.Map OgmiosTxOutRef OgmiosTxOut - --- Ogmios tx input -type OgmiosTxOutRef = - { txId :: String - , index :: UInt.UInt - } - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! -parseUtxoQueryResult :: Aeson -> Either JsonDecodeError UtxoQueryResult -parseUtxoQueryResult = aesonArray $ foldl insertFunc (Right Map.empty) - where - insertFunc - :: Either JsonDecodeError UtxoQueryResult - -> Aeson - -> Either JsonDecodeError UtxoQueryResult - insertFunc acc = aesonArray inner - where - inner :: Array Aeson -> Either JsonDecodeError UtxoQueryResult - inner innerArray = do - txOutRefJson <- - note (TypeMismatch "missing 0th element, expected an OgmiosTxOutRef") $ - index innerArray 0 - txOutJson <- note (TypeMismatch "missing 1st element, expected a TxOut") $ - index innerArray 1 - txOutRef <- parseTxOutRef txOutRefJson - txOut <- parseTxOut txOutJson - Map.insert txOutRef txOut <$> acc - -- helper for assuming we get an object aesonObject :: forall (a :: Type) @@ -1218,159 +1166,3 @@ aesonString -> Aeson -> Either JsonDecodeError a aesonString = caseAesonString (Left (TypeMismatch "Expected String")) - --- parser for txOutRef -parseTxOutRef :: Aeson -> Either JsonDecodeError OgmiosTxOutRef -parseTxOutRef = aesonObject $ \o -> do - txId <- getField o "txId" - index <- getField o "index" - pure { txId, index } - -type OgmiosTxOut = - { address :: OgmiosAddress - , value :: Value - , datumHash :: Maybe String - , datum :: Maybe String - , script :: Maybe ScriptRef - } - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! --- --- Ogmios currently supplies the Raw OgmiosAddress in addr1 format, rather than the --- cardano-serialization-lib 'OgmiosAddress' type, perhaps this information can be --- extracted. -parseTxOut :: Aeson -> Either JsonDecodeError OgmiosTxOut -parseTxOut = aesonObject $ \o -> do - address <- getField o "address" - value <- parseValue o - datumHash <- getFieldOptional' o "datumHash" - datum <- getFieldOptional' o "datum" - script <- getFieldOptional' o "script" >>= case _ of - Nothing -> pure Nothing - Just script -> Just <$> parseScript script - pure { address, value, datumHash, datum, script } - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! --- -parseScript :: Object Aeson -> Either JsonDecodeError ScriptRef -parseScript script = - case Array.head $ ForeignObject.toUnfoldable script of - Just ("plutus:v1" /\ plutusScript) -> - parsePlutusScriptWithLang PlutusV1 plutusScript - - Just ("plutus:v2" /\ plutusScript) -> - parsePlutusScriptWithLang PlutusV2 plutusScript - - Just ("native" /\ nativeScript) -> - NativeScriptRef <$> parseNativeScript nativeScript - - _ -> - Left $ TypeMismatch $ - "Expected native or Plutus script, got: " <> show script - where - parsePlutusScriptWithLang - :: Language -> Aeson -> Either JsonDecodeError ScriptRef - parsePlutusScriptWithLang lang aeson = do - let - scriptTypeMismatch :: JsonDecodeError - scriptTypeMismatch = TypeMismatch - $ "Expected hex-encoded Plutus script, got: " <> show aeson - - aeson # caseAesonString (Left scriptTypeMismatch) - \hexEncodedScript -> do - scriptBytes <- note scriptTypeMismatch (hexToByteArray hexEncodedScript) - pure $ PlutusScriptRef $ PlutusScript (scriptBytes /\ lang) - - parseNativeScript :: Aeson -> Either JsonDecodeError NativeScript - parseNativeScript aeson - | isString aeson = do - let - pubKeyHashTypeMismatch :: JsonDecodeError - pubKeyHashTypeMismatch = TypeMismatch - $ "Expected hex-encoded pub key hash, got: " <> show aeson - - pubKeyHashHex :: String - pubKeyHashHex = unsafePartial fromJust $ toString aeson - - ScriptPubkey <$> note pubKeyHashTypeMismatch - (ed25519KeyHashFromBytes =<< hexToByteArray pubKeyHashHex) - - | otherwise = aeson # aesonObject \obj -> do - let - scriptTypeMismatch :: JsonDecodeError - scriptTypeMismatch = TypeMismatch - $ "Expected native script, got: " <> show aeson - - case (Array.head $ ForeignObject.toUnfoldable obj) of - Just ("any" /\ scripts) -> - scripts # aesonArray (map ScriptAny <<< traverse parseNativeScript) - - Just ("all" /\ scripts) -> - scripts # aesonArray (map ScriptAll <<< traverse parseNativeScript) - - Just ("expiresAt" /\ slot) -> - TimelockExpiry <$> decodeAeson slot - - Just ("startsAt" /\ slot) -> - TimelockStart <$> decodeAeson slot - - Just (atLeast /\ scripts) -> do - n <- note scriptTypeMismatch (Int.fromString atLeast) - scripts # aesonArray - (map (ScriptNOfK n) <<< traverse parseNativeScript) - - _ -> Left scriptTypeMismatch - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! --- --- parses the `Value` type -parseValue :: Object Aeson -> Either JsonDecodeError Value -parseValue outer = do - o <- getField outer "value" - coins <- getField o "coins" - <|> Left (TypeMismatch "Expected 'coins' to be an Int or a BigInt") - Assets assetsMap <- fromMaybe (Assets Map.empty) - <$> getFieldOptional o "assets" - pure $ mkValue (wrap coins) (mkNonAdaAsset assetsMap) - -newtype Assets = Assets (Map CurrencySymbol (Map TokenName BigInt)) - --- [OGMIOS 5.6] Refers to Ogmios 5.6 datatype! --- -instance DecodeAeson Assets where - decodeAeson j = do - jsonRpc2Assets :: Array (String /\ BigInt) <- - ForeignObject.toUnfoldable <$> decodeAeson j - Assets <<< Map.fromFoldableWith (Map.unionWith (+)) <$> sequence - (uncurry decodeAsset <$> jsonRpc2Assets) - where - decodeAsset - :: String - -> BigInt - -> Either JsonDecodeError (CurrencySymbol /\ Map TokenName BigInt) - decodeAsset assetStr quantity = do - let - -- Ogmios encodes CurrencySymbol and TokenName to hex strings separated - -- with '.' TokenName part is optional - currSymStr /\ tnStr = case indexOf (Pattern ".") assetStr of - Nothing -> assetStr /\ "" - Just ix -> - let - { before, after } = splitAt ix assetStr - tn = fromMaybe "" $ after # uncons <#> _.tail - in - before /\ tn - - currSymb <- note (assetStrError assetStr "CurrencySymbol" currSymStr) - $ mkCurrencySymbol =<< hexToByteArray currSymStr - tokenName <- note (assetStrError assetStr "TokenName" tnStr) - $ mkTokenName =<< hexToByteArray tnStr - pure $ currSymb /\ Map.singleton tokenName quantity - - assetStrError str t v = TypeMismatch $ - "In " - <> str - <> ": Expected hex-encoded " - <> t - <> ", got: " - <> v From f2da9f684b3a75172b4494c9cfb66f14f893022e Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 22 Oct 2023 23:40:06 +0200 Subject: [PATCH 381/478] Remove obsolete ogmios UTXO query tests --- .../parsing/JsonRpc2/UtxoQueryResponse.json | 22 ---- test/Ogmios/GenerateFixtures.purs | 29 +---- test/Parser.purs | 74 ----------- test/TxOutput.purs | 119 ------------------ test/Unit.purs | 4 - 5 files changed, 3 insertions(+), 245 deletions(-) delete mode 100644 fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json delete mode 100644 test/Parser.purs delete mode 100644 test/TxOutput.purs diff --git a/fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json b/fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json deleted file mode 100644 index 6442f327f..000000000 --- a/fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "jsonrpc": "2.0", - "method": "queryLedgerState/utxo", - "result": [ - [ - { - "index": 0, - "txId": "c6a1c03c473753c932277634a39e8a3bacf4ae792eac174ab1e1b272d142db1f" - }, - { - "address": "addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t", - "datum": null, - "datumHash": null, - "script": null, - "value": { "assets": {}, "coins": 20186944 } - } - ] - ], - "id": "Hello123" - } -] diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index d9da357fc..feb5601f3 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -4,7 +4,7 @@ module Test.Ctl.Ogmios.GenerateFixtures import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, Aeson, stringifyAeson) +import Aeson (class DecodeAeson, Aeson, stringifyAeson) import Control.Parallel (parTraverse) import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) @@ -27,7 +27,7 @@ import Ctl.Internal.QueryM , mkWebsocketDispatch ) import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call) -import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallType, mkOgmiosCallTypeNoArgs) +import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallTypeNoArgs) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) @@ -91,15 +91,6 @@ mkWebSocketAff lvl = makeAff <<< map (map (Canceler <<< map liftEffect)) <<< data Query = Query (JsonRpc2Call Unit Aeson) String -mkQuery - :: forall (params :: Type). EncodeAeson params => params -> String -> Query -mkQuery params method = Query queryCall (sanitiseMethod method) - where - queryCall = mkOgmiosCallType - { method - , params: const { params } - } - mkQuery' :: String -> Query mkQuery' method = Query (mkOgmiosCallTypeNoArgs method) (sanitiseMethod method) @@ -113,19 +104,6 @@ main = let logLevel = Trace WebSocket ws listeners <- mkWebSocketAff logLevel defaultOgmiosWsConfig - let - addresses = - [ "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc" - , "addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla" - , "addr_test1vz5rd5hsead7gcgn6zx6nalqxz6zlvdmg89kswl935dfh8cqn5kcy" - , "addr_test1vrx0w7gndt6gk9svrksmpg23lmwmlcx2w2fre7rk27r8gdcyazwxm" - , "addr_test1vp842vatdp6qxqnhcfhh6w83t6c8c5udhua999slgzwcq2gvgpvm9" - , "addr_test1vrmet2lzexpmw78jpyqkuqs8ktg80x457h6wcnkp3z63etsx3pg70" - , "addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4" - <> "wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t" - , "addr1q9d34spgg2kdy47n82e7x9pdd6vql6d2engxmpj20jmhuc2047yqd4xnh7" - <> "u6u5jp4t0q3fkxzckph4tgnzvamlu7k5psuahzcp" - ] let queries = [ mkQuery' "queryLedgerState/protocolParameters" @@ -133,8 +111,7 @@ main = , mkQuery' "queryLedgerState/epoch" , mkQuery' "queryNetwork/systemStart" , mkQuery' "queryNetwork/tip" - ] <> flip map addresses \addr -> mkQuery { utxo: [ addr ] } - "queryLedgerStat/utxo" + ] resps <- flip parTraverse queries \(Query qc method) -> do resp <- mkRequestAff listeners ws (\_ _ -> pure unit) qc identity unit diff --git a/test/Parser.purs b/test/Parser.purs deleted file mode 100644 index a78f1f043..000000000 --- a/test/Parser.purs +++ /dev/null @@ -1,74 +0,0 @@ -module Test.Ctl.Parser where - -import Prelude - -import Aeson - ( Aeson - , JsonDecodeError - , caseAesonArray - , parseJsonStringToAeson - , stringifyAeson - ) -import Control.Monad.Error.Class (throwError) -import Control.Monad.Except.Trans (ExceptT, runExceptT) -import Control.Monad.Trans.Class (lift) -import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Response, parseJsonRpc2Response) -import Ctl.Internal.QueryM.Ogmios (UtxoQR) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Array as Array -import Data.Either (Either, either, isRight) -import Data.Medea (validate) -import Data.Medea.Loader (LoaderError, loadSchemaFromFile) -import Data.Medea.Schema (Schema) -import Data.Traversable (traverse, traverse_) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Effect.Exception (error, throw) -import Mote (group, test) -import Node.Encoding (Encoding(UTF8)) -import Node.FS.Aff (readTextFile) -import Test.Ctl.Utils (ValidationM, runValidationM) -import Test.Spec.Assertions (shouldNotSatisfy, shouldSatisfy) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - str <- lift $ readTextFile UTF8 - "./fixtures/test/parsing/JsonRpc2/UtxoQueryResponse.json" - let - eJson = parseJsonStringToAeson str - json <- either - (\e -> liftEffect $ throw ("json parsed incorrectly " <> show e)) - pure - eJson - let - stringArray = caseAesonArray [] convertJsonArray json :: Array String - jsonStrArray = caseAesonArray [] identity json :: Array Aeson - schema <- lift $ getSchema - "./fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea" - group "Parser tests" $ do - group "Schemata parse tests" $ do - test "fixture array should not be empty" $ - stringArray `shouldNotSatisfy` Array.null - test "fixtures match schema - utxoQueryResponse" $ - -- TODO: add a helper function or something so that the error displays the index it occured on, logs out the offending JSON string from the array. - runValidationM (validateJsonArray schema stringArray) `shouldSatisfy` - isRight - group "Type parsing" $ do - test "fixtures parse correctly - UtxoQueryResponse" $ - traverseJsonRpc2s jsonStrArray `shouldSatisfy` isRight - -traverseJsonRpc2s - :: Array Aeson -> Either JsonDecodeError (Array (JsonRpc2Response UtxoQR)) -traverseJsonRpc2s arr = traverse parseJsonRpc2Response arr - -convertJsonArray :: Array Aeson -> Array String -convertJsonArray arr = map stringifyAeson arr - -getSchema :: String -> Aff Schema -getSchema file = do - (eSchema :: Either LoaderError Schema) <- runExceptT $ - (loadSchemaFromFile file :: ExceptT LoaderError Aff Schema) - either (throwError <<< error <<< show) pure eSchema - -validateJsonArray :: Schema -> Array String -> ValidationM Unit -validateJsonArray scm arr = traverse_ (validate scm) arr diff --git a/test/TxOutput.purs b/test/TxOutput.purs deleted file mode 100644 index f4effd84e..000000000 --- a/test/TxOutput.purs +++ /dev/null @@ -1,119 +0,0 @@ -module Test.Ctl.TxOutput (suite, main) where - -import Prelude - -import Aeson (decodeJsonString, printJsonDecodeError) -import Control.Monad.Error.Class (liftEither, liftMaybe, throwError) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput) -import Ctl.Internal.QueryM.Ogmios as O -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) -import Ctl.Internal.TxOutput (ogmiosTxOutToTransactionOutput) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Data.Bifunctor (bimap) -import Data.FoldableWithIndex (traverseWithIndex_) -import Data.Map as Map -import Data.Newtype (unwrap) -import Data.Tuple.Nested ((/\)) -import Data.UInt as UInt -import Effect (Effect) -import Effect.Aff (Aff, launchAff_) -import Effect.Class (liftEffect) -import Effect.Exception (error) -import Mote (group, test) -import Node.Encoding (Encoding(UTF8)) -import Node.FS.Sync (readTextFile) -import Node.Path (concat) - --- Run with `spago test --main Test.Ctl.TxOutput` -main :: Effect Unit -main = launchAff_ do - interpret suite - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "TxOutput ogmiosTxOutToTransactionOutput datums are correctly preserved" - $ test "Fixture #1" - $ liftEffect - $ loadQueryResultFixture >>= traverseWithIndex_ \input output -> do - check <- liftMaybe (error "Missing fixture check") - $ Map.lookup input fixtureChecks - output' <- liftMaybe (error "Failed to convert output") - $ ogmiosTxOutToTransactionOutput output - check output' - -loadQueryResultFixture - :: Effect O.UtxoQueryResult -loadQueryResultFixture = do - contents <- readTextFile UTF8 path - liftEither $ bimap - (error <<< printJsonDecodeError) - unwrap - (decodeJsonString contents :: _ O.UtxoQR) - where - path :: String - path = concat - [ "fixtures" - , "test" - , "ogmios" - , "utxo-681f7f01fe06ae75d83187cda28c376e.json" - ] - -expect :: TransactionOutput -> String -> String -> Effect Unit -expect to expected got = throwError $ error $ - "Expected " - <> expected - <> " but got " - <> got - <> ": " - <> show to - -hasInlineDatum :: TransactionOutput -> Effect Unit -hasInlineDatum to = to # unwrap >>> _.datum >>> case _ of - OutputDatum _ -> pure unit - OutputDatumHash _ -> expect to "inline datum" "datum" - NoOutputDatum -> expect to "inline datum" "no datum" - -hasDatum :: TransactionOutput -> Effect Unit -hasDatum to = to # unwrap >>> _.datum >>> case _ of - OutputDatumHash _ -> pure unit - NoOutputDatum -> expect to "datum" "no datum" - OutputDatum _ -> expect to "datum" "inline datum" - -hasNoDatum :: TransactionOutput -> Effect Unit -hasNoDatum to = to # unwrap >>> _.datum >>> case _ of - NoOutputDatum -> pure unit - OutputDatum _ -> expect to "no datum" "inline datum" - OutputDatumHash _ -> expect to "no datum" "datum" - -fixtureChecks :: Map.Map O.OgmiosTxOutRef (TransactionOutput -> Effect Unit) -fixtureChecks = Map.fromFoldable - [ { "txId": "2208e439244a1d0ef238352e3693098aba9de9dd0154f9056551636c8ed15dc1" - , "index": UInt.fromInt 6 - } /\ hasDatum - , { "txId": "4f539156bfbefc070a3b61cad3d1cedab3050e2b2a62f0ffe16a43eb0edc1ce8" - , "index": UInt.fromInt 2 - } /\ hasDatum - , { "txId": "e88bd757ad5b9bedf372d8d3f0cf6c962a469db61a265f6418e1ffed86da29ec" - , "index": UInt.fromInt 4 - } /\ hasDatum - , { "txId": "ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25" - , "index": UInt.fromInt 7 - } /\ hasInlineDatum - , { "txId": "e88bd757ad5b9bedf372d8d3f0cf6c962a469db61a265f6418e1ffed86da29ec" - , "index": UInt.fromInt 5 - } /\ hasInlineDatum - , { "txId": "0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c" - , "index": UInt.fromInt 6 - } /\ hasInlineDatum - , { "txId": "bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa" - , "index": UInt.fromInt 5 - } /\ hasNoDatum - , { "txId": "bfa726c3c149165b108e6ff550cb1a1c4f0fdc2e9f26a9a16f48babe73b600ce" - , "index": UInt.fromInt 4 - } /\ hasNoDatum - , { "txId": "0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c" - , "index": UInt.fromInt 7 - } /\ hasNoDatum - ] diff --git a/test/Unit.purs b/test/Unit.purs index 23a6b34a7..bdc9e415d 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -31,14 +31,12 @@ import Test.Ctl.NativeScript as NativeScript import Test.Ctl.Ogmios.Address as Ogmios.Address import Test.Ctl.Ogmios.Aeson as Ogmios.Aeson import Test.Ctl.Ogmios.EvaluateTx as Ogmios.EvaluateTx -import Test.Ctl.Parser as Parser import Test.Ctl.Partition as Partition import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization import Test.Ctl.Serialization.Address as Serialization.Address import Test.Ctl.Serialization.Hash as Serialization.Hash import Test.Ctl.Transaction as Transaction -import Test.Ctl.TxOutput as TxOutput import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName @@ -69,7 +67,6 @@ testPlan = do Data.suite Deserialization.suite Hashing.suite - Parser.suite Partition.suite Plutus.Conversion.Address.suite Plutus.Conversion.Value.suite @@ -78,7 +75,6 @@ testPlan = do Serialization.Address.suite Serialization.Hash.suite Transaction.suite - TxOutput.suite UsedTxOuts.suite Ogmios.Address.suite Ogmios.Aeson.suite From 25f87e86f25a55d11820855fa05aec6967d1f3a3 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Tue, 24 Oct 2023 12:04:21 +1300 Subject: [PATCH 382/478] Start documenting keydir test engine --- doc/keydir.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 doc/keydir.md diff --git a/doc/keydir.md b/doc/keydir.md new file mode 100644 index 000000000..1afbe8ddd --- /dev/null +++ b/doc/keydir.md @@ -0,0 +1,80 @@ +# Keydir backend + + + + +- [Setting up a keydir test suite](#setting-up-a-keydir-test-suite) + - [Generating private keys](#generating-private-keys) + - [Funding your address](#funding-your-address) + - [Setting up a directory for temporary keys](#setting-up-a-directory-for-temporary-keys) + + + +## Setting up a keydir test suite + +In this section, we show how to set up a test suite that uses the keydir backend +to run `Contract`s and print reports nicely using [Mote][mote]. + +**Important note:** Blockfrost-based tests also use the keydir test engine. +Thus, if you have already done basic setup for Blockfrost-based tests, you don't +have to repeat this setup for keydir-based tests. + +### Generating private keys + +Follow [the Cardano handbook][cardano-handbook-keys-addresses] to generate a +private payment key, and optionally, a stake key. You can use [this +script][ctl-generate-keys] for convenience instead of following the instructions +given in this section. + +The generated keys should look like this: + +```json +{ + "type": "PaymentSigningKeyShelley_ed25519", + "description": "Payment signing key", + "cborHex": "..." +} +``` + +Get the address for this payment key (and, optionally, stake key), following the +guide above. + +If you are using a testnet, replace the `--mainnet` flag in the shell command +with `--testnet-magic YOUR_NETWORK_MAGIC`, where `YOUR_NETWORK_MAGIC` is a +genesis parameter of the network. For public testnets, you can get this value +from the [`cardano-configurations` repo][cardano-configurations]. You can find +it in `network/YOUR_NETWORK_NAME/genesis/shelley.json`, under the `networkMagic` +key. Common values are 1 for `preprod`, and 2 for `preview`. + +### Funding your address + +Fund your address using the [testnet faucet][testnet-faucet]. Make sure you're +sending funds in the correct network. + +Point the test suite to your keys by setting `PRIVATE_PAYMENT_KEY_FILE` and +`PRIVATE_STAKE_KEY_FILE` to the paths of your `.skey` files. If you are using an +enterprise address (without a staking credential component), then do not provide +the staking key file. Whether you use a staking credential component or not does +not affect anything, because the test suite will only use this address to +distribute funds to other, temporary addresses. + +### Setting up a directory for temporary keys + +During testing, the test engine will move funds around according to the UTxO +distribution specifications provided via `Contract.Test.withWallets' calls in +the test bodies. This will generate private keys as-needed on the fly: these +will be stored in a special directory, to prevent loss of funds in case the test +suite suddenly exits. This directory will become the `FilePath` argument to +`runContractTestsWithKeyDir`. + +Each test will generate fresh keys that will be stored in this directory +indefinitely. It is up to the user to decide when to delete the corresponding +directories. We don't dispose of the keys automatically, as there may be some +on-chain state that's uniquely tied to them, which the user might not want to +lose access to. + +[mote]: https://github.com/garyb/purescript-mote +[cardano-handbook-keys-addresses]: https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses +[ctl-generate-keys]: https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/scripts/generate-keys.sh +[cardano-configurations]: https://github.com/input-output-hk/cardano-configurations +[testnet-faucet]: https://docs.cardano.org/cardano-testnet/tools/faucet From 5d4ca47cc93d63eb85d6c5c3c847aad2e8b8c1a7 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 25 Oct 2023 10:20:30 +1300 Subject: [PATCH 383/478] Revert MLabs link change --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 311629b19..e96a722be 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ CTL is being developed by MLabs. The following companies/funds have contributed - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) - [Catalyst Fund9](https://cardano.ideascale.com/c/idea/420791) - [Catalyst Fund10](https://cardano.ideascale.com/c/idea/101478) -- [MLabs](https://www.mlabs.city/) +- [MLabs](https://mlabs.city/) - [Indigo Protocol](https://indigoprotocol.io/) - [Equine](https://www.equine.gg/) - [Liqwid Labs](https://liqwid.finance/) From 6117dd268230f99f93afee1b639095c6f0a10e10 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Tue, 24 Oct 2023 16:23:50 +0200 Subject: [PATCH 384/478] Update ogmios fixtures --- ...nTip-0cbfedbf9c461116322a023c58f3a2e0.json | 1 - ...nTip-256cc6b0599bbd3f1b492083ce01dbf1.json | 1 - ...nTip-33384ff2ce253b20ed805395c5f719b5.json | 1 - ...nTip-352e247aaf34f5ef063e7bd40c3e6da1.json | 1 - ...nTip-3b2a514f29561154784c3ff3b9014f7b.json | 1 - ...nTip-413f14ac202089f297cef36743fdc3af.json | 1 - ...nTip-45449728188ad3ad324c21d3da6d4878.json | 1 - ...nTip-5702801170e294405944b2c20ea84f92.json | 1 - ...nTip-5e316fd232ed7a93f434260692fadb42.json | 1 - ...nTip-74ab6d8659a259f85e4bce30be904451.json | 1 - ...nTip-7c012adccbd90622d09a4efcf98ef5ba.json | 1 - ...nTip-84d84f6061c30740ebfef15fa6898d04.json | 1 - ...nTip-89419e60a37ad985d0f6a3f1dbdf3a57.json | 1 - ...nTip-9d9094430c84b08573785786d2d9263e.json | 1 - ...nTip-deafb6615f772fbdf1429dfebc39c25d.json | 1 - ...nTip-e121a9c9f5e425ad58f84db940082abb.json | 1 - ...nTip-e17c77f317db5ef57634c48500baf319.json | 1 - ...nTip-ee3c92f2b0da1d37b289e8baff88f2ff.json | 1 - ...poch-13fe9d84310e77f13a6d184dbf1232f3.json | 1 - ...poch-36660e59856b4de58a219bcf4e27eba3.json | 1 - ...poch-4734ba6f3de83d861c3176a6273cac6d.json | 1 - ...poch-8c19f571e251e61cb8dd3612f26d5ecf.json | 1 - ...poch-d6baf65e0b240ce177cf70da146c8dc8.json | 1 - ...poch-e56954b4f6347e897f954495eab16a88.json | 1 - ...ters-2adce4ab4ea7749607673c7c4ae75712.json | 1 - ...ters-4e6d46e29456394fd3313ba4909b1a49.json | 1 - ...ters-9f10850f285b1493955267e900008841.json | 1 - .../ogmios/currentProtocolParameters.json | 1 - ...ries-09c1f918b78f701df43777607d0ca090.json | 1 - ...ries-6df28f7065f77208bb3d8a86e17d2629.json | 1 - ...ries-bbf8b1d7d2487e750104ec2b5a31fa86.json | 1 - ...ries-d5d029cfd6b75f3f4402131b67402b32.json | 1 - ...ries-dd511bb2ee535232ffb380a5c5545b79.json | 1 - ...ries-eba8639c38a39eb796f833d7a3b647cf.json | 1 - ...poch-9be40cee5b0eee1462c82c6964087ff9.json | 1 + ...poch-bac9162b47c56fc8a4d2a519803d51b3.json | 1 + ...ries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json | 1 + ...ries-722c02660cab6e7267fe330d2383582d.json | 1 + ...ters-13365782430bcc1da07918d41b57dd73.json | 1 + ...ools-986e758da884f919a3afac69bea81267.json | 1 + ...ools-c4bb7845eaac5da66d8f3e38f45a31b3.json | 1 + ...Time-7f144fea9c3d7f1998a96806e1b0efee.json | 1 + ...-tip-48bd18f8014360789cfdd697b53cfcfd.json | 1 + ...-tip-86ba8232c517e309a0f5f432ed705688.json | 1 + ...tart-da1980dfd588d382e7298a4262f88182.json | 1 - ...tart-ed0caad81f6936e0c122ef6f3c7de5e8.json | 1 - ...utxo-06aaa562b5d1e86110656634e484222c.json | 1 - ...utxo-0f3cfe461ef12cb8b4fe098809df8824.json | 1 - ...utxo-2a97de472129f4670274098942f89427.json | 1 - ...utxo-3162d868573db1663f89bfe084a436b8.json | 1 - ...utxo-363a529fd7b30ecc96e734ef692d542a.json | 1 - ...utxo-5cdb46215d0a19903563d94f6dbf56da.json | 1 - ...utxo-5eabe578ab04685dfdd389f51fa49c74.json | 1 - ...utxo-681f7f01fe06ae75d83187cda28c376e.json | 1 - ...utxo-72527648b478af0745e650679f674f26.json | 1 - ...utxo-7736c8109ebdd6b31eff13fb763c211f.json | 1 - ...utxo-9c0cc3314813f1354f1398e17ef66032.json | 1 - ...utxo-b9d011480174e54980dc3c4026f9d0f1.json | 1 - ...utxo-d751713988987e9331980363e24189ce.json | 1 - ...utxo-e62e3b660031b7653f02efc9406fd692.json | 1 - ...utxo-ef19a5efd09808def062e916aa2e5df5.json | 1 - flake.nix | 8 +--- src/Internal/QueryM/Ogmios.purs | 6 ++- test/Blockfrost/ProtocolParameters.purs | 2 +- test/Ogmios/Aeson.purs | 37 +++++++++---------- test/Ogmios/GenerateFixtures.purs | 13 +++++-- test/ProtocolParams.purs | 2 +- test/Types/Interval.purs | 4 +- 68 files changed, 46 insertions(+), 87 deletions(-) delete mode 100644 fixtures/test/ogmios/chainTip-0cbfedbf9c461116322a023c58f3a2e0.json delete mode 100644 fixtures/test/ogmios/chainTip-256cc6b0599bbd3f1b492083ce01dbf1.json delete mode 100644 fixtures/test/ogmios/chainTip-33384ff2ce253b20ed805395c5f719b5.json delete mode 100644 fixtures/test/ogmios/chainTip-352e247aaf34f5ef063e7bd40c3e6da1.json delete mode 100644 fixtures/test/ogmios/chainTip-3b2a514f29561154784c3ff3b9014f7b.json delete mode 100644 fixtures/test/ogmios/chainTip-413f14ac202089f297cef36743fdc3af.json delete mode 100644 fixtures/test/ogmios/chainTip-45449728188ad3ad324c21d3da6d4878.json delete mode 100644 fixtures/test/ogmios/chainTip-5702801170e294405944b2c20ea84f92.json delete mode 100644 fixtures/test/ogmios/chainTip-5e316fd232ed7a93f434260692fadb42.json delete mode 100644 fixtures/test/ogmios/chainTip-74ab6d8659a259f85e4bce30be904451.json delete mode 100644 fixtures/test/ogmios/chainTip-7c012adccbd90622d09a4efcf98ef5ba.json delete mode 100644 fixtures/test/ogmios/chainTip-84d84f6061c30740ebfef15fa6898d04.json delete mode 100644 fixtures/test/ogmios/chainTip-89419e60a37ad985d0f6a3f1dbdf3a57.json delete mode 100644 fixtures/test/ogmios/chainTip-9d9094430c84b08573785786d2d9263e.json delete mode 100644 fixtures/test/ogmios/chainTip-deafb6615f772fbdf1429dfebc39c25d.json delete mode 100644 fixtures/test/ogmios/chainTip-e121a9c9f5e425ad58f84db940082abb.json delete mode 100644 fixtures/test/ogmios/chainTip-e17c77f317db5ef57634c48500baf319.json delete mode 100644 fixtures/test/ogmios/chainTip-ee3c92f2b0da1d37b289e8baff88f2ff.json delete mode 100644 fixtures/test/ogmios/currentEpoch-13fe9d84310e77f13a6d184dbf1232f3.json delete mode 100644 fixtures/test/ogmios/currentEpoch-36660e59856b4de58a219bcf4e27eba3.json delete mode 100644 fixtures/test/ogmios/currentEpoch-4734ba6f3de83d861c3176a6273cac6d.json delete mode 100644 fixtures/test/ogmios/currentEpoch-8c19f571e251e61cb8dd3612f26d5ecf.json delete mode 100644 fixtures/test/ogmios/currentEpoch-d6baf65e0b240ce177cf70da146c8dc8.json delete mode 100644 fixtures/test/ogmios/currentEpoch-e56954b4f6347e897f954495eab16a88.json delete mode 100644 fixtures/test/ogmios/currentProtocolParameters-2adce4ab4ea7749607673c7c4ae75712.json delete mode 100644 fixtures/test/ogmios/currentProtocolParameters-4e6d46e29456394fd3313ba4909b1a49.json delete mode 100644 fixtures/test/ogmios/currentProtocolParameters-9f10850f285b1493955267e900008841.json delete mode 100644 fixtures/test/ogmios/currentProtocolParameters.json delete mode 100644 fixtures/test/ogmios/eraSummaries-09c1f918b78f701df43777607d0ca090.json delete mode 100644 fixtures/test/ogmios/eraSummaries-6df28f7065f77208bb3d8a86e17d2629.json delete mode 100644 fixtures/test/ogmios/eraSummaries-bbf8b1d7d2487e750104ec2b5a31fa86.json delete mode 100644 fixtures/test/ogmios/eraSummaries-d5d029cfd6b75f3f4402131b67402b32.json delete mode 100644 fixtures/test/ogmios/eraSummaries-dd511bb2ee535232ffb380a5c5545b79.json delete mode 100644 fixtures/test/ogmios/eraSummaries-eba8639c38a39eb796f833d7a3b647cf.json create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json create mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json create mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json create mode 100644 fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json delete mode 100644 fixtures/test/ogmios/systemStart-da1980dfd588d382e7298a4262f88182.json delete mode 100644 fixtures/test/ogmios/systemStart-ed0caad81f6936e0c122ef6f3c7de5e8.json delete mode 100644 fixtures/test/ogmios/utxo-06aaa562b5d1e86110656634e484222c.json delete mode 100644 fixtures/test/ogmios/utxo-0f3cfe461ef12cb8b4fe098809df8824.json delete mode 100644 fixtures/test/ogmios/utxo-2a97de472129f4670274098942f89427.json delete mode 100644 fixtures/test/ogmios/utxo-3162d868573db1663f89bfe084a436b8.json delete mode 100644 fixtures/test/ogmios/utxo-363a529fd7b30ecc96e734ef692d542a.json delete mode 100644 fixtures/test/ogmios/utxo-5cdb46215d0a19903563d94f6dbf56da.json delete mode 100644 fixtures/test/ogmios/utxo-5eabe578ab04685dfdd389f51fa49c74.json delete mode 100644 fixtures/test/ogmios/utxo-681f7f01fe06ae75d83187cda28c376e.json delete mode 100644 fixtures/test/ogmios/utxo-72527648b478af0745e650679f674f26.json delete mode 100644 fixtures/test/ogmios/utxo-7736c8109ebdd6b31eff13fb763c211f.json delete mode 100644 fixtures/test/ogmios/utxo-9c0cc3314813f1354f1398e17ef66032.json delete mode 100644 fixtures/test/ogmios/utxo-b9d011480174e54980dc3c4026f9d0f1.json delete mode 100644 fixtures/test/ogmios/utxo-d751713988987e9331980363e24189ce.json delete mode 100644 fixtures/test/ogmios/utxo-e62e3b660031b7653f02efc9406fd692.json delete mode 100644 fixtures/test/ogmios/utxo-ef19a5efd09808def062e916aa2e5df5.json diff --git a/fixtures/test/ogmios/chainTip-0cbfedbf9c461116322a023c58f3a2e0.json b/fixtures/test/ogmios/chainTip-0cbfedbf9c461116322a023c58f3a2e0.json deleted file mode 100644 index c690c3898..000000000 --- a/fixtures/test/ogmios/chainTip-0cbfedbf9c461116322a023c58f3a2e0.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"6cb4da9d4dd6df22b329bb1db8e49b3b6e9c326244a73c10801d0aeff7b8aae3","slot":66548374} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-256cc6b0599bbd3f1b492083ce01dbf1.json b/fixtures/test/ogmios/chainTip-256cc6b0599bbd3f1b492083ce01dbf1.json deleted file mode 100644 index a5338c330..000000000 --- a/fixtures/test/ogmios/chainTip-256cc6b0599bbd3f1b492083ce01dbf1.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"829ba391306aaa041c647a87b562e8d670cd230076ef126477fe7aca71331741","slot":1888706} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-33384ff2ce253b20ed805395c5f719b5.json b/fixtures/test/ogmios/chainTip-33384ff2ce253b20ed805395c5f719b5.json deleted file mode 100644 index 4de268fbd..000000000 --- a/fixtures/test/ogmios/chainTip-33384ff2ce253b20ed805395c5f719b5.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"e94ce9dd507217cea0b70eaf5f37a3cad3106eb38df1b78242911b0a969d306f","slot":1894413} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-352e247aaf34f5ef063e7bd40c3e6da1.json b/fixtures/test/ogmios/chainTip-352e247aaf34f5ef063e7bd40c3e6da1.json deleted file mode 100644 index 172429d52..000000000 --- a/fixtures/test/ogmios/chainTip-352e247aaf34f5ef063e7bd40c3e6da1.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"1115d5fd8b8acada0649971962f1720c692aa23513b13382253e7c13f84a525e","slot":1894095} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-3b2a514f29561154784c3ff3b9014f7b.json b/fixtures/test/ogmios/chainTip-3b2a514f29561154784c3ff3b9014f7b.json deleted file mode 100644 index a7c8b4462..000000000 --- a/fixtures/test/ogmios/chainTip-3b2a514f29561154784c3ff3b9014f7b.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"a1c5c9d751d3eb0eea358e88d5c63c9bf3e4751bdfdb855e9d7bfd9359ba296d","slot":1886697} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-413f14ac202089f297cef36743fdc3af.json b/fixtures/test/ogmios/chainTip-413f14ac202089f297cef36743fdc3af.json deleted file mode 100644 index 89c7496ed..000000000 --- a/fixtures/test/ogmios/chainTip-413f14ac202089f297cef36743fdc3af.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"242a65ae3dbf8682b525342a50b0bf29349c251eb0291aecfc98278c2d33c5df","slot":1885226} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-45449728188ad3ad324c21d3da6d4878.json b/fixtures/test/ogmios/chainTip-45449728188ad3ad324c21d3da6d4878.json deleted file mode 100644 index 0cbcb4d02..000000000 --- a/fixtures/test/ogmios/chainTip-45449728188ad3ad324c21d3da6d4878.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"d6f6822844d2bbe6dad521ce699a523deb9c210b8b7758afddb2f57c103dd804","slot":1888493} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-5702801170e294405944b2c20ea84f92.json b/fixtures/test/ogmios/chainTip-5702801170e294405944b2c20ea84f92.json deleted file mode 100644 index 4e2a9d722..000000000 --- a/fixtures/test/ogmios/chainTip-5702801170e294405944b2c20ea84f92.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"190af9f3b0eb9bf062993c51d70eabc56f31de4645dd7ae2b3fa36c4fec75b95","slot":1885025} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-5e316fd232ed7a93f434260692fadb42.json b/fixtures/test/ogmios/chainTip-5e316fd232ed7a93f434260692fadb42.json deleted file mode 100644 index bf4c6359c..000000000 --- a/fixtures/test/ogmios/chainTip-5e316fd232ed7a93f434260692fadb42.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"868b9320cc2be1e9ffa45e244026efb46869d477c07f804e9037dc709e92d6db","slot":1907982} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-74ab6d8659a259f85e4bce30be904451.json b/fixtures/test/ogmios/chainTip-74ab6d8659a259f85e4bce30be904451.json deleted file mode 100644 index 268149693..000000000 --- a/fixtures/test/ogmios/chainTip-74ab6d8659a259f85e4bce30be904451.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"d23ec206b71a726888c84c6031f36abca675cd3a071b3b63590c44d737499c69","slot":1887842} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-7c012adccbd90622d09a4efcf98ef5ba.json b/fixtures/test/ogmios/chainTip-7c012adccbd90622d09a4efcf98ef5ba.json deleted file mode 100644 index 7d42640c1..000000000 --- a/fixtures/test/ogmios/chainTip-7c012adccbd90622d09a4efcf98ef5ba.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"6a69fe94c2e9abc06e9918e083a1243849604fcef7dfa03c4df4bb4fa8cb2ce8","slot":1886102} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-84d84f6061c30740ebfef15fa6898d04.json b/fixtures/test/ogmios/chainTip-84d84f6061c30740ebfef15fa6898d04.json deleted file mode 100644 index 2c33a79ea..000000000 --- a/fixtures/test/ogmios/chainTip-84d84f6061c30740ebfef15fa6898d04.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"d8b74f26e5e7ac3d5cda3611f5336135780a60280ae9787018cdef6029bb22d3","slot":1885213} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-89419e60a37ad985d0f6a3f1dbdf3a57.json b/fixtures/test/ogmios/chainTip-89419e60a37ad985d0f6a3f1dbdf3a57.json deleted file mode 100644 index 34f88b56b..000000000 --- a/fixtures/test/ogmios/chainTip-89419e60a37ad985d0f6a3f1dbdf3a57.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"4f5b78e9a0c591444da6fabdb2491f2e6d16d5d02b0fc9452e890b4ad6020dc5","slot":1958967} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-9d9094430c84b08573785786d2d9263e.json b/fixtures/test/ogmios/chainTip-9d9094430c84b08573785786d2d9263e.json deleted file mode 100644 index f48db3f65..000000000 --- a/fixtures/test/ogmios/chainTip-9d9094430c84b08573785786d2d9263e.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"f910b3bec65f407889d2a3dd493b3a8842ce768dcfb353c63a21ec4a46f66269","slot":1905968} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-deafb6615f772fbdf1429dfebc39c25d.json b/fixtures/test/ogmios/chainTip-deafb6615f772fbdf1429dfebc39c25d.json deleted file mode 100644 index e5da46e63..000000000 --- a/fixtures/test/ogmios/chainTip-deafb6615f772fbdf1429dfebc39c25d.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"f220103510c8f2f2c5224fcdced21ce57a0a9775e199bf0aa83c6e3a512b4116","slot":1894855} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-e121a9c9f5e425ad58f84db940082abb.json b/fixtures/test/ogmios/chainTip-e121a9c9f5e425ad58f84db940082abb.json deleted file mode 100644 index b43786b88..000000000 --- a/fixtures/test/ogmios/chainTip-e121a9c9f5e425ad58f84db940082abb.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"f59c3e3b2954ba387f57b141413797dc6ce85ff2858d04638a010e121aea4cfe","slot":1884910} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-e17c77f317db5ef57634c48500baf319.json b/fixtures/test/ogmios/chainTip-e17c77f317db5ef57634c48500baf319.json deleted file mode 100644 index d834f1341..000000000 --- a/fixtures/test/ogmios/chainTip-e17c77f317db5ef57634c48500baf319.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"76ebdeb4ca9806f7bbd273a1db6833259a05be9b7f3b856bcb2c8113f1aa7d77","slot":1885185} \ No newline at end of file diff --git a/fixtures/test/ogmios/chainTip-ee3c92f2b0da1d37b289e8baff88f2ff.json b/fixtures/test/ogmios/chainTip-ee3c92f2b0da1d37b289e8baff88f2ff.json deleted file mode 100644 index 154f10e00..000000000 --- a/fixtures/test/ogmios/chainTip-ee3c92f2b0da1d37b289e8baff88f2ff.json +++ /dev/null @@ -1 +0,0 @@ -{"hash":"6d4982d0e98676939d389066f3d0b24b1b5d9102ffa49a3a481913a4b6328609","slot":1896465} \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-13fe9d84310e77f13a6d184dbf1232f3.json b/fixtures/test/ogmios/currentEpoch-13fe9d84310e77f13a6d184dbf1232f3.json deleted file mode 100644 index fba8ce006..000000000 --- a/fixtures/test/ogmios/currentEpoch-13fe9d84310e77f13a6d184dbf1232f3.json +++ /dev/null @@ -1 +0,0 @@ -224 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-36660e59856b4de58a219bcf4e27eba3.json b/fixtures/test/ogmios/currentEpoch-36660e59856b4de58a219bcf4e27eba3.json deleted file mode 100644 index bb81456fa..000000000 --- a/fixtures/test/ogmios/currentEpoch-36660e59856b4de58a219bcf4e27eba3.json +++ /dev/null @@ -1 +0,0 @@ -262 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-4734ba6f3de83d861c3176a6273cac6d.json b/fixtures/test/ogmios/currentEpoch-4734ba6f3de83d861c3176a6273cac6d.json deleted file mode 100644 index e21ad0e4f..000000000 --- a/fixtures/test/ogmios/currentEpoch-4734ba6f3de83d861c3176a6273cac6d.json +++ /dev/null @@ -1 +0,0 @@ -273 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-8c19f571e251e61cb8dd3612f26d5ecf.json b/fixtures/test/ogmios/currentEpoch-8c19f571e251e61cb8dd3612f26d5ecf.json deleted file mode 100644 index 680cc9c31..000000000 --- a/fixtures/test/ogmios/currentEpoch-8c19f571e251e61cb8dd3612f26d5ecf.json +++ /dev/null @@ -1 +0,0 @@ -263 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-d6baf65e0b240ce177cf70da146c8dc8.json b/fixtures/test/ogmios/currentEpoch-d6baf65e0b240ce177cf70da146c8dc8.json deleted file mode 100644 index 44dfb1d0b..000000000 --- a/fixtures/test/ogmios/currentEpoch-d6baf65e0b240ce177cf70da146c8dc8.json +++ /dev/null @@ -1 +0,0 @@ -264 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentEpoch-e56954b4f6347e897f954495eab16a88.json b/fixtures/test/ogmios/currentEpoch-e56954b4f6347e897f954495eab16a88.json deleted file mode 100644 index b1ef57c1f..000000000 --- a/fixtures/test/ogmios/currentEpoch-e56954b4f6347e897f954495eab16a88.json +++ /dev/null @@ -1 +0,0 @@ -265 \ No newline at end of file diff --git a/fixtures/test/ogmios/currentProtocolParameters-2adce4ab4ea7749607673c7c4ae75712.json b/fixtures/test/ogmios/currentProtocolParameters-2adce4ab4ea7749607673c7c4ae75712.json deleted file mode 100644 index 2d4427c11..000000000 --- a/fixtures/test/ogmios/currentProtocolParameters-2adce4ab4ea7749607673c7c4ae75712.json +++ /dev/null @@ -1 +0,0 @@ -{"coinsPerUtxoByte":4310,"collateralPercentage":150,"costModels":{"plutus:v1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"plutus:v2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"desiredNumberOfPools":50,"maxBlockBodySize":65536,"maxBlockHeaderSize":1100,"maxCollateralInputs":3,"maxExecutionUnitsPerBlock":{"memory":50000000,"steps":40000000000},"maxExecutionUnitsPerTransaction":{"memory":10000000,"steps":10000000000},"maxTxSize":16384,"maxValueSize":5000,"minFeeCoefficient":44,"minFeeConstant":155381,"minPoolCost":0,"monetaryExpansion":"178650067/100000000000","poolDeposit":500000000,"poolInfluence":"1/10","poolRetirementEpochBound":18,"prices":{"memory":"577/10000","steps":"721/10000000"},"protocolVersion":{"major":7,"minor":0},"stakeKeyDeposit":400000,"treasuryExpansion":"1/10"} \ No newline at end of file diff --git a/fixtures/test/ogmios/currentProtocolParameters-4e6d46e29456394fd3313ba4909b1a49.json b/fixtures/test/ogmios/currentProtocolParameters-4e6d46e29456394fd3313ba4909b1a49.json deleted file mode 100644 index f61b65369..000000000 --- a/fixtures/test/ogmios/currentProtocolParameters-4e6d46e29456394fd3313ba4909b1a49.json +++ /dev/null @@ -1 +0,0 @@ -{"coinsPerUtxoByte":4310,"collateralPercentage":150,"costModels":{"plutus:v1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"plutus:v2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":20000000000,"verifyEcdsaSecp256k1Signature-memory-arguments":20000000000,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":20000000000,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":0,"verifySchnorrSecp256k1Signature-memory-arguments":20000000000}},"desiredNumberOfPools":500,"maxBlockBodySize":98304,"maxBlockHeaderSize":1100,"maxCollateralInputs":3,"maxExecutionUnitsPerBlock":{"memory":80000000,"steps":40000000000},"maxExecutionUnitsPerTransaction":{"memory":16000000,"steps":10000000000},"maxTxSize":16384,"maxValueSize":5000,"minFeeCoefficient":44,"minFeeConstant":155381,"minPoolCost":340000000,"monetaryExpansion":"3/1000","poolDeposit":500000000,"poolInfluence":"3/10","poolRetirementEpochBound":18,"prices":{"memory":"577/10000","steps":"721/10000000"},"protocolVersion":{"major":7,"minor":0},"stakeKeyDeposit":2000000,"treasuryExpansion":"1/5"} \ No newline at end of file diff --git a/fixtures/test/ogmios/currentProtocolParameters-9f10850f285b1493955267e900008841.json b/fixtures/test/ogmios/currentProtocolParameters-9f10850f285b1493955267e900008841.json deleted file mode 100644 index ad617ad1f..000000000 --- a/fixtures/test/ogmios/currentProtocolParameters-9f10850f285b1493955267e900008841.json +++ /dev/null @@ -1 +0,0 @@ -{"minFeeCoefficient":44,"minFeeConstant":155381,"maxBlockBodySize":90112,"maxBlockHeaderSize":1100,"maxTxSize":16384,"stakeKeyDeposit":2000000,"poolDeposit":500000000,"poolRetirementEpochBound":18,"desiredNumberOfPools":500,"poolInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","protocolVersion":{"major":8,"minor":0},"minPoolCost":340000000,"coinsPerUtxoByte":4310,"costModels":{"plutus:v1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"plutus:v2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"prices":{"memory":"577/10000","steps":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"steps":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"steps":40000000000},"maxValueSize":5000,"collateralPercentage":150,"maxCollateralInputs":3} \ No newline at end of file diff --git a/fixtures/test/ogmios/currentProtocolParameters.json b/fixtures/test/ogmios/currentProtocolParameters.json deleted file mode 100644 index 2d4427c11..000000000 --- a/fixtures/test/ogmios/currentProtocolParameters.json +++ /dev/null @@ -1 +0,0 @@ -{"coinsPerUtxoByte":4310,"collateralPercentage":150,"costModels":{"plutus:v1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"plutus:v2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"desiredNumberOfPools":50,"maxBlockBodySize":65536,"maxBlockHeaderSize":1100,"maxCollateralInputs":3,"maxExecutionUnitsPerBlock":{"memory":50000000,"steps":40000000000},"maxExecutionUnitsPerTransaction":{"memory":10000000,"steps":10000000000},"maxTxSize":16384,"maxValueSize":5000,"minFeeCoefficient":44,"minFeeConstant":155381,"minPoolCost":0,"monetaryExpansion":"178650067/100000000000","poolDeposit":500000000,"poolInfluence":"1/10","poolRetirementEpochBound":18,"prices":{"memory":"577/10000","steps":"721/10000000"},"protocolVersion":{"major":7,"minor":0},"stakeKeyDeposit":400000,"treasuryExpansion":"1/10"} \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-09c1f918b78f701df43777607d0ca090.json b/fixtures/test/ogmios/eraSummaries-09c1f918b78f701df43777607d0ca090.json deleted file mode 100644 index 6b092c72d..000000000 --- a/fixtures/test/ogmios/eraSummaries-09c1f918b78f701df43777607d0ca090.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":1,"slot":360,"time":7200},"parameters":{"epochLength":360,"safeZone":72,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":2,"slot":7560,"time":14400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":1,"slot":360,"time":7200}},{"end":{"epoch":3,"slot":14760,"time":21600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":2,"slot":7560,"time":14400}},{"end":{"epoch":4,"slot":21960,"time":28800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":3,"slot":14760,"time":21600}},{"end":{"epoch":13,"slot":86760,"time":93600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":4,"slot":21960,"time":28800}},{"end":{"epoch":264,"slot":1893960,"time":1900800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":13,"slot":86760,"time":93600}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-6df28f7065f77208bb3d8a86e17d2629.json b/fixtures/test/ogmios/eraSummaries-6df28f7065f77208bb3d8a86e17d2629.json deleted file mode 100644 index 12d5def32..000000000 --- a/fixtures/test/ogmios/eraSummaries-6df28f7065f77208bb3d8a86e17d2629.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":1,"slot":360,"time":7200},"parameters":{"epochLength":360,"safeZone":72,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":2,"slot":7560,"time":14400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":1,"slot":360,"time":7200}},{"end":{"epoch":3,"slot":14760,"time":21600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":2,"slot":7560,"time":14400}},{"end":{"epoch":4,"slot":21960,"time":28800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":3,"slot":14760,"time":21600}},{"end":{"epoch":13,"slot":86760,"time":93600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":4,"slot":21960,"time":28800}},{"end":{"epoch":265,"slot":1901160,"time":1908000},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":13,"slot":86760,"time":93600}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-bbf8b1d7d2487e750104ec2b5a31fa86.json b/fixtures/test/ogmios/eraSummaries-bbf8b1d7d2487e750104ec2b5a31fa86.json deleted file mode 100644 index 7482268dc..000000000 --- a/fixtures/test/ogmios/eraSummaries-bbf8b1d7d2487e750104ec2b5a31fa86.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":74,"slot":1598400,"time":31968000},"parameters":{"epochLength":21600,"safeZone":4320,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":102,"slot":13694400,"time":44064000},"parameters":{"epochLength":432000,"safeZone":129600,"slotLength":1},"start":{"epoch":74,"slot":1598400,"time":31968000}},{"end":{"epoch":112,"slot":18014400,"time":48384000},"parameters":{"epochLength":432000,"safeZone":129600,"slotLength":1},"start":{"epoch":102,"slot":13694400,"time":44064000}},{"end":{"epoch":154,"slot":36158400,"time":66528000},"parameters":{"epochLength":432000,"safeZone":129600,"slotLength":1},"start":{"epoch":112,"slot":18014400,"time":48384000}},{"end":{"epoch":215,"slot":62510400,"time":92880000},"parameters":{"epochLength":432000,"safeZone":129600,"slotLength":1},"start":{"epoch":154,"slot":36158400,"time":66528000}},{"end":{"epoch":225,"slot":66830400,"time":97200000},"parameters":{"epochLength":432000,"safeZone":129600,"slotLength":1},"start":{"epoch":215,"slot":62510400,"time":92880000}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-d5d029cfd6b75f3f4402131b67402b32.json b/fixtures/test/ogmios/eraSummaries-d5d029cfd6b75f3f4402131b67402b32.json deleted file mode 100644 index 6dc21e1db..000000000 --- a/fixtures/test/ogmios/eraSummaries-d5d029cfd6b75f3f4402131b67402b32.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":1,"slot":360,"time":7200},"parameters":{"epochLength":360,"safeZone":72,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":2,"slot":7560,"time":14400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":1,"slot":360,"time":7200}},{"end":{"epoch":3,"slot":14760,"time":21600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":2,"slot":7560,"time":14400}},{"end":{"epoch":4,"slot":21960,"time":28800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":3,"slot":14760,"time":21600}},{"end":{"epoch":13,"slot":86760,"time":93600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":4,"slot":21960,"time":28800}},{"end":{"epoch":267,"slot":1915560,"time":1922400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":13,"slot":86760,"time":93600}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-dd511bb2ee535232ffb380a5c5545b79.json b/fixtures/test/ogmios/eraSummaries-dd511bb2ee535232ffb380a5c5545b79.json deleted file mode 100644 index 13cf999b2..000000000 --- a/fixtures/test/ogmios/eraSummaries-dd511bb2ee535232ffb380a5c5545b79.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":1,"slot":360,"time":7200},"parameters":{"epochLength":360,"safeZone":72,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":2,"slot":7560,"time":14400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":1,"slot":360,"time":7200}},{"end":{"epoch":3,"slot":14760,"time":21600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":2,"slot":7560,"time":14400}},{"end":{"epoch":4,"slot":21960,"time":28800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":3,"slot":14760,"time":21600}},{"end":{"epoch":13,"slot":86760,"time":93600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":4,"slot":21960,"time":28800}},{"end":{"epoch":266,"slot":1908360,"time":1915200},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":13,"slot":86760,"time":93600}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/eraSummaries-eba8639c38a39eb796f833d7a3b647cf.json b/fixtures/test/ogmios/eraSummaries-eba8639c38a39eb796f833d7a3b647cf.json deleted file mode 100644 index de2ce8d92..000000000 --- a/fixtures/test/ogmios/eraSummaries-eba8639c38a39eb796f833d7a3b647cf.json +++ /dev/null @@ -1 +0,0 @@ -[{"end":{"epoch":1,"slot":360,"time":7200},"parameters":{"epochLength":360,"safeZone":72,"slotLength":20},"start":{"epoch":0,"slot":0,"time":0}},{"end":{"epoch":2,"slot":7560,"time":14400},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":1,"slot":360,"time":7200}},{"end":{"epoch":3,"slot":14760,"time":21600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":2,"slot":7560,"time":14400}},{"end":{"epoch":4,"slot":21960,"time":28800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":3,"slot":14760,"time":21600}},{"end":{"epoch":13,"slot":86760,"time":93600},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":4,"slot":21960,"time":28800}},{"end":{"epoch":274,"slot":1965960,"time":1972800},"parameters":{"epochLength":7200,"safeZone":2160,"slotLength":1},"start":{"epoch":13,"slot":86760,"time":93600}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json b/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json new file mode 100644 index 000000000..55f04f2ae --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json @@ -0,0 +1 @@ +365 \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json b/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json new file mode 100644 index 000000000..e8930b6df --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json @@ -0,0 +1 @@ +364 \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json new file mode 100644 index 000000000..dec2d5de7 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json @@ -0,0 +1 @@ +[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":31708800,"slot":31708800,"epoch":367},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json new file mode 100644 index 000000000..2639b9931 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json @@ -0,0 +1 @@ +[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":31536000,"slot":31536000,"epoch":365},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json new file mode 100644 index 000000000..34817bccf --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json @@ -0,0 +1 @@ +{"minFeeCoefficient":44,"minFeeConstant":{"lovelace":155381},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"lovelace":2000000},"stakePoolDeposit":{"lovelace":500000000},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"lovelace":170000000},"minUtxoDepositConstant":0,"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json b/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json new file mode 100644 index 000000000..9ea1feb92 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json @@ -0,0 +1 @@ +{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":900000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://rb.gy/nijgk","hash":"4988f4fa5d842f080c785fcc8525b5223344b9cef6a3fc29f43c7e80e47749b7"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool14lv8dtwxc0swyhkypzut2u9yvzaqh8k285q08yajwug0qllt7u3":{"id":"pool14lv8dtwxc0swyhkypzut2u9yvzaqh8k285q08yajwug0qllt7u3","vrfVerificationKeyHash":"4edcf855c5e7e0ea3627364b9b907dcc308c9c2b4ebdb3fe9c233023a5ab7b74","pledge":{"lovelace":9500000000},"cost":{"lovelace":170000000},"margin":"1/50","rewardAccount":"stake_test1uqeyz0zltruafwmk0djupujqdmurl6y59s9eeuunsy7l7dcc6n2sv","owners":["32413c5f58f9d4bb767b65c0f2406ef83fe8942c0b9cf393813dff37"],"relays":[{"type":"hostname","hostname":"pvrelay1.nodeempire.io","port":6000},{"type":"hostname","hostname":"pvrelay2.nodeempire.io","port":6000}],"metadata":{"url":"http://metadata.nodeempire.io","hash":"fd2fc54759cf618e3be1064efe1b455bb3d786602f7d6f4cb50c473de84681a2"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":100},"cost":{"lovelace":500000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5002}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003},{"type":"hostname","hostname":"_preview._tcp.happystaking.io"}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":123000000},"cost":{"lovelace":171000000},"margin":"27/625","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json b/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json new file mode 100644 index 000000000..52139e2d9 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json @@ -0,0 +1 @@ +{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":900000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://rb.gy/nijgk","hash":"4988f4fa5d842f080c785fcc8525b5223344b9cef6a3fc29f43c7e80e47749b7"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce":{"id":"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce","vrfVerificationKeyHash":"a1b272e77f8d5cebc04ba482dacba825e8f7f59251d95746e8ff23864e0c89ee","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["788cf0519348fefaf3c721c5f5bd60b195b444fa0d8fb4512dc259be"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku":{"id":"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku","vrfVerificationKeyHash":"5ad90f4be69faac1c7e216cd50631240db41842b5a43f2ce344670fa7219a6c6","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["f631370cc87882bf5e14ab72534caf2655d0a2a50a9a8a3820bb6f4a"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":100},"cost":{"lovelace":500000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5002}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003},{"type":"hostname","hostname":"_preview._tcp.happystaking.io"}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932":{"id":"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932","vrfVerificationKeyHash":"4331f2905796fd9a028c17896ce5305dc1daf710ad448a3872df75722f2cc41d","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["ba149e2e2379097e65f0c03f2733d3103151e7f100d36dfdb01a0b22"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":4567000000},"cost":{"lovelace":340000000},"margin":"117/5000","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json b/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json new file mode 100644 index 000000000..19f8162ec --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json @@ -0,0 +1 @@ +"2022-10-25T00:00:00Z" \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json b/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json new file mode 100644 index 000000000..13d8a15ea --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json @@ -0,0 +1 @@ +{"slot":31501250,"id":"588b5272ed580fa730deb7b602d07d4a6e5505c8c4aaa8afa2dc3992a233fefb"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json b/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json new file mode 100644 index 000000000..7fa503bc7 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json @@ -0,0 +1 @@ +{"slot":31606555,"id":"61af67789e73c8cb96a25d675001248b7a112a7275f7d300738e6490afe595a4"} \ No newline at end of file diff --git a/fixtures/test/ogmios/systemStart-da1980dfd588d382e7298a4262f88182.json b/fixtures/test/ogmios/systemStart-da1980dfd588d382e7298a4262f88182.json deleted file mode 100644 index 401cb84ea..000000000 --- a/fixtures/test/ogmios/systemStart-da1980dfd588d382e7298a4262f88182.json +++ /dev/null @@ -1 +0,0 @@ -"2022-06-06T14:00:00Z" \ No newline at end of file diff --git a/fixtures/test/ogmios/systemStart-ed0caad81f6936e0c122ef6f3c7de5e8.json b/fixtures/test/ogmios/systemStart-ed0caad81f6936e0c122ef6f3c7de5e8.json deleted file mode 100644 index 39f1cfdc7..000000000 --- a/fixtures/test/ogmios/systemStart-ed0caad81f6936e0c122ef6f3c7de5e8.json +++ /dev/null @@ -1 +0,0 @@ -"2019-07-24T20:20:16Z" \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-06aaa562b5d1e86110656634e484222c.json b/fixtures/test/ogmios/utxo-06aaa562b5d1e86110656634e484222c.json deleted file mode 100644 index 2e3840808..000000000 --- a/fixtures/test/ogmios/utxo-06aaa562b5d1e86110656634e484222c.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"0074a3a2d65924937b30c3834730eea07a338b90243b3f24168420832185229e"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a77f5c2fb","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"09c5a4907a193848cd10274b9d297ce76e1a4b2c6bfbad87fd0208f3b3198c72"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a1b8c1dd0","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"0d44b4ceb9ec927593271615990249a8d9ba85e97980382fc8e72df9432fe374"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a6c232b7d","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"119b6e937ddb93c39352586a9d4642b487c06648bc33b019bbc7adbec3c3c498"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a274c2623","datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"11bb26804e8814bc1fd7e9b924ebe8744482f925497c841344da0769bc374b16"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a3dd4b1a7","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"11c11f55b1d1d4f9d0d8ed2eeb8303014c914578a4be316c60f33e0bad135ba9"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a274c2623","datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"132d3e8d3b5da558c1377ed9b969cb54803a3174681d44e04ea10a59a52dccaa"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a21cb9fda","datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"1dc0cf9972030302c089f6d7eb8dc695d32d8d4a3e66204c97c8f2db349aa0f2"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a270f45b4","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"1e74eb08a5fae28c378b117309e37964be2960f18e822d7b18016055db1372a6"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"1e74eb08a5fae28c378b117309e37964be2960f18e822d7b18016055db1372a6"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"2186a4514d1590bcee0cfcbea87789e00946cd111bb498aecfe61e1585fef9de"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a6d21ef96","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"23d955f32c62fffe6f61184b6760a7d4377e0e7e4239c48ed7db39e4180541e9"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a1ec31a0a","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"26e951fdb4a7b64460cfff06c5e843682778d94150e0eeba86a20e5d6c1c616b"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a08f62dc6","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"2909c7c9f372362d3ff07418167d188c9321bc99833f76275141ce282355b434"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a79108408","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"2a292a5b24c52ba3358b50788541de8fbcf591dd3ff25ff3fdcf812967968d50"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a7808caef","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"347adf885fe99976d9018a2726a112c0a1bfa7b31f154683183e611b9e962827"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a22e193e8","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"3719ce44a1513cf196b398fabef37042d4143cdc344692a302562470c5e6a826"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":926650}}],[{"index":0,"txId":"393c1c074650730e35744aafdd1c1cddbfd5239bd9158d146bab3169297f7f99"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a390e3cc9","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"3b2b92a4704866d7821025e2fc20a6efea0e72115ba679660b137ea285345084"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a4d26ced2","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"3e631d65e4242707c276a27efa93278b65e9b10f1cc0a34bd294a07d4db7537f"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a3d27e8b5","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"3faa9020075e96dc364465c77ef56bcf9a09a25db60cc31a4b42714e2d5c35c2"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a06232fd1","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"41dcc4cb19373722ae9d1efb2c6a3a83524b4aa1d4ea5ed6ba1978a0ae7a6b00"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a50c8756f","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"45cc78ffea0b00390b301cf86461f00cec830e4aeea289c14027d3094ad3ee39"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a5c48870f","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"4894c66fe14d87e87f456f2037bc0b44bde72e45149cb6b6d2f4cc5ff3a9be47"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a09942a26","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"4bc9283b51f92fa59054855ed5cbb25798ed380e05448e594167ce2233a3ea6d"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"7de95a2dd324e9004bc1b1d5e94bb041e1921e1df78f192f9556f2ab3709f949","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"4cbb34520afecaa10e5058818854511010f45803e435eb9812242c977618e130"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a624d1aab","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"4d44b226db2c07cee6ff2682fa760456fe2e204ac2b063e0be141bcd31d28719"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a267a75d2","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"528276157465ae8fdceba5c3496c246f1831e5d12ff0ca90b07e162fb0c140ff"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a0d5d04f4","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"534c05604a9c223c2d0572c85df07dfb2d98a7fd9780a1d8880a5aba9501678c"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a013d4966","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"53509651ab426b075be84a9fe51264ee0d1a58e263df21129a300ba28b64d072"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a6e0163a1","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"54af7f66a97be725752025c3e45c890e344565b021171c491785062c0e79aabe"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"54af7f66a97be725752025c3e45c890e344565b021171c491785062c0e79aabe"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"5a8ecdd0f7856249f92bb3fd50c19a8636a4a91757e5bd0ad4cc964efb0cd226"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a274c2623","datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"5d42080e3ea1bfafe000c87370713ea637a55cd82ea54311ecf41edcd2af7a83"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a1642e394","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"5f5b31926d82540c98c3960944aa17690b3c983591b6420c102e163bacaf080b"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a69e4c1d3","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"6159f59125a8689cd691c65c804fe71e0278d1d2eb57f2cfc6eac187e25eae9b"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a258c7936","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"6299d542d865062f68249393e351997c79d60d806ff8105d5b5b5fddfdc56087"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a5abffdea","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"665ddd9b392cf43219f2b0f17f10244f750f09564c76f2a6fd942982a8ee6af4"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a23717219","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"6699ee59376f16b4b3d306ec3b75f30509f20de2df4dfd3a07b7ed759a2ae524"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a4d60b90d","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"685b5033c8e8f97f168ea91d58a9c44d114415935b1add8b4da3352fcab4203a"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a0b9677a6","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"6ca49f6477a7817db14ddeb3073e753118da73e63fc2ae19fad3851bd55ea556"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a1e322447","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"6ccf833dd62ec5c63081c18f87990465c93fec2743ef55a1a05099965fd31f5c"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a175c8e68","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"70bdef66cbd950788b4ed27ff742db89becd15a6e429d41884134fb8dbf1455e"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a135223f7","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"74ac2932bd53fcd312018ef05a938aeae80052ca14f39cb0c2da7589fef6f7bf"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a33508e57","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"76f7e129d4271fac3375c8e634098c5dc3be7586319e253959037addcf7a7826"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"c2feb1fae3dfae20d90dd1738bc87409c127b7e853dd4a0654f0267c4aaa4e38","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"78cc10cfa517c0d8aad95f945cd4ab9fbe73896af4c325098de5ecf37447da70"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"78cc10cfa517c0d8aad95f945cd4ab9fbe73896af4c325098de5ecf37447da70"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"81530d50fb73c199cc19b7895e171049162724903d9db5388fb3c9533edda767"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a737f1853","datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"83c331fa555c21998bab8e1b568e94eac656959d2224c5b0749251dd4167d7d8"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"83c331fa555c21998bab8e1b568e94eac656959d2224c5b0749251dd4167d7d8"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"8b7c915dc45fc6448da21915dd64eb11c19430eec2324af13712c3fa110882a4"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a15153ea7","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"8d216ce97e7201712e1903c81e76dcdee50a38d4577627dcc9e01cec15284e2a"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a72206656","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"8d4867ab38e5967dc416a23efce8ee41da4e6cbdca378eeedd8875ca8fbc397c"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a5690936a","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"8d864e64a0a33907faf3fcba60af9213b050801bdb7ab5676fa4da698643e8dc"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a1ae10bbf","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"97f49eab1f98f9c3bbb77f189e853abe8fc3c5527564e59625ffa102542910af"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a0d0f1956","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"a2544e9d4786b57840bcb29d61ad0d85281ac4053251ebe3d080f577027895e5"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"7f45b413e7aec0b73ca18a34ccfb7ea31897969e46a59a2e917e02a8f5f6b216","script":null,"value":{"assets":{},"coins":2000000}}],[{"index":0,"txId":"a410d1629a9744a3b12d25e1b046b031226afb1fd9bf697f536e92d0060341f6"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a27b1c7b4","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"abb7ad283869b201a5aaa71d01b0804f51c69b443ec9a26228831edfe2dda4e9"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"abb7ad283869b201a5aaa71d01b0804f51c69b443ec9a26228831edfe2dda4e9"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"ac7f58c472e6e7da7717b24176719af90c6a7969656ce9f20f4290aa620c2a11"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a6a4fa640","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"ace24c2c6a5976893b95380bba658153a0ea12fe0c413e5eb5fabf511e0426e5"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"ef331684af26d2630746a87c1c799658c33bbd463fb1bb5200f9e08d75b1cfcf","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"b0a9cb08baf2343ed2e008fa99e0c40870bf4a5808ea3bd557152717b448786b"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a0a4b5385","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"b126c71859f49acb0e66c752d230bfaefa17ba911651d0c381dc06fb45c83f7a"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":null,"script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":926650}}],[{"index":0,"txId":"c1ee07a1900d710aedae646583ae2d0addb908e30dbb041cd5b68816ba29e013"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"c5762253b5980109929bbec82a87ef22374b3171f91fe2b05fc051e4106321b8","script":null,"value":{"assets":{},"coins":2000000}}],[{"index":0,"txId":"c3a79a6e33e9f819c64705bb9f8f78b400df5f689565bb0d5d0aa44be5d66c76"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a3b530b5f","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"c49db08605e218cbafb03166abdebe9a67df562f73b67ddd9118e354aa551652"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"c49db08605e218cbafb03166abdebe9a67df562f73b67ddd9118e354aa551652"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"c534b4f3b1eed7fd0e6ff8d3d36edac27a1a9ac5b8d286db73bbf858d8b8c87a"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a710422fd","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"c7e9913980eb4f6737247a14696b13cb4716df4947bf3df5ef34909b41ee628e"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a453d71d1","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"c8d016048e4b3267e33d3e09c3ba07c1e9b525eebf878853acfd42bb15b50caa"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a00d4be85","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"ca3970327b8b4459086de32f4b8e9219ef61b53c38908e71f6b2a1ddd6a0ca52"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"6165f70b9ef2e55b6afbcd76cb954e0db41ad590023efab3a7ece63279c9c131","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"ca6b44e54fa9d6e03b05605e120109f887080592e95fd2261a0701556e959ed2"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a1f6c8e7d","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"cf0f1ca292155e58f02c8e5bd043e7d7a977dbaea2da4e77855bfc88767bc68b"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a181a24b1","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"cfef52763eeaaf74708cfc8a1f3b279a27df592cea535c63dbeb2009ebc9f7be"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":2000000}}],[{"index":1,"txId":"cfef52763eeaaf74708cfc8a1f3b279a27df592cea535c63dbeb2009ebc9f7be"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":0,"txId":"d667feb00c63e74f1396a15b55f5162dc810e1e73ca368e7abc85c7c13a93e92"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a0aad5901","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"d857214d81c415bd5ee82436b3e7fac80b13330e65915e1106251815e5eb2367"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"a0f6354afef3b494eb2631fa373a3afdb5637a37cf7977d634c0f2b3585daa92","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"db4b5a5d720cde36d12b044bbb50416c413aea2ed2082041969d1eeffa1517c3"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a233f96c1","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"e273e33644929cf75c588c62b942bc3809d9f09b1d652011c11285f4a7e40f45"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a51daf29f","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"e486d2fa59c4180394548c91628ec83bde3316ba3aa6d5bffeedfaafedaf69dd"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"d37538ff128704b6f6cab063873adf7269fbc0d74c1c4e5569e6e20e7af10729","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"f175000b7c8c46a9c5833c09f46eaad8d01a6b23d45d647dff391013533f445c"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"d99f5663f726f3c92e5bb860c0d8ed2658e69e72e77ec1a43b74612579fa2f57","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"f7652df0913dcafc960038dc73eb5780a956eef26a60a1c3f6a9da3c77fd563d"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"266306eff745869c186d153fedcd133d2f4576ecf69734e5a5b744974a70b596","script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"f96ebbe62e69e7b5afe95e50d7a98cab213ffc18c14258d09f4f1f4d68731356"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a1196c6f7","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"f9de6364e6690517cdd249384f04e3d29a1ce687934a21fdb7e491e4647cc5dc"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"dcb9d57264b06bb8c8e49ca79e730ce070eeb5127f2b0cfe936565a71a215a34","script":null,"value":{"assets":{},"coins":2000000}}],[{"index":0,"txId":"fa748dfef25e10dcc3b17251e416fbb17f39a9119d5126019bf62e24497affcf"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"f675d9bd238e391f837ae177e94428de15ba66ea86839125055891f9a36d3a4b","script":null,"value":{"assets":{},"coins":2000000}}],[{"index":0,"txId":"fb0bcf0c2e92d13b38182a4c1524ace28b566612c6c4be54468fcf2d1a025673"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"3a4bfc9219","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"fcbf04f3b6ac37f1c3fd6fffd9e61bbb03bd29e9893f3da454a07eddf1fe1ff7"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a570607c5","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}],[{"index":0,"txId":"ff9b105e2f444fd2ba0df3525e83071eb6534cea4db892703259bd1a2d4a5ae6"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"1a06705579","datumHash":null,"script":null,"value":{"assets":{},"coins":2479280}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-0f3cfe461ef12cb8b4fe098809df8824.json b/fixtures/test/ogmios/utxo-0f3cfe461ef12cb8b4fe098809df8824.json deleted file mode 100644 index afe9dce6a..000000000 --- a/fixtures/test/ogmios/utxo-0f3cfe461ef12cb8b4fe098809df8824.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"8785a4bec46dd68d7a702fccf60848cea6c7b3046367a3e0687e8f8bd52ed352"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"8785a4bec46dd68d7a702fccf60848cea6c7b3046367a3e0687e8f8bd52ed352"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":490862302823}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-2a97de472129f4670274098942f89427.json b/fixtures/test/ogmios/utxo-2a97de472129f4670274098942f89427.json deleted file mode 100644 index f7087d662..000000000 --- a/fixtures/test/ogmios/utxo-2a97de472129f4670274098942f89427.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"4dc27ee8d5b45bb72fc1ac014e5af7f3eb269f8a4ab495771d6453878fb8eb8c"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"4dc27ee8d5b45bb72fc1ac014e5af7f3eb269f8a4ab495771d6453878fb8eb8c"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491166700409}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-3162d868573db1663f89bfe084a436b8.json b/fixtures/test/ogmios/utxo-3162d868573db1663f89bfe084a436b8.json deleted file mode 100644 index 943f3d868..000000000 --- a/fixtures/test/ogmios/utxo-3162d868573db1663f89bfe084a436b8.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"033c65b0499bbd41da82034c8e68de450818c5c4a1b8d170bfca3403b31804c6"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":2400161}}],[{"index":2,"txId":"1666a110a07082f562167f4e7ff6a2ae23b475165bb2f2a5e9ce49393b1ce3c9"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{"771367873e016d67ba313db39968e7798656c10d6c436f10d6155bc6.7161636f696e7a6575657230":80,"771367873e016d67ba313db39968e7798656c10d6c436f10d6155bc6.7161636f696e7a6575657231":80,"771367873e016d67ba313db39968e7798656c10d6c436f10d6155bc6.7161636f696e7a6575657232":80,"771367873e016d67ba313db39968e7798656c10d6c436f10d6155bc6.7161636f696e7a6575657233":80,"771367873e016d67ba313db39968e7798656c10d6c436f10d6155bc6.7161636f696e7a6575657234":80},"coins":4000000}}],[{"index":1,"txId":"17b960276e24ce28069c4138db864038e2a4338f23c82ed5e29e58c975e64927"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":200000000}}],[{"index":0,"txId":"2d4be224276cd7166f0459f7e360737737338cc69220fc19e16eb401e12e4aa0"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"9e1199a988ba72ffd6e9c269cadb3b53b5f360ff99f112d9b2ee30c4d74ad88b","script":null,"value":{"assets":{},"coins":2400161}}],[{"index":0,"txId":"3dc59138866848d3b3210baa1818aab660913164a96d21aaa9d1aaad7d7aa0fe"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":2000161}}],[{"index":1,"txId":"4565d86864b06b97551785a6819c2dd0188a48d25e778bc472f739293f8b035e"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":200000000}}],[{"index":0,"txId":"4998abdfd1e5396c1c4a62e9653e58232fb024aa45a3e65a67b92e13c32fcde3"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":2400161}}],[{"index":1,"txId":"4beecee79dba952a122b9e0beb102271a873a5936eab1a7db355f784bf4e0687"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d8799f182aff","datumHash":null,"script":null,"value":{"assets":{},"coins":200000000}}],[{"index":0,"txId":"5a53e5ebb8fa69cd4a83aa110790ec6e4d02f673c8cfdb60d70aa4880ada6372"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":2400161}}],[{"index":1,"txId":"718be7efcc112cd179735d70b1bada08230ab79995b51c8a5ec5657231300f3c"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":200000000}}],[{"index":0,"txId":"74de507e7680c9910f83de80b33f348f0652b85e8eae86287400fa1a9674ea63"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":199823022}}],[{"index":0,"txId":"8040fbc51c8a92af73fdd490f1606a35ebbe5bad7833e26915e4ecb3873852b3"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":2400161}}],[{"index":0,"txId":"c802bb75805c0801488cd94486150c06a65bd283067f86db2bd6c7b7acd61442"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":4400080}}],[{"index":1,"txId":"dc75c99fee1db1be63205459f4f37239775a571e542d6c238ff0f0b5d24cb8b8"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{"a835ddd50365fbd94dd5d3a664e0d071ede9b92a420827ecf3c2bc78.7161636f696e616565776d30":80,"a835ddd50365fbd94dd5d3a664e0d071ede9b92a420827ecf3c2bc78.7161636f696e616565776d31":80,"a835ddd50365fbd94dd5d3a664e0d071ede9b92a420827ecf3c2bc78.7161636f696e616565776d32":80,"a835ddd50365fbd94dd5d3a664e0d071ede9b92a420827ecf3c2bc78.7161636f696e616565776d33":80,"a835ddd50365fbd94dd5d3a664e0d071ede9b92a420827ecf3c2bc78.7161636f696e616565776d34":80},"coins":4000000}}],[{"index":0,"txId":"e7eabf0367fe570e5723079b06c3a6623b205909162058103e5a74e3b518aad0"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":"d87980","datumHash":null,"script":null,"value":{"assets":{},"coins":3000000}}],[{"index":1,"txId":"e7eabf0367fe570e5723079b06c3a6623b205909162058103e5a74e3b518aad0"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec","script":{"plutus:v2":"480100002221200101"},"value":{"assets":{},"coins":1094740}}],[{"index":1,"txId":"ebba51f61b02f91be19a2b62210ac16dc95d2d73ecc7b26936da9bda12eef9d2"},{"address":"addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla","datum":null,"datumHash":"fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273","script":null,"value":{"assets":{},"coins":200000000}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-363a529fd7b30ecc96e734ef692d542a.json b/fixtures/test/ogmios/utxo-363a529fd7b30ecc96e734ef692d542a.json deleted file mode 100644 index 3e8cec99c..000000000 --- a/fixtures/test/ogmios/utxo-363a529fd7b30ecc96e734ef692d542a.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"df8242152b033550fc1ec4ceee1a2d9d1b1857c948214796f50ba5829a3f56f5"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":5000000}}],[{"index":1,"txId":"df8242152b033550fc1ec4ceee1a2d9d1b1857c948214796f50ba5829a3f56f5"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{"16af70780a170994e8e5e575f4401b1d89bddf7d1a11d6264e0b0c85.74426967546f6b656e4e616d653132":24063788,"17eb5925c69a2b88cada90d7e07eb3fcf19c2f41b66697820fc77231.74426967546f6b656e4e616d653135":24063788,"238c008ef8ead5ec20bab5733f765f897bb405c0ccb9f752d2194c0a.74426967546f6b656e4e616d653136":24063788,"2e2f143b3ccbe339145183dc2a799a469e92ab56e0d5b0bd04f54f15.112233221100":20,"34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518":4,"34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518.4154414441636f696e":20,"48664e8d76f2b15606677bd117a3eac9929c378ac547ed295518dfd5.74426967546f6b656e4e616d653032":24063788,"52366a9f74840bb47d0509393c18343f376250de1a01e0a43619e471.74426967546f6b656e4e616d653038":24063788,"540fc78fe3097c41590b696a23844f8d0c9cf2a46328bb7b77b1c7a6.74426967546f6b656e4e616d653031":24063788,"6090278d9171cd5762f24e0a63f85fabb3db950fe9944f396ffa51a1.74426967546f6b656e4e616d653230":24063788,"67ea41e56ef3f2c19765b8740c297a73048bc1615e5c537f0889d4a1.74426967546f6b656e4e616d653134":24063788,"698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d.7444524950":1000000000,"6d01f1c6f5ced9070db252fbf1fbd517f67e9e8966326205d4f0e5ea.74426967546f6b656e4e616d653131":24063788,"783c70029a88a1575459215b648ab11d182bb1acc7d709aaabc02756.74426967546f6b656e4e616d653139":24063788,"819de34b4f37b6ae3743e37f16887cacf634a4e61f40d7f0b81e2017.74426967546f6b656e4e616d653039":24063788,"8538fdebcdb68ecbf1fcfd8f2dcb478e04007e32a76047fdd86406da.74426967546f6b656e4e616d653137":24063788,"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3.6174616461":1,"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3.66756e6473":1,"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3.6d617274696e6c616e67":1,"9a7646844194fb7f71b72fe5310e26a0ae013b3916bb1a24e7066a5d.7441444f":1000005,"a465391790543ecd0f9f769ea24afbfde07007baa782724735e085a8.74426967546f6b656e4e616d653036":24063788,"ab49c4983ea2cfd43dcc32279c5ef045bb39d331309f7f0e98da939a.7453554e444145":1000000,"bdbdd5dfd883c6c00765652910091a650a21dddb3758365831bb1771.74426967546f6b656e4e616d653138":24063788,"ca757ea0352f38978a0c3737ca85f885eae4b8051cea1434a3b07f5b.74426967546f6b656e4e616d653133":24063788,"cfc398182e8197a6b39cf2db07a207866074dca9165c3c61c7972f5e.74426967546f6b656e4e616d653035":24063788,"cfdff341e1f47450c9f3a347c6d6be2f2029c891a289fc041e8f956e.74426967546f6b656e4e616d653037":24063788,"d2e5d6dd927372b34b5da66cc7bee5dffd01351a49ac007efc9cea2d.74426967546f6b656e4e616d653034":24063788,"d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f.6c71205301":1,"d40ebd57f674645d5b1826bbbe3528280463cae8f82982586faa4592.74426967546f6b656e4e616d653130":24063788,"d93a9c6d85ce15c3f19105f3be5b80c21e6c4ad3fb6b936b5b701715.434c4150":67000,"e64e887a5311dccc5a20438415fdbfe4071277a4c2ad6d3d08f13da0.74426967546f6b656e4e616d653033":24063788},"coins":11432880671}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-5cdb46215d0a19903563d94f6dbf56da.json b/fixtures/test/ogmios/utxo-5cdb46215d0a19903563d94f6dbf56da.json deleted file mode 100644 index 4b2f06e8a..000000000 --- a/fixtures/test/ogmios/utxo-5cdb46215d0a19903563d94f6dbf56da.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"30f4c0e9bf2fde50cc8d259b037709d012ff9a8301b9c6d40fa8ef471d440fff"},{"address":"addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t","datum":null,"datumHash":null,"script":null,"value":{"assets":{"6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7":1},"coins":5497316}}],[{"index":1,"txId":"5085c259cc9e09d1cf84550b829c95dc158c3027e7022fc2177bf8086ab1f496"},{"address":"addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t","datum":null,"datumHash":null,"script":null,"value":{"assets":{"2f7e0f588efe4e2836c829c50619a498ddf5521255bf5e1e9f9f5a13.46616b65555344":261},"coins":71262996}}],[{"index":3,"txId":"8bdfcfa7faa87f32c624700d1bec7fb0cd3af0ed3fb9e7a5e1121bc52433e645"},{"address":"addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t","datum":null,"datumHash":null,"script":null,"value":{"assets":{"ac1eb8870807125c83e2629d4e833f6e658c70eff57be83fde97f632.7374756666":5,"ac1eb8870807125c83e2629d4e833f6e658c70eff57be83fde97f632.74686174":3},"coins":15000000}}],[{"index":0,"txId":"a57451725fffff3ab22d136f39a333f9e42247ef5f46dabfcc1ae00ef85d2ee1"},{"address":"addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":2760077706}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-5eabe578ab04685dfdd389f51fa49c74.json b/fixtures/test/ogmios/utxo-5eabe578ab04685dfdd389f51fa49c74.json deleted file mode 100644 index 1425109c1..000000000 --- a/fixtures/test/ogmios/utxo-5eabe578ab04685dfdd389f51fa49c74.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"1c7c5e1af95ff0250fc88d19cca393e21c28a2a2a944636f6255790a892f3f23"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"1c7c5e1af95ff0250fc88d19cca393e21c28a2a2a944636f6255790a892f3f23"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491136110345}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-681f7f01fe06ae75d83187cda28c376e.json b/fixtures/test/ogmios/utxo-681f7f01fe06ae75d83187cda28c376e.json deleted file mode 100644 index d0aafe844..000000000 --- a/fixtures/test/ogmios/utxo-681f7f01fe06ae75d83187cda28c376e.json +++ /dev/null @@ -1 +0,0 @@ -[[{"txId":"2208e439244a1d0ef238352e3693098aba9de9dd0154f9056551636c8ed15dc1","index":6},{"address":"addr_test12zckk4h4asryhe4v8j4kqd0046rtxekv8hz2p4t3vq7hpev2vcrqxw2dvk6","value":{"coins":15,"assets":{"0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4.0100050404":11,"0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4.0300070405":13,"a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a":8,"a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a.010504":1,"b16b56f5ec064be6ac3cab6035efae86b366cc3dc4a0d571603d70e5.00":11}},"datumHash":"4f539156bfbefc070a3b61cad3d1cedab3050e2b2a62f0ffe16a43eb0edc1ce8","datum":null,"script":null}],[{"txId":"4f539156bfbefc070a3b61cad3d1cedab3050e2b2a62f0ffe16a43eb0edc1ce8","index":2},{"address":"addr_test12rkvh76uvxt88ury3fpvctuz9jquhs62aeqjw33cazd84avrlg6q2qgqmtmc5","value":{"coins":6,"assets":{"3542acb3a64d80c29302260d62c3b87a742ad14abf855ebc6733081e.070403010000":6,"58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7.010201":4,"65fc709a5e019b8aba76f6977c1c8770e4b36fa76f434efc588747b7":13,"b5ae663aaea8e500157bdf4baafd6f5ba0ce5759f7cd4101fc132f54.06050700":4,"bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2.05":10}},"datumHash":"bfa726c3c149165b108e6ff550cb1a1c4f0fdc2e9f26a9a16f48babe73b600ce","datum":null,"script":null}],[{"txId":"e88bd757ad5b9bedf372d8d3f0cf6c962a469db61a265f6418e1ffed86da29ec","index":4},{"address":"addr_test1gq659t9n5excps5nqgnq6ckrhpa8g2k3f2lc2h4uvuess85ymgmsspswmq6kk","value":{"coins":2,"assets":{"3542acb3a64d80c29302260d62c3b87a742ad14abf855ebc6733081e.020802050801":11,"3542acb3a64d80c29302260d62c3b87a742ad14abf855ebc6733081e.0607000301":6,"65fc709a5e019b8aba76f6977c1c8770e4b36fa76f434efc588747b7":5,"a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a.020802040307":5}},"datumHash":"03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314","datum":null,"script":null}],[{"txId":"ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25","index":7},{"address":"addr_test1yz66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74p4g2kt8fjdsrpfxq3xp43v8wr6ws4dzj4ls40tceenpq0qjnyppa","value":{"coins":12,"assets":{"58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7.08":1,"bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2.00070200":10}},"datumHash":null,"datum":"424893","script":{"native":{"all":[{"any":[{"startsAt":97176}]},{"expiresAt":20162},{"all":[{"all":["b16b56f5ec064be6ac3cab6035efae86b366cc3dc4a0d571603d70e5"]},{"any":["76e607db2a31c9a2c32761d2431a186a550cc321f79cd8d6a82b29b8"]},"e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541"]}]}}}],[{"txId":"e88bd757ad5b9bedf372d8d3f0cf6c962a469db61a265f6418e1ffed86da29ec","index":5},{"address":"addr12y659t9n5excps5nqgnq6ckrhpa8g2k3f2lc2h4uvuess85r390svpqf9ldq3","value":{"coins":0,"assets":{"4acf2773917c7b547c576a7ff110d2ba5733c1f1ca9cdc659aea3a56.040801":16,"4acf2773917c7b547c576a7ff110d2ba5733c1f1ca9cdc659aea3a56.06":6}},"datumHash":null,"datum":"448f9aabd7","script":null}],[{"txId":"0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c","index":6},{"address":"addr1qx66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74r9l3cf5hspnw9t5ahkja7pepmsujeklfm0gd80cky8g7ms5drrgh","value":{"coins":2,"assets":{}},"datumHash":null,"datum":"05","script":null}],[{"txId":"bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa","index":5},{"address":"addr_test1xq659t9n5excps5nqgnq6ckrhpa8g2k3f2lc2h4uvuess8n9l3cf5hspnw9t5ahkja7pepmsujeklfm0gd80cky8g7msa0ujqs","value":{"coins":13,"assets":{"58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7.080301000006":3,"bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2.060501":7,"bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2.0608":12}},"datumHash":null,"datum":null,"script":null}],[{"txId":"bfa726c3c149165b108e6ff550cb1a1c4f0fdc2e9f26a9a16f48babe73b600ce","index":4},{"address":"addr_test12q659t9n5excps5nqgnq6ckrhpa8g2k3f2lc2h4uvuess85y3y4swps9th6y4","value":{"coins":3,"assets":{"4acf2773917c7b547c576a7ff110d2ba5733c1f1ca9cdc659aea3a56.05060503":3,"58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7.0104":10,"58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7.02020402":4,"b5ae663aaea8e500157bdf4baafd6f5ba0ce5759f7cd4101fc132f54.01":7,"bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2":15}},"datumHash":null,"datum":null,"script":null}],[{"txId":"0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c","index":7},{"address":"addr1qx66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74r9l3cf5hspnw9t5ahkja7pepmsujeklfm0gd80cky8g7ms5drrgh","value":{"coins":2,"assets":{}},"datumHash":null,"datum":null,"script":null}]] diff --git a/fixtures/test/ogmios/utxo-72527648b478af0745e650679f674f26.json b/fixtures/test/ogmios/utxo-72527648b478af0745e650679f674f26.json deleted file mode 100644 index 781004ea0..000000000 --- a/fixtures/test/ogmios/utxo-72527648b478af0745e650679f674f26.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"96b1e8dd41ac514beef5c2d1392a6753027303d1a70e38b869c22ec7f28146b2"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"96b1e8dd41ac514beef5c2d1392a6753027303d1a70e38b869c22ec7f28146b2"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491141134250}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-7736c8109ebdd6b31eff13fb763c211f.json b/fixtures/test/ogmios/utxo-7736c8109ebdd6b31eff13fb763c211f.json deleted file mode 100644 index 4d90b1b5b..000000000 --- a/fixtures/test/ogmios/utxo-7736c8109ebdd6b31eff13fb763c211f.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"9cc22a3462c774d916f81ce060b0aef9ea9ca0534b21c1e39902ab5145853b94"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"9cc22a3462c774d916f81ce060b0aef9ea9ca0534b21c1e39902ab5145853b94"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491088657701}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-9c0cc3314813f1354f1398e17ef66032.json b/fixtures/test/ogmios/utxo-9c0cc3314813f1354f1398e17ef66032.json deleted file mode 100644 index 796cce105..000000000 --- a/fixtures/test/ogmios/utxo-9c0cc3314813f1354f1398e17ef66032.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"2738534caeafd3240c23165c4c6a9b8297f120a49eecc1b2cb71922a3b3ca7fe"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"2738534caeafd3240c23165c4c6a9b8297f120a49eecc1b2cb71922a3b3ca7fe"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491097102147}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-b9d011480174e54980dc3c4026f9d0f1.json b/fixtures/test/ogmios/utxo-b9d011480174e54980dc3c4026f9d0f1.json deleted file mode 100644 index 25dcd82f4..000000000 --- a/fixtures/test/ogmios/utxo-b9d011480174e54980dc3c4026f9d0f1.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"145261618fb064284bc7f1d8fd3ecdcd893eabc2dc7cb5b91d5adf090c26b9d2"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"145261618fb064284bc7f1d8fd3ecdcd893eabc2dc7cb5b91d5adf090c26b9d2"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491142335552}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-d751713988987e9331980363e24189ce.json b/fixtures/test/ogmios/utxo-d751713988987e9331980363e24189ce.json deleted file mode 100644 index 0637a088a..000000000 --- a/fixtures/test/ogmios/utxo-d751713988987e9331980363e24189ce.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-e62e3b660031b7653f02efc9406fd692.json b/fixtures/test/ogmios/utxo-e62e3b660031b7653f02efc9406fd692.json deleted file mode 100644 index 390c26e41..000000000 --- a/fixtures/test/ogmios/utxo-e62e3b660031b7653f02efc9406fd692.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"16ec5aa777b1724c5bddce9077356cb1e59c04e4136e1b28415d1d7a825dae96"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":1000000}}],[{"index":1,"txId":"16ec5aa777b1724c5bddce9077356cb1e59c04e4136e1b28415d1d7a825dae96"},{"address":"addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":491143545038}}]] \ No newline at end of file diff --git a/fixtures/test/ogmios/utxo-ef19a5efd09808def062e916aa2e5df5.json b/fixtures/test/ogmios/utxo-ef19a5efd09808def062e916aa2e5df5.json deleted file mode 100644 index 482fe9f31..000000000 --- a/fixtures/test/ogmios/utxo-ef19a5efd09808def062e916aa2e5df5.json +++ /dev/null @@ -1 +0,0 @@ -[[{"index":0,"txId":"c6a1c03c473753c932277634a39e8a3bacf4ae792eac174ab1e1b272d142db1f"},{"address":"addr_test1qpsfwsr4eqjfe49md9wpnyp3ws5emf4z3k6xqagvm880zgnk2wgk4wl2rz04eaqmq9fnxhyn56az0c4d3unvcvg2yw4qmkmv4t","datum":null,"datumHash":null,"script":null,"value":{"assets":{},"coins":20186944}}]] \ No newline at end of file diff --git a/flake.nix b/flake.nix index 0dd006ff4..e8d81c302 100644 --- a/flake.nix +++ b/flake.nix @@ -1,13 +1,7 @@ { description = "cardano-transaction-lib"; - nixConfig = { - extra-substituters = [ "https://cache.iog.io" ]; - extra-trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ]; - - bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; - }; - + nixConfig.bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; inputs = { nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 06b3011b2..aaa4e5117 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -170,7 +170,7 @@ import Ctl.Internal.Types.SystemStart ) import Ctl.Internal.Types.TokenName (getTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) -import Data.Argonaut.Encode.Encoders (encodeString) +import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (length, replicate) as Array import Data.Bifunctor (lmap) @@ -408,7 +408,7 @@ instance DecodeAeson ReleasedMempool where if s == "mempool" then pure $ ReleasedMempool else - Left (UnexpectedValue $ encodeString s) + Left (UnexpectedValue $ Argonaut.encodeString s) ---------------- TX SUBMISSION QUERY RESPONSE & PARSING @@ -474,6 +474,8 @@ instance Show OgmiosEraSummaries where show = genericShow instance DecodeAeson OgmiosEraSummaries where + -- There is some differences between ogmios 6.0 spec and actual results + -- in "start" "end" fields and "slotLength". decodeAeson = aesonArray (map (wrap <<< wrap) <<< traverse decodeEraSummary) where decodeEraSummary :: Aeson -> Either JsonDecodeError EraSummary diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index a7bb5c0d1..f34eb50ad 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -29,7 +29,7 @@ blockfrostFixture = ogmiosFixture :: String ogmiosFixture = - "ogmios/currentProtocolParameters-9f10850f285b1493955267e900008841.json" + "ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index cfd646067..8bc4df848 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -40,16 +40,15 @@ import Type.Proxy (Proxy(Proxy)) supported :: Array String supported = - [ "chainTip" - , "currentEpoch" - , "systemStart" - , "eraSummaries" - , "currentProtocolParameters" - , "poolIds" - , "poolParameters" - , "delegationsAndRewards" - , "SubmitTx" - , "EvaluateTx" + [ "queryNetwork/tip" + , "queryNetwork/startTime" + , "queryLedgerState/epoch" + , "queryLedgerState/eraSummaries" + , "queryLedgerState/protocolParameters" + , "queryLedgerState/stakePools" + , "queryLedgerState/rewardAccountSummaries" + , "submitTransaction" + , "evaluateTransaction" -- TODO Support plutus:v2 parameters -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/567 -- , "currentProtocolParameters-noPlutusV1" @@ -152,18 +151,18 @@ suite = group "Ogmios Aeson tests" do (const unit) (Aeson.decodeAeson aeson :: _ a) case query of - "chainTip" -> handle (Proxy :: _ O.ChainTipQR) - "currentEpoch" -> handle (Proxy :: _ O.CurrentEpoch) - "systemStart" -> handle (Proxy :: _ O.OgmiosSystemStart) - "eraSummaries" -> handle (Proxy :: _ O.OgmiosEraSummaries) - "currentProtocolParameters" -> handle + "queryNetwork/tip" -> handle (Proxy :: _ O.ChainTipQR) + "queryLedgerState/epoch" -> handle (Proxy :: _ O.CurrentEpoch) + "queryNetwork/startTime" -> handle (Proxy :: _ O.OgmiosSystemStart) + "queryLedgerState/eraSummaries" -> handle (Proxy :: _ O.OgmiosEraSummaries) + "queryLedgerState/protocolParameters" -> handle (Proxy :: _ O.OgmiosProtocolParameters) - "stakePools" -> handle + "queryLedgerState/stakePools" -> handle (Proxy :: _ O.PoolParametersR) - "delegationsAndRewards" -> handle + "queryLedgerState/rewardAccountSummaries" -> handle (Proxy :: _ O.DelegationsAndRewardsR) - "EvaluateTx" -> handle (Proxy :: _ O.TxEvaluationR) - "SubmitTx" -> handle (Proxy :: _ O.SubmitTxR) + "evaluateTransaction" -> handle (Proxy :: _ O.TxEvaluationR) + "submitTransaction" -> handle (Proxy :: _ O.SubmitTxR) _ -> liftEffect $ throw $ "Unknown case " <> bn main :: Effect Unit diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index feb5601f3..dfd02082f 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -106,11 +106,16 @@ main = let queries = - [ mkQuery' "queryLedgerState/protocolParameters" - , mkQuery' "queryLedgerState/eraSummaries" + [ + mkQuery' "queryNetwork/tip" + , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" - , mkQuery' "queryNetwork/systemStart" - , mkQuery' "queryNetwork/tip" + , mkQuery' "queryLedgerState/eraSummaries" + , mkQuery' "queryLedgerState/protocolParameters" + , mkQuery' "queryLedgerState/stakePools" + -- , mkQuery' "queryLedgerState/rewardAccountSummaries" -- hangs (?) + -- , mkQuery' "submitTransaction" + -- , mkQuery' "evaluateTransaction" ] resps <- flip parTraverse queries \(Query qc method) -> do diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index efdfc08df..778214827 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,7 +16,7 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/currentProtocolParameters.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ (decodeAeson aeson :: Either _ OgmiosProtocolParameters) `shouldSatisfy` diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 727e1d521..cce6de0c8 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -86,12 +86,12 @@ loadOgmiosFixture query hash = do eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = (unwrap :: OgmiosEraSummaries -> EraSummaries) <$> - loadOgmiosFixture "eraSummaries" "bbf8b1d7d2487e750104ec2b5a31fa86" + loadOgmiosFixture "queryLedgerState-eraSummaries" "722c02660cab6e7267fe330d2383582d" systemStartFixture :: Effect SystemStart systemStartFixture = (unwrap :: OgmiosSystemStart -> SystemStart) <$> - loadOgmiosFixture "systemStart" "ed0caad81f6936e0c122ef6f3c7de5e8" + loadOgmiosFixture "queryNetwork-startTime" "7f144fea9c3d7f1998a96806e1b0efee" testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit testPosixTimeToSlot eraSummaries sysStart = do From f9675b4e4729014e135103d9874e33d3ca9b2543 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Wed, 25 Oct 2023 23:46:18 +0200 Subject: [PATCH 385/478] Fix timeslot conversion test Update posix times to match updated erasummary/startTime fixtures, encoding --- src/Internal/QueryM/Ogmios.purs | 2 +- test/Types/Interval.purs | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index aaa4e5117..50436cfe9 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -517,7 +517,7 @@ instance EncodeAeson OgmiosEraSummaries where encodeEraSummaryParameters (EraSummaryParameters params) = encodeAeson { "epochLength": params.epochLength - , "slotLength": params.slotLength + , "slotLength": { "seconds" : params.slotLength } , "safeZone": params.safeZone } diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index cce6de0c8..9ca6994b3 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -141,21 +141,21 @@ testPosixTimeToSlot eraSummaries sysStart = do -- Notice also how 93312000 - 92880000 is a relatively small period of -- time so I expect this will change to `null` once things stabilise. posixTimes = mkPosixTime <$> - [ "1603636353000" - , "1613636755000" + [ "1678100000000" + , "1698191999000" ] traverse_ (idTest eraSummaries sysStart identity) posixTimes -- With Milliseconds, we generally round down, provided the aren't at the -- end with non-zero excess: idTest eraSummaries sysStart - (const $ mkPosixTime "1613636754000") - (mkPosixTime "1613636754999") + (const $ mkPosixTime "1666656000000") + (mkPosixTime "1666656000999") idTest eraSummaries sysStart - (const $ mkPosixTime "1613636754000") - (mkPosixTime "1613636754500") + (const $ mkPosixTime "1666656000000") + (mkPosixTime "1666656000500") idTest eraSummaries sysStart - (const $ mkPosixTime "1613636754000") - (mkPosixTime "1613636754499") + (const $ mkPosixTime "1666656000000") + (mkPosixTime "1666656000499") where idTest :: EraSummaries @@ -176,10 +176,11 @@ testSlotToPosixTime eraSummaries sysStart = do -- how far into the future we test with slots when a hardfork occurs. let slots = mkSlot <$> - [ 58278567 - , 48272312 - , 39270783 + [ 31535999 + , 31535000 , 957323 + , 259200 + , 258200 , 34952 , 7532 , 232 From 4d011bdef5a5216550444c7ba6e474e34503c163 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 29 Oct 2023 22:02:11 +0100 Subject: [PATCH 386/478] Misc --- src/Internal/Contract/QueryHandle/Type.purs | 2 +- src/Internal/QueryM.purs | 3 +- src/Internal/QueryM/Ogmios.purs | 41 +++++++++++---------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/Internal/Contract/QueryHandle/Type.purs b/src/Internal/Contract/QueryHandle/Type.purs index 3201668d9..6102dfdb4 100644 --- a/src/Internal/Contract/QueryHandle/Type.purs +++ b/src/Internal/Contract/QueryHandle/Type.purs @@ -46,7 +46,7 @@ type QueryHandle = , getChainTip :: AffE Chain.Tip , getCurrentEpoch :: Aff CurrentEpoch -- TODO Capture errors from all backends - , submitTx :: Transaction -> Aff (Either ClientError TransactionHash) + , submitTx :: Transaction -> AffE TransactionHash , evaluateTx :: Transaction -> AdditionalUtxoSet -> Aff TxEvaluationR , getEraSummaries :: AffE EraSummaries , getPoolIds :: AffE (Array PoolPubKeyHash) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index be0c95ab0..b019e4946 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -631,8 +631,7 @@ resendPendingSubmitRequests where submitSuccessPartialResp :: Aeson submitSuccessPartialResp = - encodeAeson - { "result": { "SubmitSuccess": { "txId": txHash } } } + encodeAeson $ Ogmios.submitSuccessPartialResp txHash -------------------------------------------------------------------------------- -- `MkServiceWebSocketLens` for ogmios diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 50436cfe9..1578821b8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -62,6 +62,7 @@ module Ctl.Internal.QueryM.Ogmios , queryDelegationsAndRewards , releaseMempoolCall , submitTxCall + , submitSuccessPartialResp , slotLengthFactor , parseIpv6String , rationalToSubcoin @@ -233,25 +234,6 @@ queryStakePoolsCall = mkOgmiosCallType , params: identity } --- TODO: move below, when settled. keep one query to easy in listeners. unwrap to maybe if/when params changes to Maybe (->) - --- Nothing queries all pools, otherwise query selected pools. -newtype StakePoolsQueryArgument = StakePoolsQueryArgument - (Maybe (Array PoolPubKeyHash)) - -derive instance Newtype StakePoolsQueryArgument _ - -instance EncodeAeson StakePoolsQueryArgument where - encodeAeson a = do - maybe - (encodeAeson {}) - ( \poolPkhs -> encodeAeson - { stakePools: map (\pool -> { id: pool }) poolPkhs } - ) - (unwrap a) - --- ---------------------- - queryDelegationsAndRewards :: JsonRpc2Call (Array String) DelegationsAndRewardsR -- todo: whats string? git blame line below to restore queryDelegationsAndRewards = mkOgmiosCallType @@ -412,6 +394,10 @@ instance DecodeAeson ReleasedMempool where ---------------- TX SUBMISSION QUERY RESPONSE & PARSING +submitSuccessPartialResp :: + TxHash -> { result :: { transaction :: { id :: TxHash } } } +submitSuccessPartialResp txHash = { "result": { "transaction": { "id" : txHash } } } + data SubmitTxR = SubmitTxSuccess TxHash | SubmitFail (Array Aeson) @@ -547,6 +533,23 @@ instance DecodeAeson DelegationsAndRewardsR where pure $ k /\ { rewards, delegate } pure $ DelegationsAndRewardsR $ Map.fromFoldable kvs +---------------- POOL PARAMETERS REQUEST & PARSING + +-- Nothing queries all pools, otherwise query selected pools. +newtype StakePoolsQueryArgument = StakePoolsQueryArgument + (Maybe (Array PoolPubKeyHash)) + +derive instance Newtype StakePoolsQueryArgument _ + +instance EncodeAeson StakePoolsQueryArgument where + encodeAeson a = do + maybe + (encodeAeson {}) + ( \poolPkhs -> encodeAeson + { stakePools: map (\pool -> { id: pool }) poolPkhs } + ) + (unwrap a) + ---------------- POOL PARAMETERS QUERY RESPONSE & PARSING type PoolParameters = From 3979cc1ef68807484eb3ba187d34786791b5b8b9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 30 Oct 2023 18:45:02 +0400 Subject: [PATCH 387/478] Add pprintOutputDatum --- src/Internal/Types/OutputDatum.purs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Internal/Types/OutputDatum.purs b/src/Internal/Types/OutputDatum.purs index d86385e19..cb4ff8f33 100644 --- a/src/Internal/Types/OutputDatum.purs +++ b/src/Internal/Types/OutputDatum.purs @@ -2,6 +2,7 @@ module Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) , outputDatumDataHash , outputDatumDatum + , pprintOutputDatum ) where import Prelude @@ -26,11 +27,16 @@ import Ctl.Internal.Plutus.Types.DataSchema ) import Ctl.Internal.ToData (class ToData, genericToData) import Ctl.Internal.TypeLevel.Nat (S, Z) +import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Datum (Datum) +import Ctl.Internal.Types.PlutusData (pprintPlutusData) import Ctl.Internal.Types.Transaction (DataHash) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) import Data.Show.Generic (genericShow) data OutputDatum = NoOutputDatum | OutputDatumHash DataHash | OutputDatum Datum @@ -82,6 +88,14 @@ instance DecodeAeson OutputDatum where Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString tagValue +pprintOutputDatum :: OutputDatum -> TagSet +pprintOutputDatum = TagSet.fromArray <<< case _ of + NoOutputDatum -> [ "datum" `tag` "none" ] + OutputDatumHash hash -> + [ "datumHash" `tag` byteArrayToHex (unwrap hash) ] + OutputDatum d -> + [ "datum" `tagSetTag` pprintPlutusData (unwrap d) ] + outputDatumDataHash :: OutputDatum -> Maybe DataHash outputDatumDataHash (OutputDatumHash hash) = Just hash outputDatumDataHash _ = Nothing From ba111de83c105acc834d5940dc3a6dc887e4d92f Mon Sep 17 00:00:00 2001 From: zmrocze Date: Tue, 31 Oct 2023 00:47:33 +0100 Subject: [PATCH 388/478] Parse ogmios error responses on evaluateTx --- CHANGELOG.md | 1 + src/Internal/QueryM.purs | 125 +++--------- src/Internal/QueryM/Dispatcher.purs | 9 +- src/Internal/QueryM/JsonRpc2.purs | 99 ++++++---- src/Internal/QueryM/Ogmios.purs | 296 ++++++++++------------------ 5 files changed, 184 insertions(+), 346 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e2b6282..dc3ab9e19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,6 +91,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Do not require light wallet collateral for all interactions ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) +- Ogmios updated to version 6.0.0. As a result types: EvaluationTxR, PoolParametersR, changed. ### Fixed diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index b019e4946..0fbcf8bf4 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -49,16 +49,7 @@ module Ctl.Internal.QueryM import Prelude -import Aeson - ( class DecodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - , getFieldOptional - , parseJsonStringToAeson - , stringifyAeson - ) +import Aeson (class DecodeAeson, Aeson, JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader @@ -66,12 +57,7 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode import Control.Alt (class Alt) import Control.Alternative (class Alternative) -import Control.Monad.Error.Class - ( class MonadError - , class MonadThrow - , liftEither - , throwError - ) +import Control.Monad.Error.Class (class MonadError, class MonadThrow, liftEither, throwError) import Control.Monad.Logger.Class (class MonadLogger) import Control.Monad.Reader.Class (class MonadAsk, class MonadReader) import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) @@ -79,78 +65,25 @@ import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Helpers (logWithLevel) -import Ctl.Internal.JsWebSocket - ( JsWebSocket - , Url - , _mkWebSocket - , _onWsConnect - , _onWsError - , _onWsMessage - , _removeOnWsError - , _wsClose - , _wsFinalize - , _wsSend - ) +import Ctl.Internal.JsWebSocket (JsWebSocket, Url, _mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _removeOnWsError, _wsClose, _wsFinalize, _wsSend) import Ctl.Internal.Logging (Logger, mkLogger) -import Ctl.Internal.QueryM.Dispatcher - ( DispatchError(JsError, JsonError, FaultError, ListenerCancelled) - , Dispatcher - , GenericPendingRequests - , PendingRequests - , PendingSubmitTxRequests - , RequestBody - , WebsocketDispatch - , dispatchErrorToError - , mkWebsocketDispatch - , newDispatcher - , newPendingRequests - ) as ExportDispatcher -import Ctl.Internal.QueryM.Dispatcher - ( DispatchError(JsonError, FaultError, ListenerCancelled) - , Dispatcher - , GenericPendingRequests - , PendingRequests - , PendingSubmitTxRequests - , RequestBody - , WebsocketDispatch - , dispatchErrorToError - , mkWebsocketDispatch - , newDispatcher - , newPendingRequests - ) +import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, mkWebsocketDispatch, newDispatcher, newPendingRequests) +import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError, FaultError, ListenerCancelled), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, dispatchErrorToError, mkWebsocketDispatch, newDispatcher, newPendingRequests) as ExportDispatcher +import Ctl.Internal.QueryM.JsonRpc2 (parseJsonRpc2Response) import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 -import Ctl.Internal.QueryM.Ogmios - ( AdditionalUtxoSet - , DelegationsAndRewardsR - , OgmiosProtocolParameters - , PoolParametersR - , ReleasedMempool - , StakePoolsQueryArgument - , TxHash - , aesonObject - ) +import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, DelegationsAndRewardsR, OgmiosProtocolParameters, PoolParametersR, ReleasedMempool, StakePoolsQueryArgument, TxHash) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.UniqueId (ListenerId) -import Ctl.Internal.ServerConfig - ( Host - , ServerConfig - , defaultOgmiosWsConfig - , mkHttpUrl - , mkServerUrl - , mkWsUrl - ) as ExportServerConfig +import Ctl.Internal.ServerConfig (Host, ServerConfig, defaultOgmiosWsConfig, mkHttpUrl, mkServerUrl, mkWsUrl) as ExportServerConfig import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) -import Ctl.Internal.Service.Error - ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) - , ServiceError(ServiceOtherError) - ) +import Ctl.Internal.Service.Error (ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError), ServiceError(ServiceOtherError)) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) -import Data.Bifunctor (lmap) +import Data.Bifunctor (bimap, lmap) import Data.Either (Either(Left, Right), either, isRight) import Data.Foldable (foldl) import Data.HTTP.Method (Method(POST)) @@ -164,15 +97,7 @@ import Data.Traversable (for_, traverse_) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) -import Effect.Aff - ( Aff - , Canceler(Canceler) - , ParAff - , delay - , launchAff_ - , makeAff - , runAff_ - ) +import Effect.Aff (Aff, Canceler(Canceler), ParAff, delay, launchAff_, makeAff, runAff_) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) @@ -730,7 +655,7 @@ type OgmiosListeners = type ListenerSet (request :: Type) (response :: Type) = { addMessageListener :: ListenerId - -> (Either DispatchError response -> Effect Unit) + -> (Aeson -> Effect Unit) -> Effect Unit , removeMessageListener :: ListenerId -> Effect Unit -- ^ Removes ID from dispatch map and pending requests queue. @@ -743,20 +668,15 @@ type SubmitTxListenerSet = ListenerSet (TxHash /\ CborBytes) Ogmios.SubmitTxR mkAddMessageListener :: forall (response :: Type) - . DecodeAeson response - => Dispatcher + . Dispatcher -> ( ListenerId - -> (Either DispatchError response -> Effect Unit) + -> (Aeson -> Effect Unit) -> Effect Unit ) mkAddMessageListener dispatcher = \reflection handler -> flip Ref.modify_ dispatcher $ - Map.insert reflection \aeson -> handler $ - case (aesonObject (flip getFieldOptional "result") aeson) of - Left err -> Left (JsonError err) - Right (Just result) -> Right result - Right Nothing -> Left (FaultError aeson) + Map.insert reflection handler mkRemoveMessageListener :: forall (requestData :: Type) @@ -771,9 +691,8 @@ mkRemoveMessageListener dispatcher pendingRequests = -- we manipluate closures to make the DispatchIdMap updateable using these -- methods, this can be picked up by a query or cancellation function mkListenerSet - :: forall (request :: Type) (response :: Type) - . DecodeAeson response - => Dispatcher + :: forall (request :: Type) (response :: Type) + . Dispatcher -> PendingRequests -> ListenerSet request response mkListenerSet dispatcher pendingRequests = @@ -864,11 +783,10 @@ mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do affFunc :: (Either Error response -> Effect Unit) -> Effect Canceler affFunc cont = do _ <- respLs.addMessageListener id - ( \result -> do + ( \aeson -> do respLs.removeMessageListener id - case result of - Left (ListenerCancelled _) -> pure unit - _ -> cont (lmap dispatchErrorToError result) + cont $ bimap jsonDecodeError identity $ + parseJsonRpc2Response jsonRpc2Call aeson ) respLs.addRequest id (sBody /\ input) _wsSend webSocket (logger Debug) sBody @@ -879,6 +797,9 @@ mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do pure $ Canceler $ \err -> do liftEffect $ respLs.removeMessageListener id liftEffect $ throwError $ err + + jsonDecodeError :: JsonDecodeError -> Error + jsonDecodeError err = error $ ("(Couldn't decode ogmios response: " <> show err <> ")") makeAff affFunc -- an empty error we can compare to, useful for ensuring we've not received any other kind of error diff --git a/src/Internal/QueryM/Dispatcher.purs b/src/Internal/QueryM/Dispatcher.purs index 9f93c1a88..7be1da08c 100644 --- a/src/Internal/QueryM/Dispatcher.purs +++ b/src/Internal/QueryM/Dispatcher.purs @@ -1,5 +1,5 @@ module Ctl.Internal.QueryM.Dispatcher - ( DispatchError(JsError, JsonError, FaultError, ListenerCancelled) + ( DispatchError(JsonError, FaultError, ListenerCancelled) , Dispatcher , GenericPendingRequests , PendingRequests @@ -24,13 +24,12 @@ import Data.Map (empty, lookup) as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Tuple.Nested (type (/\)) import Effect (Effect) -import Effect.Exception (Error, error, message) +import Effect.Exception (Error, error) import Effect.Ref (Ref) import Effect.Ref (new, read) as Ref data DispatchError - = JsError Error - | JsonError JsonDecodeError + = JsonError JsonDecodeError -- Server response has been parsed succesfully, but it contains error -- message | FaultError Aeson @@ -38,14 +37,12 @@ data DispatchError | ListenerCancelled ListenerId instance Show DispatchError where - show (JsError err) = "(JsError (message " <> show (message err) <> "))" show (JsonError jsonErr) = "(JsonError " <> show jsonErr <> ")" show (FaultError aeson) = "(FaultError " <> show aeson <> ")" show (ListenerCancelled listenerId) = "(ListenerCancelled " <> show listenerId <> ")" dispatchErrorToError :: DispatchError -> Error -dispatchErrorToError (JsError err) = err dispatchErrorToError (JsonError err) = error $ show err dispatchErrorToError (FaultError err) = error $ "Server responded with `fault`: " <> stringifyAeson err diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 8695c838f..0879a2cf4 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -1,30 +1,26 @@ -- | Provides basics types and operations for working with JSON RPC protocol -- | used by Ogmios module Ctl.Internal.QueryM.JsonRpc2 - ( JsonRpc2Request - , JsonRpc2Response - , JsonRpc2Call - , mkCallType + ( JsonRpc2Call + , JsonRpc2Request , buildRequest + , mkCallType , parseJsonRpc2Response + , ParseResponse(ParseResponse) + , JsonRpc2Response + , successResponse + , anyResponse , parseJsonRpc2ResponseId - ) where + ) + where import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , encodeAeson - , getField - , getFieldOptional - ) +import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(..), caseAesonObject, decodeAeson, encodeAeson, getField, getFieldOptional) import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) -import Data.Either (Either(Left)) -import Data.Maybe (Maybe) +import Control.Alt ((<|>)) +import Data.Either (Either(..)) +import Data.Maybe (Maybe, fromMaybe) import Effect (Effect) import Foreign.Object (Object) import Record as Record @@ -54,19 +50,38 @@ mkJsonRpc2Request service method = do -- | Structure of all json rpc websocket responses -- described in: https://ogmios.dev/getting-started/basics/ -type JsonRpc2Response (a :: Type) = +type JsonRpc2Response = { jsonrpc :: String -- methodname is not always present if `error` is not empty , method :: Maybe String - , result :: Maybe a + , result :: Maybe Aeson , error :: Maybe Aeson , id :: ListenerId } +data ParseResponse (o :: Type) = ParseResponse (JsonRpc2Response -> Either JsonDecodeError o) + +successResponse :: forall o. DecodeAeson o => ParseResponse o +successResponse = ParseResponse $ \res -> do + result <- fromMaybe (Left (AtKey "result" MissingValue)) (pure <$> res.result) + decodeAeson result + +anyResponse :: forall a. (Aeson -> Either JsonDecodeError a) -> (Aeson -> Either JsonDecodeError a) -> ParseResponse a +anyResponse decodeError decodeResult = ParseResponse $ \{result, error} -> parseError error <|> parseResult result + where + + parseResult result = do + res <- fromMaybe (Left $ AtKey "result" MissingValue) $ pure <$> result + decodeResult res + + parseError error = do + err <- fromMaybe (Left $ AtKey "error" MissingValue) (pure <$> error) + decodeError err + -- | A wrapper for tying arguments and response types to request building. -newtype JsonRpc2Call :: Type -> Type -> Type -newtype JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call - (i -> Effect { body :: Aeson, id :: String }) +data JsonRpc2Call :: Type -> Type -> Type +data JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call + (ParseResponse o) (i -> Effect { body :: Aeson, id :: String }) -- | Creates a "jsonrpc call" which ties together request input and response output types -- | along with a way to create a request object. @@ -74,9 +89,10 @@ mkCallType :: forall (a :: Type) (i :: Type) (o :: Type) . EncodeAeson (JsonRpc2Request a) => { jsonrpc :: String } + -> ParseResponse o -> { method :: String, params :: i -> a } -> JsonRpc2Call i o -mkCallType service { method, params } = JsonRpc2Call $ \i -> do +mkCallType service response { method, params } = JsonRpc2Call response $ \i -> do req <- mkJsonRpc2Request service { method, params: params i } pure { body: encodeAeson req, id: req.id } @@ -86,27 +102,26 @@ buildRequest . JsonRpc2Call i o -> i -> Effect { body :: Aeson, id :: String } -buildRequest (JsonRpc2Call c) = c +buildRequest (JsonRpc2Call _ c) = c -- | Polymorphic response parser -parseJsonRpc2Response - :: forall (a :: Type) - . DecodeAeson a - => Aeson - -> Either JsonDecodeError (JsonRpc2Response a) -parseJsonRpc2Response = aesonObject $ \o -> do - jsonrpc <- getField o "jsonrpc" - method <- getFieldOptional o "method" - result <- getFieldOptional o "result" - error <- getFieldOptional o "error" - id <- getField o "id" - pure - { jsonrpc - , method - , result - , error - , id - } +parseJsonRpc2Response :: forall (i :: Type) (o :: Type) + . JsonRpc2Call i o -> Aeson -> Either JsonDecodeError o +parseJsonRpc2Response (JsonRpc2Call (ParseResponse parse) _) aeson = do + res <- flip aesonObject aeson $ \o -> do + jsonrpc <- getField o "jsonrpc" + method <- getFieldOptional o "method" + result <- getFieldOptional o "result" + error <- getFieldOptional o "error" + id <- getField o "id" + pure + { jsonrpc + , method + , result + , error + , id + } + parse res -- | Parse just ID from the response parseJsonRpc2ResponseId diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 1578821b8..db07beda8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -27,8 +27,8 @@ module Ctl.Internal.QueryM.Ogmios , ValidatorFailed , UnknownInputReferencedByRedeemer , NonScriptInputReferencedByRedeemer - , IllFormedExecutionBudget , NoCostModelForLanguage + , InternalLedgerTypeConversionError ) , AdditionalUtxoSet(AdditionalUtxoSet) , OgmiosUtxoMap @@ -38,6 +38,7 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosSystemStart(OgmiosSystemStart) , OgmiosTxIn , OgmiosTxId + , OgmiosError , SubmitTxR(SubmitTxSuccess, SubmitFail) , StakePoolsQueryArgument(StakePoolsQueryArgument) , TxEvaluationFailure(UnparsedError, ScriptFailures) @@ -70,110 +71,40 @@ module Ctl.Internal.QueryM.Ogmios import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , caseAesonArray - , caseAesonObject - , caseAesonString - , decodeAeson - , encodeAeson - , fromArray - , fromString - , getField - , isNull - , stringifyAeson - , (.:) - , (.:?) - ) +import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(..), caseAesonArray, caseAesonObject, caseAesonString, decodeAeson, encodeAeson, fromArray, fromString, getField, isNull, (.:), (.:?)) import Control.Alt ((<|>)) import Control.Alternative (guard) -import Control.Monad.Reader.Trans (ReaderT(ReaderT), runReaderT) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( CostModel(CostModel) - , Costmdls(Costmdls) - , ExUnitPrices - , ExUnits - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , PoolPubKeyHash - , Relay(MultiHostName, SingleHostAddr, SingleHostName) - , SubCoin - , URL(URL) - , UnitInterval - ) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , Value - , getCurrencySymbol - , getLovelace - , getNonAdaAsset - , unwrapNonAdaAsset - , valueToCoin - ) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Ctl.Internal.Cardano.Types.Transaction (CostModel(CostModel), Costmdls(Costmdls), ExUnitPrices, ExUnits, Ipv4(Ipv4), Ipv6(Ipv6), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), PoolPubKeyHash, Relay(MultiHostName, SingleHostAddr, SingleHostName), SubCoin, URL(URL), UnitInterval) +import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value, getCurrencySymbol, getLovelace, getNonAdaAsset, unwrapNonAdaAsset, valueToCoin) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) -import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, mkCallType) +import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, ParseResponse, anyResponse, mkCallType, successResponse) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.ByteArray - ( ByteArray - , byteArrayFromIntArray - , byteArrayToHex - , hexToByteArray - ) +import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayFromIntArray, byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries - ( EraSummaries(EraSummaries) - , EraSummary(EraSummary) - , EraSummaryParameters(EraSummaryParameters) - ) +import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries), EraSummary(EraSummary), EraSummaryParameters(EraSummaryParameters)) import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromString) as Natural -import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoByte) - , ProtocolParameters(ProtocolParameters) - ) +import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoByte), ProtocolParameters(ProtocolParameters)) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , PlutusScript(PlutusScript) - ) -import Ctl.Internal.Types.SystemStart - ( SystemStart - , sysStartFromOgmiosTimestamp - , sysStartToOgmiosTimestamp - ) +import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2), PlutusScript(PlutusScript)) +import Ctl.Internal.Types.SystemStart (SystemStart, sysStartFromOgmiosTimestamp, sysStartToOgmiosTimestamp) import Ctl.Internal.Types.TokenName (getTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) -import Data.Array (length, replicate) as Array +import Data.Array (fromFoldable, length, replicate) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt @@ -181,6 +112,8 @@ import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) import Data.Int (fromString) as Int +import Data.List (List) +import Data.List as List import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) @@ -196,7 +129,6 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Data.UInt as UInt import Foreign.Object (Object) -import Foreign.Object (toUnfoldable) as ForeignObject import Foreign.Object as Object import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) @@ -255,7 +187,8 @@ type OgmiosAddress = String -- | Sends a serialized signed transaction with its full witness through the -- | Cardano network via Ogmios. submitTxCall :: JsonRpc2Call (TxHash /\ CborBytes) SubmitTxR -submitTxCall = mkOgmiosCallType +submitTxCall = mkOgmiosCallTypeFull + parseSubmitTxR { method: "submitTransaction" , params: \(_ /\ cbor) -> { transaction: { cbor: cborBytesToHex cbor } @@ -265,7 +198,8 @@ submitTxCall = mkOgmiosCallType -- | Evaluates the execution units of scripts present in a given transaction, -- | without actually submitting the transaction. evaluateTxCall :: JsonRpc2Call (CborBytes /\ AdditionalUtxoSet) TxEvaluationR -evaluateTxCall = mkOgmiosCallType +evaluateTxCall = mkOgmiosCallTypeFull + (anyResponse (map (TxEvaluationR <<< Left) <<< decodeAeson) (map (TxEvaluationR <<< Right) <<< decodeAeson)) { method: "evaluateTransaction" , params: \(cbor /\ utxoqr) -> { transaction: { cbor: cborBytesToHex cbor } @@ -311,16 +245,26 @@ releaseMempoolCall _ = -------------------------------------------------------------------------------- mkOgmiosCallTypeNoArgs - :: forall (o :: Type). String -> JsonRpc2Call Unit o + :: forall (o :: Type). DecodeAeson o => String -> JsonRpc2Call Unit o mkOgmiosCallTypeNoArgs method = mkOgmiosCallType { method, params: const {} } mkOgmiosCallType :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonRpc2Request a) + . EncodeAeson (JsonRpc2Request a) + => DecodeAeson o => { method :: String, params :: i -> a } -> JsonRpc2Call i o mkOgmiosCallType = + mkCallType { jsonrpc: "2.0" } successResponse + +mkOgmiosCallTypeFull + :: forall (a :: Type) (i :: Type) (o :: Type) + . EncodeAeson (JsonRpc2Request a) + => ParseResponse o + -> { method :: String, params :: i -> a } + -> JsonRpc2Call i o +mkOgmiosCallTypeFull = mkCallType { jsonrpc: "2.0" } -------------------------------------------------------------------------------- @@ -400,7 +344,7 @@ submitSuccessPartialResp txHash = { "result": { "transaction": { "id" : txHash } data SubmitTxR = SubmitTxSuccess TxHash - | SubmitFail (Array Aeson) + | SubmitFail OgmiosError derive instance Generic SubmitTxR _ @@ -409,13 +353,20 @@ instance Show SubmitTxR where type TxHash = ByteArray -instance DecodeAeson SubmitTxR where - decodeAeson = aesonObject $ - \o -> +type OgmiosError = { code :: Int, message :: String, data :: Aeson } + +parseSubmitTxR :: ParseResponse SubmitTxR +parseSubmitTxR = anyResponse parseError (map SubmitTxSuccess <<< parseResult) + where + + parseResult = aesonObject $ \o -> ( getField o "transaction" >>= flip getField "id" >>= hexToByteArray - >>> maybe (Left (TypeMismatch "Expected hexstring")) - (pure <<< SubmitTxSuccess) - ) <|> (SubmitFail <$> getField o "SubmitFail") + >>> maybe (Left (TypeMismatch "Expected hexstring")) pure + ) + + parseError aeson = do + err :: OgmiosError <- decodeAeson aeson + pure $ SubmitFail err ---------------- SYSTEM START QUERY RESPONSE & PARSING newtype OgmiosSystemStart = OgmiosSystemStart SystemStart @@ -703,9 +654,6 @@ derive instance Generic TxEvaluationR _ instance Show TxEvaluationR where show = genericShow -instance DecodeAeson TxEvaluationR where - decodeAeson aeson = (wrap <<< Right <$> decodeAeson aeson) <|> - (wrap <<< Left <$> decodeAeson aeson) newtype TxEvaluationResult = TxEvaluationResult (Map RedeemerPointer ExecutionUnits) @@ -720,16 +668,14 @@ instance DecodeAeson TxEvaluationResult where decodeAeson = aesonArray $ \array -> do TxEvaluationResult <<< Map.fromFoldable <$> traverse decodeRdmrPtrExUnitsItem array + where decodeRdmrPtrExUnitsItem :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) decodeRdmrPtrExUnitsItem elem = do - (redeemerPtrRaw /\ exUnitsAeson) :: String /\ Aeson <- decodeAeson elem - redeemerPtr <- decodeRedeemerPointer redeemerPtrRaw - flip aesonObject exUnitsAeson $ \exUnitsObj -> do - memory <- getField exUnitsObj "memory" - cpu <- getField exUnitsObj "cpu" - pure $ redeemerPtr /\ { memory, steps: cpu } + res :: { validator :: String, budget :: { memory :: Natural, cpu :: Natural} } <- decodeAeson elem + redeemerPtr <- decodeRedeemerPointer res.validator + pure $ redeemerPtr /\ { memory : res.budget.memory, steps: res.budget.cpu } redeemerPtrTypeMismatch :: JsonDecodeError redeemerPtrTypeMismatch = TypeMismatch @@ -752,17 +698,14 @@ type OgmiosTxIn = { txId :: OgmiosTxId, index :: Int } data ScriptFailure = ExtraRedeemers (Array RedeemerPointer) - | MissingRequiredDatums - { provided :: Maybe (Array OgmiosDatum), missing :: Array OgmiosDatum } - | MissingRequiredScripts - { resolved :: Map RedeemerPointer OgmiosScript - , missing :: Array OgmiosScript - } + | MissingRequiredDatums (Array OgmiosDatum) + | MissingRequiredScripts (Array RedeemerPointer) | ValidatorFailed { error :: String, traces :: Array String } | UnknownInputReferencedByRedeemer OgmiosTxIn | NonScriptInputReferencedByRedeemer OgmiosTxIn - | IllFormedExecutionBudget (Maybe ExecutionUnits) - | NoCostModelForLanguage String + -- | IllFormedExecutionBudget (Maybe ExecutionUnits) + | NoCostModelForLanguage (Array String) + | InternalLedgerTypeConversionError String derive instance Generic ScriptFailure _ @@ -775,7 +718,7 @@ instance Show ScriptFailure where -- NotEnoughSynced -- CannotCreateEvaluationContext data TxEvaluationFailure - = UnparsedError String + = UnparsedError OgmiosError | ScriptFailures (Map RedeemerPointer (Array ScriptFailure)) derive instance Generic TxEvaluationFailure _ @@ -783,93 +726,54 @@ derive instance Generic TxEvaluationFailure _ instance Show TxEvaluationFailure where show = genericShow -type ObjectParser = ReaderT (Object Aeson) (Either JsonDecodeError) - -liftField - :: forall (a :: Type) (b :: Type) - . DecodeAeson a - => String - -> (a -> Either JsonDecodeError b) - -> ObjectParser b -liftField f act = ReaderT (flip getField f >=> act) - instance DecodeAeson ScriptFailure where - decodeAeson = aesonObject $ runReaderT cases - where - cases :: ObjectParser ScriptFailure - cases = decodeExtraRedeemers - <|> decodeMissingRequiredDatums - <|> decodeMissingRequiredScripts - <|> decodeValidatorFailed - <|> decodeUnknownInputReferencedByRedeemer - <|> decodeNonScriptInputReferencedByRedeemer - <|> decodeIllFormedExecutionBudget - <|> decodeNoCostModelForLanguage - <|> defaultCase - - defaultCase :: ObjectParser ScriptFailure - defaultCase = ReaderT $ const $ Left $ TypeMismatch "Expected ScriptFailure" - - decodeExtraRedeemers :: ObjectParser ScriptFailure - decodeExtraRedeemers = ExtraRedeemers <$> liftField "extraRedeemers" - (traverse decodeRedeemerPointer) - - decodeMissingRequiredDatums :: ObjectParser ScriptFailure - decodeMissingRequiredDatums = liftField "missingRequiredDatums" \o -> do - pure $ MissingRequiredDatums o - - decodeMissingRequiredScripts :: ObjectParser ScriptFailure - decodeMissingRequiredScripts = liftField "missingRequiredScripts" \o -> do - resolvedKV <- ForeignObject.toUnfoldable <$> getField o "resolved" - resolved <- Map.fromFoldable <$> for (resolvedKV :: Array _) - \(k /\ v) -> (_ /\ v) <$> decodeRedeemerPointer k - missing <- getField o "missing" - pure $ MissingRequiredScripts { resolved, missing } - - decodeValidatorFailed :: ObjectParser ScriptFailure - decodeValidatorFailed = liftField "validatorFailed" \o -> do - pure $ ValidatorFailed o - - decodeUnknownInputReferencedByRedeemer :: ObjectParser ScriptFailure - decodeUnknownInputReferencedByRedeemer = liftField - "unknownInputReferencedByRedeemer" - \o -> do - pure $ UnknownInputReferencedByRedeemer o - - decodeNonScriptInputReferencedByRedeemer :: ObjectParser ScriptFailure - decodeNonScriptInputReferencedByRedeemer = liftField - "nonScriptInputReferencedByRedeemer" - \o -> do - pure $ NonScriptInputReferencedByRedeemer o - - decodeIllFormedExecutionBudget :: ObjectParser ScriptFailure - decodeIllFormedExecutionBudget = liftField "illFormedExecutionBudget" \o -> - do - pure $ IllFormedExecutionBudget o - - decodeNoCostModelForLanguage :: ObjectParser ScriptFailure - decodeNoCostModelForLanguage = liftField "noCostModelForLanguage" \o -> do - pure $ NoCostModelForLanguage o + decodeAeson aeson = do + error :: OgmiosError <- decodeAeson aeson + case error.code of + 3011 -> do + res :: { missingScript :: Array String } <- decodeAeson error.data + MissingRequiredScripts <$> traverse decodeRedeemerPointer res.missingScript + 3012 -> do + res :: { validationError :: String, traces :: Array String } <- decodeAeson error.data + pure $ ValidatorFailed {error : res.validationError, traces : res.traces} + 3013 -> do + res :: { unsuitableOutputReference :: { transaction :: { id :: String}, index :: Int} } <- decodeAeson error.data + pure $ NonScriptInputReferencedByRedeemer { index: res.unsuitableOutputReference.index, txId : res.unsuitableOutputReference.transaction.id } + 3110 -> do + res :: { extraneousRedeemers :: Array String } <- decodeAeson error.data + ExtraRedeemers <$> traverse decodeRedeemerPointer res.extraneousRedeemers + 3111 -> do + res :: { missingDatums :: Array String } <- decodeAeson error.data + pure $ MissingRequiredDatums res.missingDatums + 3117 -> do + res :: { unknownOutputReference :: { transaction :: { id :: String}, index :: Int} } <- decodeAeson error.data + let res' = res.unknownOutputReference + pure $ UnknownInputReferencedByRedeemer { index: res'.index, txId : res'.transaction.id } + 3115 -> do + res :: { missingCostModels :: Array String } <- decodeAeson error.data + pure $ NoCostModelForLanguage res.missingCostModels + 3999 -> pure $ InternalLedgerTypeConversionError error.message + _ -> Left $ TypeMismatch $ "Unknown ogmios error code: " <> show error.code instance DecodeAeson TxEvaluationFailure where - decodeAeson = aesonObject $ runReaderT cases + decodeAeson aeson = do + error :: OgmiosError <- decodeAeson aeson + case error.code of + -- ScriptExecutionFailure + 3010 -> flip aesonArray error.data $ (\array -> + (ScriptFailures <<< map Array.fromFoldable <<< collectIntoMap <$> traverse parseElem array)) + -- All other errors + _ -> pure $ UnparsedError error + where - cases :: ObjectParser TxEvaluationFailure - cases = decodeScriptFailures <|> defaultCase - - defaultCase :: ObjectParser TxEvaluationFailure - defaultCase = ReaderT \o -> - pure (UnparsedError (stringifyAeson (encodeAeson o))) - - decodeScriptFailures :: ObjectParser TxEvaluationFailure - decodeScriptFailures = ReaderT \o -> do - scriptFailuresKV <- ForeignObject.toUnfoldable - <$> (getField o "EvaluationFailure" >>= flip getField "ScriptFailures") - scriptFailures <- Map.fromFoldable <$> for (scriptFailuresKV :: Array _) - \(k /\ v) -> do - v' <- decodeAeson v - (_ /\ v') <$> decodeRedeemerPointer k - pure $ ScriptFailures scriptFailures + parseElem elem = do + res :: { validator :: String, error :: ScriptFailure } <- decodeAeson elem + (_ /\ res.error) <$> decodeRedeemerPointer res.validator + + collectIntoMap :: forall k v. Ord k => Array (k /\ v) -> Map k (List v) + collectIntoMap = foldl + (\m (k /\ v) -> Map.alter (maybe (Just $ List.singleton v) (Just <<< List.Cons v)) k m) + Map.empty ---------------- PROTOCOL PARAMETERS QUERY RESPONSE & PARSING From ef7db5352d99f60997d639e4718dc67c01f0420a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 31 Oct 2023 18:53:16 +0400 Subject: [PATCH 389/478] Refactor pretty-printing code --- src/Contract/ScriptLookups.purs | 27 -- src/Contract/UnbalancedTx.purs | 250 +------------------ src/Internal/Cardano/Types/NativeScript.purs | 26 +- src/Internal/Helpers.purs | 16 +- src/Internal/Plutus/Types/Transaction.purs | 30 ++- src/Internal/ProcessConstraints/Error.purs | 142 ++++++++++- 6 files changed, 197 insertions(+), 294 deletions(-) diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 48091e0d8..3e489fba0 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -2,33 +2,6 @@ -- | transaction. module Contract.ScriptLookups (module X) where -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ( CannotFindDatum - , CannotQueryDatum - , CannotConvertPOSIXTimeRange - , CannotSolveTimeConstraints - , CannotGetMintingPolicyScriptIndex - , CannotGetValidatorHashFromAddress - , CannotMakeValue - , CannotWithdrawRewardsPubKey - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsNativeScript - , DatumNotFound - , DatumWrongHash - , MintingPolicyHashNotCurrencySymbol - , MintingPolicyNotFound - , ModifyTx - , OwnPubKeyAndStakeKeyMissing - , TxOutRefNotFound - , TxOutRefWrongType - , ValidatorHashNotFound - , WrongRefScriptHash - , CannotSatisfyAny - , ExpectedPlutusScriptGotNativeScript - , CannotMintZero - ) - ) as X import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 07fa6c27b..785c0246f 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -3,7 +3,6 @@ module Contract.UnbalancedTx ( mkUnbalancedTx , mkUnbalancedTxE - , explainMkUnbalancedTxError , module X ) where @@ -11,51 +10,10 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) -import Ctl.Internal.Cardano.Types.Value - ( getCurrencySymbol - , pprintValue - ) -import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) -import Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( CannotFindDatum - , CannotQueryDatum - , CannotConvertPOSIXTimeRange - , CannotSolveTimeConstraints - , CannotGetMintingPolicyScriptIndex - , CannotGetValidatorHashFromAddress - , CannotMakeValue - , CannotWithdrawRewardsPubKey - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsNativeScript - , DatumNotFound - , DatumWrongHash - , MintingPolicyHashNotCurrencySymbol - , MintingPolicyNotFound - , ModifyTx - , OwnPubKeyAndStakeKeyMissing - , TxOutRefNotFound - , TxOutRefWrongType - , WrongRefScriptHash - , ValidatorHashNotFound - , CannotSatisfyAny - , ExpectedPlutusScriptGotNativeScript - , CannotMintZero - ) + , explainMkUnbalancedTxError ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError @@ -83,39 +41,13 @@ import Ctl.Internal.ProcessConstraints.Error , ExpectedPlutusScriptGotNativeScript , CannotMintZero ) + , explainMkUnbalancedTxError ) as X import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X -import Ctl.Internal.Serialization.Address (addressBech32) -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashToBytes - , scriptHashToBytes - ) -import Ctl.Internal.Transaction (explainModifyTxError) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) -import Ctl.Internal.Types.Interval (explainPosixTimeToSlotError) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.PlutusData (pprintPlutusData) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.ScriptLookups - ( ScriptLookups - ) -import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) -import Ctl.Internal.Types.TokenName (TokenName, fromTokenName) -import Ctl.Internal.Types.Transaction - ( DataHash(DataHash) - , TransactionInput(TransactionInput) - ) +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Data.Either (Either(Left, Right)) -import Data.FoldableWithIndex (foldMapWithIndex) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe(Nothing, Just)) -import Data.Newtype (unwrap) -import Data.String as String -import Data.Tuple.Nested ((/\)) import Effect.Exception (error) -- | Create an `UnbalancedTx` given `ScriptLookups` and @@ -136,179 +68,3 @@ mkUnbalancedTx lookups constraints = mkUnbalancedTxE lookups constraints >>= case _ of Left err -> throwError $ error $ explainMkUnbalancedTxError err Right res -> pure res - --- | Helper to pretty-print `MkUnbalancedTxError`s. -explainMkUnbalancedTxError :: MkUnbalancedTxError -> String -explainMkUnbalancedTxError = case _ of - CannotFindDatum -> "Cannot find datum" - CannotQueryDatum (DataHash dh) -> - "Querying for datum by datum hash (" - <> byteArrayToHex dh - <> - ") failed: no datum found" - CannotConvertPOSIXTimeRange tr ttsErr -> - "Cannot convert POSIX time range to slot time range.\nRange: " - <> show tr - <> "\nReason: " - <> - explainPosixTimeToSlotError ttsErr - CannotSolveTimeConstraints tr tr' -> - "Unsolvable time constraints: " <> show tr <> " and " <> show tr' <> - " do not overlap." - CannotGetMintingPolicyScriptIndex -> - "Cannot get minting policy script index. This should be impossible.\n" - <> "Please report this as a bug here: " - <> bugTrackerLink - CannotGetValidatorHashFromAddress addr -> - "Cannot get a payment validator hash from address " <> - addressBech32 addr - CannotMakeValue _ tn _ -> - "Attempted to make an amount with the ADA currency symbol, and non-empty token name " - <> prettyTokenName tn - <> - ". This is not allowed, as the ADA currency symbol can only be combined with the empty token name." - CannotWithdrawRewardsPubKey spkh -> - "Cannot withdraw rewards, as pubkey " - <> rawBytesToHex (ed25519KeyHashToBytes $ unwrap $ unwrap spkh) - <> - " is not registered" - CannotWithdrawRewardsPlutusScript pssv -> - "Cannot withdraw rewards from Plutus staking script " <> - prettyPlutusScript (unwrap pssv) - CannotWithdrawRewardsNativeScript nssv -> - "Cannot withdraw rewards from native staking script " <> - prettyNativeScript 0 (unwrap nssv) - DatumNotFound (DataHash hash) -> "Datum with hash " <> byteArrayToHex hash <> - " not found." - DatumWrongHash (DataHash dh) datum -> "Datum " - <> show datum - <> " does not have the hash " - <> byteArrayToHex dh - MintingPolicyHashNotCurrencySymbol mph -> - "Minting policy hash " - <> rawBytesToHex (scriptHashToBytes $ unwrap mph) - <> - " is not a CurrencySymbol. Please check the validity of the byte representation." - MintingPolicyNotFound mp -> "Minting policy with hash " - <> rawBytesToHex (scriptHashToBytes $ unwrap mp) - <> " not found in a set of minting policies" - ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr - OwnPubKeyAndStakeKeyMissing -> - "Could not build own address: both payment pubkey and stake pubkey are missing" - TxOutRefNotFound ti -> - "Could not find a reference input:\n" - <> prettyTxIn ti - <> "\nIt maybe have been consumed, or was never created." - TxOutRefWrongType ti -> - "Transaction output is missing an expected datum:\n" - <> prettyTxIn ti - <> "\nContext: we were trying to spend a script output." - ValidatorHashNotFound vh -> "Cannot find validator hash: " <> - rawBytesToHex (scriptHashToBytes $ unwrap vh) - WrongRefScriptHash msh tout -> case msh of - Nothing -> "Output is missing a reference script hash.\nOutput:\n" <> - prettyOutput tout - Just missingHash -> "Output is missing reference script hash " - <> rawBytesToHex (scriptHashToBytes missingHash) - <> ".\nOutput:\n" - <> - prettyOutput tout - CannotSatisfyAny -> "One of the following happened:\n" - <> "1. List of constraints is empty.\n" - <> - "2. All alternatives of a 'mustSatisfyAnyOf' have failed." - ExpectedPlutusScriptGotNativeScript mph -> - "Expected a Plutus script, but " - <> rawBytesToHex (scriptHashToBytes $ unwrap mph) - <> - " is a native script." - CannotMintZero cs tn -> - "Cannot mint zero of token " - <> prettyTokenName tn - <> " of currency " - <> - byteArrayToHex (getCurrencySymbol cs) - where - prettyOutput :: TransactionOutput -> String - prettyOutput (TransactionOutput { address, amount, datum, referenceScript }) = - let - datumTagSets = map TagSet.fromArray $ case datum of - NoOutputDatum -> [] - OutputDatumHash datumHash -> - [ [ "datumHash" `TagSet.tag` byteArrayToHex - (unwrap datumHash) - ] - ] - OutputDatum plutusData -> - [ [ "datum" `TagSet.tagSetTag` - pprintPlutusData (unwrap plutusData) - ] - ] - scriptRefTagSets = case referenceScript of - Nothing -> [] - Just ref -> [ "Script Reference" `TagSet.tag` show ref ] - outputTagSet = - [ "amount" `TagSet.tagSetTag` pprintValue (fromPlutusValue amount) - , "address" `TagSet.tag` (show address) - ] <> datumTagSets <> scriptRefTagSets - in - foldMapWithIndex prettyEntry $ TagSet.fromArray outputTagSet - - prettyEntry :: String -> TagSet.Tag -> String - prettyEntry k v = (k <> ": ") - <> - ( case v of - TagSet.StringTag s -> s - TagSet.NumberTag n -> show n - TagSet.IntTag i -> show i - TagSet.BooleanTag b -> show b - TagSet.JSDateTag date -> show date - TagSet.TagSetTag ts -> foldMapWithIndex prettyEntry ts - ) - <> "\n" - - prettyTokenName :: TokenName -> String - prettyTokenName = fromTokenName byteArrayToHex identity - - prettyPlutusScript :: PlutusScript -> String - prettyPlutusScript (PlutusScript (code /\ lang)) = - show lang <> ": " <> byteArrayToHex code - - prettyTxIn :: TransactionInput -> String - prettyTxIn (TransactionInput ti) = - "Id: " - <> byteArrayToHex (unwrap ti.transactionId) - <> "\nIndex: " - <> - show ti.index - - prettyNativeScript :: Int -> NativeScript -> String - prettyNativeScript indent script = - let - newIndent = indent + 1 - in - case script of - ScriptPubkey kh -> rawBytesToHex $ ed25519KeyHashToBytes kh - ScriptAll scripts -> "All of:\n" <> - joinWithIndentNewline newIndent scripts - ScriptAny scripts -> "At least one of:\n" <> - joinWithIndentNewline newIndent scripts - ScriptNOfK n scripts -> "At least " <> show n <> " of:\n" <> - joinWithIndentNewline newIndent scripts - TimelockStart slot -> "Timelock start for slot " <> show (unwrap slot) - TimelockExpiry slot -> "Timelock expiry for slot " <> show (unwrap slot) - - joinWithIndentNewline :: Int -> Array NativeScript -> String - joinWithIndentNewline indent = map (prettyNativeScript indent) >>> - String.joinWith ("\n" <> spaces (2 * indent)) - - spaces :: Int -> String - spaces n - | n <= 0 = "" - | otherwise = " " <> spaces (n - 1) - --- Helpers - -bugTrackerLink :: String -bugTrackerLink = - "https://github.com/Plutonomicon/cardano-transaction-lib/issues" diff --git a/src/Internal/Cardano/Types/NativeScript.purs b/src/Internal/Cardano/Types/NativeScript.purs index 4f39e1c74..0adfe53c1 100644 --- a/src/Internal/Cardano/Types/NativeScript.purs +++ b/src/Internal/Cardano/Types/NativeScript.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Cardano.Types.NativeScript , TimelockStart , TimelockExpiry ) + , pprintNativeScript ) where import Prelude @@ -22,14 +23,22 @@ import Aeson import Ctl.Internal.Helpers (contentsProp, encodeTagged', tagProp) import Ctl.Internal.Metadata.Helpers (errExpectedObject) import Ctl.Internal.Serialization.Address (Slot) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ed25519KeyHashFromBytes) +import Ctl.Internal.Serialization.Hash + ( Ed25519KeyHash + , ed25519KeyHashFromBytes + , ed25519KeyHashToBytes + ) import Ctl.Internal.Types.BigNum (fromString) +import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) +import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Data.Array.NonEmpty (fromFoldable) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Maybe (fromJust) -import Data.Newtype (wrap) +import Data.Newtype (unwrap, wrap) import Data.Show.Generic (genericShow) import Partial.Unsafe (unsafePartial) import Test.QuickCheck (class Arbitrary) @@ -99,3 +108,16 @@ instance EncodeAeson NativeScript where { n, nativeScripts } TimelockStart r -> encodeTagged' "TimelockStart" r TimelockExpiry r -> encodeTagged' "TimelockExpiry" r + +pprintNativeScript :: NativeScript -> TagSet +pprintNativeScript = case _ of + ScriptPubkey kh -> TagSet.fromArray + [ "PubKey" `tag` rawBytesToHex (ed25519KeyHashToBytes kh) ] + ScriptAll scripts -> "All of" `tagSetTag` TagSet.fromArray + (pprintNativeScript <$> scripts) + ScriptAny scripts -> "Any of" `tagSetTag` TagSet.fromArray + (pprintNativeScript <$> scripts) + ScriptNOfK n scripts -> ("At least " <> show n <> " of ") + `tagSetTag` TagSet.fromArray (pprintNativeScript <$> scripts) + TimelockStart slot -> "Timelock start" `tag` BigNum.toString (unwrap slot) + TimelockExpiry slot -> "Timelock expiry" `tag` BigNum.toString (unwrap slot) diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 63e1f00ad..6d438d1f1 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -9,6 +9,7 @@ module Ctl.Internal.Helpers , appendMap , appendRightMap , bigIntToUInt + , bugTrackerLink , concatPaths , contentsProp , encodeMap @@ -31,6 +32,7 @@ module Ctl.Internal.Helpers , showWithParens , tagProp , uIntToBigInt + , unsafePprintTagSet ) where import Prelude @@ -47,8 +49,9 @@ import Data.Function (on) import Data.JSDate (now) import Data.List.Lazy as LL import Data.Log.Formatter.Pretty (prettyFormatter) -import Data.Log.Level (LogLevel) +import Data.Log.Level (LogLevel(Info)) import Data.Log.Message (Message) +import Data.Log.Tag (TagSet) import Data.Map (Map, toUnfoldable) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) @@ -65,10 +68,21 @@ import Effect (Effect) import Effect.Class (class MonadEffect) import Effect.Class.Console (log) import Effect.Exception (throw) +import Effect.Unsafe (unsafePerformEffect) import Foreign.Object as Obj import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) +bugTrackerLink :: String +bugTrackerLink = + "https://github.com/Plutonomicon/cardano-transaction-lib/issues" + +unsafePprintTagSet :: String -> TagSet -> String +unsafePprintTagSet message tags = unsafePerformEffect do + timestamp <- now + let msg = { level: Info, message, tags, timestamp } + prettyFormatter msg + -- | Throws provided error on `Nothing` fromJustEff :: forall (a :: Type). String -> Maybe a -> Effect a fromJustEff e = case _ of diff --git a/src/Internal/Plutus/Types/Transaction.purs b/src/Internal/Plutus/Types/Transaction.purs index ec6030739..66c4d57ff 100644 --- a/src/Internal/Plutus/Types/Transaction.purs +++ b/src/Internal/Plutus/Types/Transaction.purs @@ -6,30 +6,33 @@ module Ctl.Internal.Plutus.Types.Transaction , _datum , _output , _scriptRef + , pprintTransactionOutput ) where import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - ) +import Aeson (class DecodeAeson, class EncodeAeson) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) +import Ctl.Internal.Cardano.Types.Value (pprintValue) import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Address (Address) import Ctl.Internal.Plutus.Types.Value (Value) -import Ctl.Internal.Serialization.Hash (ScriptHash) +import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.OutputDatum (OutputDatum) +import Ctl.Internal.Types.OutputDatum (OutputDatum, pprintOutputDatum) import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) +import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet import Data.Map (Map) -import Data.Maybe (Maybe(Nothing)) +import Data.Maybe (Maybe(Nothing), maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Type.Proxy (Proxy(Proxy)) @@ -75,6 +78,19 @@ instance ToData TransactionOutput where Constr BigNum.zero [ toData address, toData amount, toData datum, toData referenceScript ] +pprintTransactionOutput :: TransactionOutput -> TagSet +pprintTransactionOutput + (TransactionOutput { address, amount, datum, referenceScript }) = + TagSet.fromArray $ + [ "address" `tag` show address + , "amount" `tagSetTag` pprintValue (fromPlutusValue amount) + , pprintOutputDatum datum + ] <> referenceScriptTagSet + where + referenceScriptTagSet = maybe [] + (pure <<< tag "referenceScript" <<< rawBytesToHex <<< scriptHashToBytes) + referenceScript + newtype TransactionOutputWithRefScript = TransactionOutputWithRefScript { output :: TransactionOutput , scriptRef :: Maybe ScriptRef diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 38b363c97..c6fea10ca 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -2,26 +2,46 @@ module Ctl.Internal.ProcessConstraints.Error where import Prelude -import Ctl.Internal.Cardano.Types.Value (CurrencySymbol) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput) -import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.Transaction (ModifyTxError) -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError) +import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) +import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, getCurrencySymbol) +import Ctl.Internal.Helpers (bugTrackerLink, unsafePprintTagSet) +import Ctl.Internal.Plutus.Types.Transaction + ( TransactionOutput + , pprintTransactionOutput + ) +import Ctl.Internal.Serialization.Address (Address, addressBech32) +import Ctl.Internal.Serialization.Hash + ( ScriptHash + , ed25519KeyHashToBytes + , scriptHashToBytes + ) +import Ctl.Internal.Transaction (ModifyTxError, explainModifyTxError) +import Ctl.Internal.Types.ByteArray (byteArrayToHex) +import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , PosixTimeToSlotError + , explainPosixTimeToSlotError + ) import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) +import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Scripts ( MintingPolicyHash , NativeScriptStakeValidator + , PlutusScript(PlutusScript) , PlutusScriptStakeValidator , ValidatorHash ) -import Ctl.Internal.Types.TokenName (TokenName) -import Ctl.Internal.Types.Transaction (TransactionInput) +import Ctl.Internal.Types.TokenName (TokenName, fromTokenName) +import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) +import Data.Log.Tag (tagSetTag) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) import Data.Show.Generic (genericShow) +import Data.Tuple.Nested ((/\)) +import Data.UInt as UInt data MkUnbalancedTxError = CannotFindDatum @@ -53,3 +73,105 @@ derive instance Eq MkUnbalancedTxError instance Show MkUnbalancedTxError where show = genericShow + +-- | Helper to pretty-print `MkUnbalancedTxError`s. +explainMkUnbalancedTxError :: MkUnbalancedTxError -> String +explainMkUnbalancedTxError = case _ of + CannotFindDatum -> "Cannot find datum" + CannotQueryDatum (DataHash dh) -> + "Querying for datum by datum hash (" + <> byteArrayToHex dh + <> ") failed: no datum found" + CannotConvertPOSIXTimeRange tr ttsErr -> + "Cannot convert POSIX time range to slot time range.\nRange: " + <> show tr + <> "\nReason: " + <> explainPosixTimeToSlotError ttsErr + CannotSolveTimeConstraints tr tr' -> + "Unsolvable time constraints: " <> show tr <> " and " <> show tr' <> + " do not overlap." + CannotGetMintingPolicyScriptIndex -> + "Cannot get minting policy script index. This should be impossible.\n" + <> "Please report this as a bug here: " + <> bugTrackerLink + CannotGetValidatorHashFromAddress addr -> + "Cannot get a payment validator hash from address " <> + addressBech32 addr + CannotMakeValue _ tn _ -> + "Attempted to make an amount with the ADA currency symbol, and " + <> "non-empty token name " + <> prettyTokenName tn + <> ". This is not allowed, as the ADA currency symbol can only be " + <> "combined with the empty token name." + CannotWithdrawRewardsPubKey spkh -> + "Cannot withdraw rewards, as pubkey " + <> rawBytesToHex (ed25519KeyHashToBytes $ unwrap $ unwrap spkh) + <> " is not registered" + CannotWithdrawRewardsPlutusScript pssv -> + "Cannot withdraw rewards from Plutus staking script " <> + prettyPlutusScript (unwrap pssv) + CannotWithdrawRewardsNativeScript nssv -> + unsafePprintTagSet "Cannot withdraw rewards from native staking script " + ("NativeScript" `tagSetTag` pprintNativeScript (unwrap nssv)) + DatumNotFound (DataHash hash) -> "Datum with hash " <> byteArrayToHex hash <> + " not found." + DatumWrongHash (DataHash dh) datum -> "Datum " + <> show datum + <> " does not have the hash " + <> byteArrayToHex dh + MintingPolicyHashNotCurrencySymbol mph -> + "Minting policy hash " + <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> + " is not a CurrencySymbol. Please check the validity of the byte representation." + MintingPolicyNotFound mp -> "Minting policy with hash " + <> rawBytesToHex (scriptHashToBytes $ unwrap mp) + <> " not found in a set of minting policies" + ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr + OwnPubKeyAndStakeKeyMissing -> + "Could not build own address: both payment pubkey and stake pubkey are missing" + TxOutRefNotFound ti -> + "Could not find a reference input:\n" + <> prettyTxIn ti + <> "\nIt maybe have been consumed, or was never created." + TxOutRefWrongType ti -> + "Transaction output is missing an expected datum:\n" + <> prettyTxIn ti + <> "\nContext: we were trying to spend a script output." + ValidatorHashNotFound vh -> "Cannot find validator hash: " <> + rawBytesToHex (scriptHashToBytes $ unwrap vh) + WrongRefScriptHash msh tout -> case msh of + Nothing -> unsafePprintTagSet "Output is missing a reference script hash" + ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) + Just missingHash -> + unsafePprintTagSet + ( "TransactionOutput is missing reference script hash " + <> rawBytesToHex (scriptHashToBytes missingHash) + ) + ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) + CannotSatisfyAny -> "One of the following happened:\n" + <> "1. List of constraints is empty.\n" + <> "2. All alternatives of a 'mustSatisfyAnyOf' have failed." + ExpectedPlutusScriptGotNativeScript mph -> + "Expected a Plutus script, but " + <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> " is a hash of a native script." + CannotMintZero cs tn -> + "Cannot mint zero of token " + <> prettyTokenName tn + <> " of currency " + <> byteArrayToHex (getCurrencySymbol cs) + where + + prettyTokenName :: TokenName -> String + prettyTokenName = fromTokenName byteArrayToHex show + + prettyPlutusScript :: PlutusScript -> String + prettyPlutusScript (PlutusScript (code /\ lang)) = + show lang <> ": " <> byteArrayToHex code + + prettyTxIn :: TransactionInput -> String + prettyTxIn (TransactionInput ti) = + byteArrayToHex (unwrap ti.transactionId) + <> "#" + <> UInt.toString ti.index From 60a0dbd16dcd1d104945f81888a447767c3f0e43 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 3 Nov 2023 14:05:42 +0100 Subject: [PATCH 390/478] Ogmios decoding with a class instead of datatype to restore response parameter in ListenerSet --- src/Internal/BalanceTx/Error.purs | 59 ++----- src/Internal/QueryM.purs | 142 ++++++++++++---- src/Internal/QueryM/JsonRpc2.purs | 136 +++++++++------ src/Internal/QueryM/Ogmios.purs | 274 +++++++++++++++++++++++------- test/Ogmios/Aeson.purs | 3 +- test/Ogmios/GenerateFixtures.purs | 34 ++-- test/Types/Interval.purs | 6 +- 7 files changed, 450 insertions(+), 204 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d4678387f..d1396e333 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -26,27 +26,10 @@ module Ctl.Internal.BalanceTx.Error import Prelude import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction - ( Redeemer(Redeemer) - , Transaction - , _redeemers - , _witnessSet - ) +import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer), Transaction, _redeemers, _witnessSet) import Ctl.Internal.Plutus.Types.Value (Value) -import Ctl.Internal.QueryM.Ogmios - ( RedeemerPointer - , ScriptFailure - ( ExtraRedeemers - , MissingRequiredDatums - , MissingRequiredScripts - , ValidatorFailed - , UnknownInputReferencedByRedeemer - , NonScriptInputReferencedByRedeemer - , IllFormedExecutionBudget - , NoCostModelForLanguage - ) - , TxEvaluationFailure(UnparsedError, ScriptFailures) - ) as Ogmios +import Ctl.Internal.QueryM.Ogmios (RedeemerPointer, ScriptFailure(..), TxEvaluationFailure(UnparsedError, ScriptFailures)) as Ogmios +import Ctl.Internal.QueryM.Ogmios (showRedeemerPointer) import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array @@ -172,7 +155,7 @@ printTxEvaluationFailure :: Transaction -> Ogmios.TxEvaluationFailure -> String printTxEvaluationFailure transaction e = runPrettyString $ case e of - Ogmios.UnparsedError error -> line $ "Unknown error: " <> error + Ogmios.UnparsedError error -> line $ "Unknown error: " <> show error Ogmios.ScriptFailures sf -> line "Script failures:" <> bullet (foldMapWithIndex printScriptFailures sf) where @@ -210,20 +193,12 @@ printTxEvaluationFailure transaction e = printScriptFailure = case _ of Ogmios.ExtraRedeemers ptrs -> line "Extra redeemers:" <> bullet (foldMap printRedeemer ptrs) - Ogmios.MissingRequiredDatums { provided, missing } - -> line "Supplied with datums:" - <> bullet (foldMap (foldMap line) provided) - <> line "But missing required datums:" - <> bullet (foldMap line missing) - Ogmios.MissingRequiredScripts { resolved, missing } - -> line "Supplied with scripts:" - <> bullet - ( foldMapWithIndex - (\ptr scr -> printRedeemer ptr <> line ("Script: " <> scr)) - resolved - ) - <> line "But missing required scripts:" + Ogmios.MissingRequiredDatums missing + -> line "Missing required datums:" <> bullet (foldMap line missing) + Ogmios.MissingRequiredScripts missing + -> line "Missing required scripts:" + <> bullet (foldMap (line <<< showRedeemerPointer) missing) Ogmios.ValidatorFailed { error, traces } -> line error <> line "Trace:" <> number (foldMap line traces) @@ -231,16 +206,12 @@ printTxEvaluationFailure transaction e = ("Unknown input referenced by redeemer: " <> show txIn) Ogmios.NonScriptInputReferencedByRedeemer txIn -> line ("Non script input referenced by redeemer: " <> show txIn) - Ogmios.IllFormedExecutionBudget Nothing -> line - ("Ill formed execution budget: Execution budget missing") - Ogmios.IllFormedExecutionBudget (Just { memory, steps }) -> - line "Ill formed execution budget:" - <> bullet - ( line ("Memory: " <> BigInt.toString (Natural.toBigInt memory)) - <> line ("Steps: " <> BigInt.toString (Natural.toBigInt steps)) - ) - Ogmios.NoCostModelForLanguage language -> line - ("No cost model for language \"" <> language <> "\"") + Ogmios.NoCostModelForLanguage languages -> + line "No cost model for languages:" + <> bullet (foldMap line languages) + Ogmios.InternalLedgerTypeConversionError error -> + line $ "Internal ledger type conversion error, if you ever run into this, please report the issue as you've likely discoverd a critical bug: \"" + <> error <> "\"" printScriptFailures :: Ogmios.RedeemerPointer -> Array Ogmios.ScriptFailure -> PrettyString diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 0fbcf8bf4..cbff78c65 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -49,7 +49,15 @@ module Ctl.Internal.QueryM import Prelude -import Aeson (class DecodeAeson, Aeson, JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) +import Aeson + ( class DecodeAeson + , Aeson + , JsonDecodeError(TypeMismatch) + , decodeAeson + , encodeAeson + , parseJsonStringToAeson + , stringifyAeson + ) import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader @@ -57,7 +65,12 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode import Control.Alt (class Alt) import Control.Alternative (class Alternative) -import Control.Monad.Error.Class (class MonadError, class MonadThrow, liftEither, throwError) +import Control.Monad.Error.Class + ( class MonadError + , class MonadThrow + , liftEither + , throwError + ) import Control.Monad.Logger.Class (class MonadLogger) import Control.Monad.Reader.Class (class MonadAsk, class MonadReader) import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) @@ -65,18 +78,77 @@ import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Helpers (logWithLevel) -import Ctl.Internal.JsWebSocket (JsWebSocket, Url, _mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _removeOnWsError, _wsClose, _wsFinalize, _wsSend) +import Ctl.Internal.JsWebSocket + ( JsWebSocket + , Url + , _mkWebSocket + , _onWsConnect + , _onWsError + , _onWsMessage + , _removeOnWsError + , _wsClose + , _wsFinalize + , _wsSend + ) import Ctl.Internal.Logging (Logger, mkLogger) -import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, mkWebsocketDispatch, newDispatcher, newPendingRequests) -import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError, FaultError, ListenerCancelled), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, dispatchErrorToError, mkWebsocketDispatch, newDispatcher, newPendingRequests) as ExportDispatcher -import Ctl.Internal.QueryM.JsonRpc2 (parseJsonRpc2Response) +import Ctl.Internal.QueryM.Dispatcher + ( DispatchError(JsonError) + , Dispatcher + , GenericPendingRequests + , PendingRequests + , PendingSubmitTxRequests + , RequestBody + , WebsocketDispatch + , mkWebsocketDispatch + , newDispatcher + , newPendingRequests + ) +import Ctl.Internal.QueryM.Dispatcher + ( DispatchError(JsonError, FaultError, ListenerCancelled) + , Dispatcher + , GenericPendingRequests + , PendingRequests + , PendingSubmitTxRequests + , RequestBody + , WebsocketDispatch + , dispatchErrorToError + , mkWebsocketDispatch + , newDispatcher + , newPendingRequests + ) as ExportDispatcher +import Ctl.Internal.QueryM.JsonRpc2 + ( OgmiosDecodeError + , decodeAesonJsonRpc2Response + , decodeOgmios + , ogmiosDecodeErrorToError + ) import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 -import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, DelegationsAndRewardsR, OgmiosProtocolParameters, PoolParametersR, ReleasedMempool, StakePoolsQueryArgument, TxHash) +import Ctl.Internal.QueryM.Ogmios + ( AdditionalUtxoSet + , DelegationsAndRewardsR + , HasTxR + , MaybeMempoolTransaction + , OgmiosProtocolParameters + , PoolParametersR + , ReleasedMempool + , StakePoolsQueryArgument + , TxHash + ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.UniqueId (ListenerId) -import Ctl.Internal.ServerConfig (Host, ServerConfig, defaultOgmiosWsConfig, mkHttpUrl, mkServerUrl, mkWsUrl) as ExportServerConfig +import Ctl.Internal.ServerConfig + ( Host + , ServerConfig + , defaultOgmiosWsConfig + , mkHttpUrl + , mkServerUrl + , mkWsUrl + ) as ExportServerConfig import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) -import Ctl.Internal.Service.Error (ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError), ServiceError(ServiceOtherError)) +import Ctl.Internal.Service.Error + ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) + , ServiceError(ServiceOtherError) + ) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain @@ -97,7 +169,15 @@ import Data.Traversable (for_, traverse_) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) -import Effect.Aff (Aff, Canceler(Canceler), ParAff, delay, launchAff_, makeAff, runAff_) +import Effect.Aff + ( Aff + , Canceler(Canceler) + , ParAff + , delay + , launchAff_ + , makeAff + , runAff_ + ) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) @@ -285,9 +365,11 @@ mempoolSnapshotHasTxAff -> Ogmios.MempoolSnapshotAcquired -> TxHash -> Aff Boolean -mempoolSnapshotHasTxAff ogmiosWs logger ms = - mkOgmiosRequestAff ogmiosWs logger (Ogmios.mempoolSnapshotHasTxCall ms) +mempoolSnapshotHasTxAff ogmiosWs logger ms txh = + unwrap <$> mkOgmiosRequestAff ogmiosWs logger + (Ogmios.mempoolSnapshotHasTxCall ms) _.mempoolHasTx + txh mempoolSnapshotSizeAndCapacityAff :: OgmiosWebSocket @@ -315,7 +397,7 @@ mempoolSnapshotNextTxAff -> Logger -> Ogmios.MempoolSnapshotAcquired -> Aff (Maybe Ogmios.MempoolTransaction) -mempoolSnapshotNextTxAff ogmiosWs logger ms = +mempoolSnapshotNextTxAff ogmiosWs logger ms = unwrap <$> mkOgmiosRequestAff ogmiosWs logger (Ogmios.mempoolSnapshotNextTxCall ms) _.mempoolNextTx unit @@ -332,10 +414,11 @@ mempoolSnapshotHasTx :: Ogmios.MempoolSnapshotAcquired -> TxHash -> QueryM Boolean -mempoolSnapshotHasTx ms = - mkOgmiosRequest +mempoolSnapshotHasTx ms txh = + unwrap <$> mkOgmiosRequest (Ogmios.mempoolSnapshotHasTxCall ms) _.mempoolHasTx + txh mempoolSnapshotSizeAndCapacity :: Ogmios.MempoolSnapshotAcquired @@ -359,7 +442,7 @@ mempoolSnapshotNextTx :: Ogmios.MempoolSnapshotAcquired -> QueryM (Maybe Ogmios.MempoolTransaction) mempoolSnapshotNextTx ms = - mkOgmiosRequest + unwrap <$> mkOgmiosRequest (Ogmios.mempoolSnapshotNextTxCall ms) _.mempoolNextTx unit @@ -644,8 +727,8 @@ type OgmiosListeners = , systemStart :: ListenerSet Unit Ogmios.OgmiosSystemStart , acquireMempool :: ListenerSet Unit Ogmios.MempoolSnapshotAcquired , releaseMempool :: ListenerSet Unit ReleasedMempool - , mempoolHasTx :: ListenerSet TxHash Boolean - , mempoolNextTx :: ListenerSet Unit (Maybe Ogmios.MempoolTransaction) + , mempoolHasTx :: ListenerSet TxHash HasTxR + , mempoolNextTx :: ListenerSet Unit MaybeMempoolTransaction , mempoolSizeAndCapacity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity , stakePools :: ListenerSet StakePoolsQueryArgument PoolParametersR , delegationsAndRewards :: ListenerSet (Array String) DelegationsAndRewardsR @@ -655,7 +738,7 @@ type OgmiosListeners = type ListenerSet (request :: Type) (response :: Type) = { addMessageListener :: ListenerId - -> (Aeson -> Effect Unit) + -> (Either OgmiosDecodeError response -> Effect Unit) -> Effect Unit , removeMessageListener :: ListenerId -> Effect Unit -- ^ Removes ID from dispatch map and pending requests queue. @@ -668,15 +751,17 @@ type SubmitTxListenerSet = ListenerSet (TxHash /\ CborBytes) Ogmios.SubmitTxR mkAddMessageListener :: forall (response :: Type) - . Dispatcher + . JsonRpc2.DecodeOgmios response + => Dispatcher -> ( ListenerId - -> (Aeson -> Effect Unit) + -> (Either JsonRpc2.OgmiosDecodeError response -> Effect Unit) -> Effect Unit ) mkAddMessageListener dispatcher = \reflection handler -> flip Ref.modify_ dispatcher $ - Map.insert reflection handler + Map.insert reflection + (\aeson -> handler $ decodeOgmios =<< decodeAesonJsonRpc2Response aeson) mkRemoveMessageListener :: forall (requestData :: Type) @@ -691,8 +776,9 @@ mkRemoveMessageListener dispatcher pendingRequests = -- we manipluate closures to make the DispatchIdMap updateable using these -- methods, this can be picked up by a query or cancellation function mkListenerSet - :: forall (request :: Type) (response :: Type) - . Dispatcher + :: forall (request :: Type) (response :: Type) + . JsonRpc2.DecodeOgmios response + => Dispatcher -> PendingRequests -> ListenerSet request response mkListenerSet dispatcher pendingRequests = @@ -783,10 +869,9 @@ mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do affFunc :: (Either Error response -> Effect Unit) -> Effect Canceler affFunc cont = do _ <- respLs.addMessageListener id - ( \aeson -> do + ( \res -> do respLs.removeMessageListener id - cont $ bimap jsonDecodeError identity $ - parseJsonRpc2Response jsonRpc2Call aeson + cont $ bimap ogmiosDecodeErrorToError identity res ) respLs.addRequest id (sBody /\ input) _wsSend webSocket (logger Debug) sBody @@ -797,9 +882,6 @@ mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do pure $ Canceler $ \err -> do liftEffect $ respLs.removeMessageListener id liftEffect $ throwError $ err - - jsonDecodeError :: JsonDecodeError -> Error - jsonDecodeError err = error $ ("(Couldn't decode ogmios response: " <> show err <> ")") makeAff affFunc -- an empty error we can compare to, useful for ensuring we've not received any other kind of error diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 0879a2cf4..fc613c8cc 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -5,23 +5,37 @@ module Ctl.Internal.QueryM.JsonRpc2 , JsonRpc2Request , buildRequest , mkCallType - , parseJsonRpc2Response - , ParseResponse(ParseResponse) , JsonRpc2Response - , successResponse - , anyResponse + , decodeResult + , decodeError + , ogmiosDecodeErrorToError + , OgmiosDecodeError(NoResultError, DecodingError, InvalidResponseError) + , class DecodeOgmios + , decodeOgmios , parseJsonRpc2ResponseId - ) - where + , decodeAesonJsonRpc2Response + ) where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(..), caseAesonObject, decodeAeson, encodeAeson, getField, getFieldOptional) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError(AtKey, TypeMismatch, MissingValue) + , caseAesonObject + , decodeAeson + , encodeAeson + , getField + , getFieldOptional + , stringifyAeson + ) import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) -import Control.Alt ((<|>)) -import Data.Either (Either(..)) -import Data.Maybe (Maybe, fromMaybe) +import Data.Bifunctor (bimap) +import Data.Either (Either(Left), note) +import Data.Maybe (Maybe, maybe) import Effect (Effect) +import Effect.Aff (Error, error) import Foreign.Object (Object) import Record as Record @@ -59,29 +73,28 @@ type JsonRpc2Response = , id :: ListenerId } -data ParseResponse (o :: Type) = ParseResponse (JsonRpc2Response -> Either JsonDecodeError o) - -successResponse :: forall o. DecodeAeson o => ParseResponse o -successResponse = ParseResponse $ \res -> do - result <- fromMaybe (Left (AtKey "result" MissingValue)) (pure <$> res.result) - decodeAeson result - -anyResponse :: forall a. (Aeson -> Either JsonDecodeError a) -> (Aeson -> Either JsonDecodeError a) -> ParseResponse a -anyResponse decodeError decodeResult = ParseResponse $ \{result, error} -> parseError error <|> parseResult result - where - - parseResult result = do - res <- fromMaybe (Left $ AtKey "result" MissingValue) $ pure <$> result - decodeResult res - - parseError error = do - err <- fromMaybe (Left $ AtKey "error" MissingValue) (pure <$> error) - decodeError err +decodeAesonJsonRpc2Response + :: Aeson -> Either OgmiosDecodeError JsonRpc2Response +decodeAesonJsonRpc2Response aeson = bimap InvalidResponseError identity + $ flip aesonObject aeson + $ \o -> do + jsonrpc <- getField o "jsonrpc" + method <- getFieldOptional o "method" + result <- getFieldOptional o "result" + error <- getFieldOptional o "error" + id <- getField o "id" + pure + { jsonrpc + , method + , result + , error + , id + } -- | A wrapper for tying arguments and response types to request building. -data JsonRpc2Call :: Type -> Type -> Type -data JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call - (ParseResponse o) (i -> Effect { body :: Aeson, id :: String }) +newtype JsonRpc2Call :: Type -> Type -> Type +newtype JsonRpc2Call (i :: Type) (o :: Type) = JsonRpc2Call + (i -> Effect { body :: Aeson, id :: String }) -- | Creates a "jsonrpc call" which ties together request input and response output types -- | along with a way to create a request object. @@ -89,10 +102,9 @@ mkCallType :: forall (a :: Type) (i :: Type) (o :: Type) . EncodeAeson (JsonRpc2Request a) => { jsonrpc :: String } - -> ParseResponse o -> { method :: String, params :: i -> a } -> JsonRpc2Call i o -mkCallType service response { method, params } = JsonRpc2Call response $ \i -> do +mkCallType service { method, params } = JsonRpc2Call \i -> do req <- mkJsonRpc2Request service { method, params: params i } pure { body: encodeAeson req, id: req.id } @@ -102,26 +114,46 @@ buildRequest . JsonRpc2Call i o -> i -> Effect { body :: Aeson, id :: String } -buildRequest (JsonRpc2Call _ c) = c +buildRequest (JsonRpc2Call c) = c --- | Polymorphic response parser -parseJsonRpc2Response :: forall (i :: Type) (o :: Type) - . JsonRpc2Call i o -> Aeson -> Either JsonDecodeError o -parseJsonRpc2Response (JsonRpc2Call (ParseResponse parse) _) aeson = do - res <- flip aesonObject aeson $ \o -> do - jsonrpc <- getField o "jsonrpc" - method <- getFieldOptional o "method" - result <- getFieldOptional o "result" - error <- getFieldOptional o "error" - id <- getField o "id" - pure - { jsonrpc - , method - , result - , error - , id - } - parse res +data OgmiosDecodeError + -- Server didn't respond with "result", responded with given "error". + = NoResultError (Maybe Aeson) + -- Parsing of result failed + | DecodingError JsonDecodeError + -- Parsing of JsonRpc2Response failed + | InvalidResponseError JsonDecodeError + +ogmiosDecodeErrorToError :: OgmiosDecodeError -> Error +ogmiosDecodeErrorToError (DecodingError err) = error $ show err +ogmiosDecodeErrorToError (NoResultError err) = + error $ "Server didn't respond with result. Responded with error: " <> maybe + "" + stringifyAeson + err +-- Parsing of JsonRpc2Response failed +ogmiosDecodeErrorToError (InvalidResponseError err) = error $ + "Couldn't parse the response: " <> show err + +-- | Variation of DecodeAeson for ogmios response, defines how to parse full ogmios reponse. +-- We usually parse just the content of the "result" field, +-- but sometimes also "error" field, hence a class other than DecodeAeson. +class DecodeOgmios o where + decodeOgmios :: JsonRpc2Response -> Either OgmiosDecodeError o + +-- | Decode "result" field of ogmios response with DecodeAeson. +decodeResult + :: forall o. DecodeAeson o => JsonRpc2Response -> Either OgmiosDecodeError o +decodeResult response = do + result <- note (NoResultError response.error) $ response.result + bimap DecodingError identity $ decodeAeson result + +-- | Decode "error" field of ogmios response with DecodeAeson. +decodeError + :: forall o. DecodeAeson o => JsonRpc2Response -> Either OgmiosDecodeError o +decodeError response = bimap DecodingError identity $ do + error <- note (AtKey "error" MissingValue) response.error + decodeAeson error -- | Parse just ID from the response parseJsonRpc2ResponseId diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index db07beda8..a487bb066 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -45,6 +45,8 @@ module Ctl.Internal.QueryM.Ogmios , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) , TxHash + , HasTxR(HasTxR) + , MaybeMempoolTransaction(MaybeMempoolTransaction) , acquireMempoolSnapshotCall , aesonArray , aesonObject @@ -67,45 +69,122 @@ module Ctl.Internal.QueryM.Ogmios , slotLengthFactor , parseIpv6String , rationalToSubcoin + , showRedeemerPointer ) where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, Aeson, JsonDecodeError(..), caseAesonArray, caseAesonObject, caseAesonString, decodeAeson, encodeAeson, fromArray, fromString, getField, isNull, (.:), (.:?)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError(TypeMismatch, UnexpectedValue) + , caseAesonArray + , caseAesonObject + , caseAesonString + , decodeAeson + , encodeAeson + , fromArray + , fromString + , getField + , isNull + , (.:) + , (.:?) + ) import Control.Alt ((<|>)) import Control.Alternative (guard) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction (CostModel(CostModel), Costmdls(Costmdls), ExUnitPrices, ExUnits, Ipv4(Ipv4), Ipv6(Ipv6), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), PoolPubKeyHash, Relay(MultiHostName, SingleHostAddr, SingleHostName), SubCoin, URL(URL), UnitInterval) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value, getCurrencySymbol, getLovelace, getNonAdaAsset, unwrapNonAdaAsset, valueToCoin) +import Ctl.Internal.Cardano.Types.NativeScript + ( NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + ) +import Ctl.Internal.Cardano.Types.ScriptRef + ( ScriptRef(NativeScriptRef, PlutusScriptRef) + ) +import Ctl.Internal.Cardano.Types.Transaction + ( CostModel(CostModel) + , Costmdls(Costmdls) + , ExUnitPrices + , ExUnits + , Ipv4(Ipv4) + , Ipv6(Ipv6) + , PoolMetadata(PoolMetadata) + , PoolMetadataHash(PoolMetadataHash) + , PoolPubKeyHash + , Relay(MultiHostName, SingleHostAddr, SingleHostName) + , SubCoin + , URL(URL) + , UnitInterval + ) +import Ctl.Internal.Cardano.Types.Value + ( Coin(Coin) + , Value + , getCurrencySymbol + , getLovelace + , getNonAdaAsset + , unwrapNonAdaAsset + , valueToCoin + ) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) -import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call, JsonRpc2Request, ParseResponse, anyResponse, mkCallType, successResponse) +import Ctl.Internal.QueryM.JsonRpc2 + ( class DecodeOgmios + , JsonRpc2Call + , JsonRpc2Request + , OgmiosDecodeError(DecodingError) + , decodeError + , decodeResult + , mkCallType + ) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayFromIntArray, byteArrayToHex, hexToByteArray) +import Ctl.Internal.Types.ByteArray + ( ByteArray + , byteArrayFromIntArray + , byteArrayToHex + , hexToByteArray + ) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries), EraSummary(EraSummary), EraSummaryParameters(EraSummaryParameters)) +import Ctl.Internal.Types.EraSummaries + ( EraSummaries(EraSummaries) + , EraSummary(EraSummary) + , EraSummaryParameters(EraSummaryParameters) + ) import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromString) as Natural -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoByte), ProtocolParameters(ProtocolParameters)) +import Ctl.Internal.Types.ProtocolParameters + ( CoinsPerUtxoUnit(CoinsPerUtxoByte) + , ProtocolParameters(ProtocolParameters) + ) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2), PlutusScript(PlutusScript)) -import Ctl.Internal.Types.SystemStart (SystemStart, sysStartFromOgmiosTimestamp, sysStartToOgmiosTimestamp) +import Ctl.Internal.Types.Scripts + ( Language(PlutusV1, PlutusV2) + , PlutusScript(PlutusScript) + ) +import Ctl.Internal.Types.SystemStart + ( SystemStart + , sysStartFromOgmiosTimestamp + , sysStartToOgmiosTimestamp + ) import Ctl.Internal.Types.TokenName (getTokenName) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (fromFoldable, length, replicate) as Array -import Data.Bifunctor (lmap) +import Data.Bifunctor (bimap, lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Either (Either(Left, Right), either, note) @@ -187,8 +266,7 @@ type OgmiosAddress = String -- | Sends a serialized signed transaction with its full witness through the -- | Cardano network via Ogmios. submitTxCall :: JsonRpc2Call (TxHash /\ CborBytes) SubmitTxR -submitTxCall = mkOgmiosCallTypeFull - parseSubmitTxR +submitTxCall = mkOgmiosCallType { method: "submitTransaction" , params: \(_ /\ cbor) -> { transaction: { cbor: cborBytesToHex cbor } @@ -198,8 +276,7 @@ submitTxCall = mkOgmiosCallTypeFull -- | Evaluates the execution units of scripts present in a given transaction, -- | without actually submitting the transaction. evaluateTxCall :: JsonRpc2Call (CborBytes /\ AdditionalUtxoSet) TxEvaluationR -evaluateTxCall = mkOgmiosCallTypeFull - (anyResponse (map (TxEvaluationR <<< Left) <<< decodeAeson) (map (TxEvaluationR <<< Right) <<< decodeAeson)) +evaluateTxCall = mkOgmiosCallType { method: "evaluateTransaction" , params: \(cbor /\ utxoqr) -> { transaction: { cbor: cborBytesToHex cbor } @@ -217,14 +294,14 @@ acquireMempoolSnapshotCall = mkOgmiosCallTypeNoArgs "acquireMempool" mempoolSnapshotHasTxCall - :: MempoolSnapshotAcquired -> JsonRpc2Call TxHash Boolean + :: MempoolSnapshotAcquired -> JsonRpc2Call TxHash HasTxR mempoolSnapshotHasTxCall _ = mkOgmiosCallType { method: "hasTransaction" , params: { id: _ } } mempoolSnapshotNextTxCall - :: MempoolSnapshotAcquired -> JsonRpc2Call Unit (Maybe MempoolTransaction) + :: MempoolSnapshotAcquired -> JsonRpc2Call Unit MaybeMempoolTransaction mempoolSnapshotNextTxCall _ = mkOgmiosCallType { method: "nextTransaction" , params: const { fields: "all" } @@ -245,32 +322,30 @@ releaseMempoolCall _ = -------------------------------------------------------------------------------- mkOgmiosCallTypeNoArgs - :: forall (o :: Type). DecodeAeson o => String -> JsonRpc2Call Unit o + :: forall (o :: Type). DecodeOgmios o => String -> JsonRpc2Call Unit o mkOgmiosCallTypeNoArgs method = mkOgmiosCallType { method, params: const {} } mkOgmiosCallType :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonRpc2Request a) - => DecodeAeson o + . EncodeAeson (JsonRpc2Request a) + => DecodeOgmios o => { method :: String, params :: i -> a } -> JsonRpc2Call i o mkOgmiosCallType = - mkCallType { jsonrpc: "2.0" } successResponse - -mkOgmiosCallTypeFull - :: forall (a :: Type) (i :: Type) (o :: Type) - . EncodeAeson (JsonRpc2Request a) - => ParseResponse o - -> { method :: String, params :: i -> a } - -> JsonRpc2Call i o -mkOgmiosCallTypeFull = mkCallType { jsonrpc: "2.0" } -------------------------------------------------------------------------------- -- Local Tx Monitor Query Response & Parsing -------------------------------------------------------------------------------- +newtype HasTxR = HasTxR Boolean + +derive instance Newtype HasTxR _ + +instance DecodeOgmios HasTxR where + decodeOgmios r = HasTxR <$> decodeResult r + newtype MempoolSnapshotAcquired = AwaitAcquired Slot instance Show MempoolSnapshotAcquired where @@ -281,6 +356,9 @@ instance DecodeAeson MempoolSnapshotAcquired where -- todo: ignoring "acquired": "mempool" map AwaitAcquired <<< aesonObject (flip getField "slot") +instance DecodeOgmios MempoolSnapshotAcquired where + decodeOgmios = decodeResult + -- | The acquired snapshot’s size (in bytes), number of transactions, and capacity -- | (in bytes). newtype MempoolSizeAndCapacity = MempoolSizeAndCapacity @@ -303,6 +381,9 @@ instance DecodeAeson MempoolSizeAndCapacity where o pure $ wrap { capacity, currentSize, numberOfTxs } +instance DecodeOgmios MempoolSizeAndCapacity where + decodeOgmios = decodeResult + newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId , raw :: String @@ -320,6 +401,14 @@ instance DecodeAeson MempoolTransaction where raw <- o .: "cbor" pure $ MempoolTransaction { id, raw } +newtype MaybeMempoolTransaction = MaybeMempoolTransaction + (Maybe MempoolTransaction) + +derive instance Newtype MaybeMempoolTransaction _ + +instance DecodeOgmios MaybeMempoolTransaction where + decodeOgmios r = wrap <$> decodeResult r + data ReleasedMempool = ReleasedMempool derive instance Generic ReleasedMempool _ @@ -336,11 +425,15 @@ instance DecodeAeson ReleasedMempool where else Left (UnexpectedValue $ Argonaut.encodeString s) +instance DecodeOgmios ReleasedMempool where + decodeOgmios = decodeResult + ---------------- TX SUBMISSION QUERY RESPONSE & PARSING -submitSuccessPartialResp :: - TxHash -> { result :: { transaction :: { id :: TxHash } } } -submitSuccessPartialResp txHash = { "result": { "transaction": { "id" : txHash } } } +submitSuccessPartialResp + :: TxHash -> { result :: { transaction :: { id :: TxHash } } } +submitSuccessPartialResp txHash = + { "result": { "transaction": { "id": txHash } } } data SubmitTxR = SubmitTxSuccess TxHash @@ -355,19 +448,20 @@ type TxHash = ByteArray type OgmiosError = { code :: Int, message :: String, data :: Aeson } -parseSubmitTxR :: ParseResponse SubmitTxR -parseSubmitTxR = anyResponse parseError (map SubmitTxSuccess <<< parseResult) - where - - parseResult = aesonObject $ \o -> +instance DecodeOgmios SubmitTxR where + decodeOgmios response = + ( bimap DecodingError SubmitTxSuccess <<< decodeTxHash =<< decodeResult + response + ) + <|> (SubmitFail <$> decodeError response) + + where + decodeTxHash :: Aeson -> Either JsonDecodeError TxHash + decodeTxHash = aesonObject $ \o -> ( getField o "transaction" >>= flip getField "id" >>= hexToByteArray - >>> maybe (Left (TypeMismatch "Expected hexstring")) pure + >>> maybe (Left $ TypeMismatch "Expected hexstring") pure ) - parseError aeson = do - err :: OgmiosError <- decodeAeson aeson - pure $ SubmitFail err - ---------------- SYSTEM START QUERY RESPONSE & PARSING newtype OgmiosSystemStart = OgmiosSystemStart SystemStart @@ -386,6 +480,9 @@ instance DecodeAeson OgmiosSystemStart where instance EncodeAeson OgmiosSystemStart where encodeAeson = encodeAeson <<< sysStartToOgmiosTimestamp <<< unwrap +instance DecodeOgmios OgmiosSystemStart where + decodeOgmios = decodeResult + ---------------- CURRENT EPOCH QUERY RESPONSE & PARSING newtype CurrentEpoch = CurrentEpoch BigInt @@ -399,6 +496,9 @@ derive newtype instance Ord CurrentEpoch instance Show CurrentEpoch where show (CurrentEpoch ce) = showWithParens "CurrentEpoch" ce +instance DecodeOgmios CurrentEpoch where + decodeOgmios = decodeResult + ---------------- ERA SUMMARY QUERY RESPONSE & PARSING newtype OgmiosEraSummaries = OgmiosEraSummaries EraSummaries @@ -411,7 +511,7 @@ instance Show OgmiosEraSummaries where show = genericShow instance DecodeAeson OgmiosEraSummaries where - -- There is some differences between ogmios 6.0 spec and actual results + -- There is some differences between ogmios 6.0 spec and actual results -- in "start" "end" fields and "slotLength". decodeAeson = aesonArray (map (wrap <<< wrap) <<< traverse decodeEraSummary) where @@ -454,7 +554,7 @@ instance EncodeAeson OgmiosEraSummaries where encodeEraSummaryParameters (EraSummaryParameters params) = encodeAeson { "epochLength": params.epochLength - , "slotLength": { "seconds" : params.slotLength } + , "slotLength": { "seconds": params.slotLength } , "safeZone": params.safeZone } @@ -463,6 +563,9 @@ instance EncodeAeson OgmiosEraSummaries where slotLengthFactor :: Number slotLengthFactor = 1000.0 +instance DecodeOgmios OgmiosEraSummaries where + decodeOgmios = decodeResult + ---------------- DELEGATIONS & REWARDS QUERY RESPONSE & PARSING newtype DelegationsAndRewardsR = DelegationsAndRewardsR @@ -484,6 +587,9 @@ instance DecodeAeson DelegationsAndRewardsR where pure $ k /\ { rewards, delegate } pure $ DelegationsAndRewardsR $ Map.fromFoldable kvs +instance DecodeOgmios DelegationsAndRewardsR where + decodeOgmios = decodeResult + ---------------- POOL PARAMETERS REQUEST & PARSING -- Nothing queries all pools, otherwise query selected pools. @@ -533,6 +639,9 @@ instance DecodeAeson PoolParametersR where pure $ poolPkh /\ poolParams pure $ PoolParametersR $ Map.fromFoldable kvs +instance DecodeOgmios PoolParametersR where + decodeOgmios = decodeResult + decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters decodePoolParameters objParams = do vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrfVerificationKeyHash" @@ -643,6 +752,9 @@ decodePoolMetadata aeson = do type RedeemerPointer = { redeemerTag :: RedeemerTag, redeemerIndex :: Natural } +showRedeemerPointer :: RedeemerPointer -> String +showRedeemerPointer ptr = show ptr.redeemerTag <> ":" <> show ptr.redeemerIndex + type ExecutionUnits = { memory :: Natural, steps :: Natural } newtype TxEvaluationR = TxEvaluationR @@ -654,6 +766,13 @@ derive instance Generic TxEvaluationR _ instance Show TxEvaluationR where show = genericShow +instance DecodeOgmios TxEvaluationR where + decodeOgmios r = wrap <$> + ( (Right <$> decodeResult r) + <|> (Left <$> decodeError r) + ) + +-- (anyResponse (map (TxEvaluationR <<< Left) <<< decodeAeson) (map (TxEvaluationR <<< Right) <<< decodeAeson)) newtype TxEvaluationResult = TxEvaluationResult (Map RedeemerPointer ExecutionUnits) @@ -673,9 +792,12 @@ instance DecodeAeson TxEvaluationResult where decodeRdmrPtrExUnitsItem :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) decodeRdmrPtrExUnitsItem elem = do - res :: { validator :: String, budget :: { memory :: Natural, cpu :: Natural} } <- decodeAeson elem + res + :: { validator :: String + , budget :: { memory :: Natural, cpu :: Natural } + } <- decodeAeson elem redeemerPtr <- decodeRedeemerPointer res.validator - pure $ redeemerPtr /\ { memory : res.budget.memory, steps: res.budget.cpu } + pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu } redeemerPtrTypeMismatch :: JsonDecodeError redeemerPtrTypeMismatch = TypeMismatch @@ -703,7 +825,6 @@ data ScriptFailure | ValidatorFailed { error :: String, traces :: Array String } | UnknownInputReferencedByRedeemer OgmiosTxIn | NonScriptInputReferencedByRedeemer OgmiosTxIn - -- | IllFormedExecutionBudget (Maybe ExecutionUnits) | NoCostModelForLanguage (Array String) | InternalLedgerTypeConversionError String @@ -732,36 +853,55 @@ instance DecodeAeson ScriptFailure where case error.code of 3011 -> do res :: { missingScript :: Array String } <- decodeAeson error.data - MissingRequiredScripts <$> traverse decodeRedeemerPointer res.missingScript + MissingRequiredScripts <$> traverse decodeRedeemerPointer + res.missingScript 3012 -> do - res :: { validationError :: String, traces :: Array String } <- decodeAeson error.data - pure $ ValidatorFailed {error : res.validationError, traces : res.traces} - 3013 -> do - res :: { unsuitableOutputReference :: { transaction :: { id :: String}, index :: Int} } <- decodeAeson error.data - pure $ NonScriptInputReferencedByRedeemer { index: res.unsuitableOutputReference.index, txId : res.unsuitableOutputReference.transaction.id } - 3110 -> do + res :: { validationError :: String, traces :: Array String } <- + decodeAeson error.data + pure $ ValidatorFailed + { error: res.validationError, traces: res.traces } + 3013 -> do + res + :: { unsuitableOutputReference :: + { transaction :: { id :: String }, index :: Int } + } <- decodeAeson error.data + pure $ NonScriptInputReferencedByRedeemer + { index: res.unsuitableOutputReference.index + , txId: res.unsuitableOutputReference.transaction.id + } + 3110 -> do res :: { extraneousRedeemers :: Array String } <- decodeAeson error.data - ExtraRedeemers <$> traverse decodeRedeemerPointer res.extraneousRedeemers + ExtraRedeemers <$> traverse decodeRedeemerPointer + res.extraneousRedeemers 3111 -> do res :: { missingDatums :: Array String } <- decodeAeson error.data pure $ MissingRequiredDatums res.missingDatums 3117 -> do - res :: { unknownOutputReference :: { transaction :: { id :: String}, index :: Int} } <- decodeAeson error.data + res + :: { unknownOutputReference :: + { transaction :: { id :: String }, index :: Int } + } <- decodeAeson error.data let res' = res.unknownOutputReference - pure $ UnknownInputReferencedByRedeemer { index: res'.index, txId : res'.transaction.id } + pure $ UnknownInputReferencedByRedeemer + { index: res'.index, txId: res'.transaction.id } 3115 -> do res :: { missingCostModels :: Array String } <- decodeAeson error.data pure $ NoCostModelForLanguage res.missingCostModels 3999 -> pure $ InternalLedgerTypeConversionError error.message - _ -> Left $ TypeMismatch $ "Unknown ogmios error code: " <> show error.code + _ -> Left $ TypeMismatch $ "Unknown ogmios error code: " <> show + error.code instance DecodeAeson TxEvaluationFailure where decodeAeson aeson = do error :: OgmiosError <- decodeAeson aeson case error.code of -- ScriptExecutionFailure - 3010 -> flip aesonArray error.data $ (\array -> - (ScriptFailures <<< map Array.fromFoldable <<< collectIntoMap <$> traverse parseElem array)) + 3010 -> flip aesonArray error.data $ + ( \array -> + ( ScriptFailures <<< map Array.fromFoldable <<< collectIntoMap <$> + traverse parseElem array + ) + ) -- All other errors _ -> pure $ UnparsedError error @@ -772,7 +912,11 @@ instance DecodeAeson TxEvaluationFailure where collectIntoMap :: forall k v. Ord k => Array (k /\ v) -> Map k (List v) collectIntoMap = foldl - (\m (k /\ v) -> Map.alter (maybe (Just $ List.singleton v) (Just <<< List.Cons v)) k m) + ( \m (k /\ v) -> Map.alter + (maybe (Just $ List.singleton v) (Just <<< List.Cons v)) + k + m + ) Map.empty ---------------- PROTOCOL PARAMETERS QUERY RESPONSE & PARSING @@ -915,6 +1059,9 @@ instance DecodeAeson OgmiosProtocolParameters where stepPrice <- rationalToSubcoin ps.scriptExecutionPrices.cpu pure { memPrice, stepPrice } -- ExUnits +instance DecodeOgmios OgmiosProtocolParameters where + decodeOgmios = decodeResult + ---------------- CHAIN TIP QUERY RESPONSE & PARSING data ChainTipQR @@ -931,6 +1078,9 @@ instance DecodeAeson ChainTipQR where r :: (ChainOrigin |+| ChainPoint) <- decodeAeson j pure $ either CtChainOrigin CtChainPoint $ toEither1 r +instance DecodeOgmios ChainTipQR where + decodeOgmios = decodeResult + -- | A Blake2b 32-byte digest of an era-independent block header, serialized as -- CBOR in base16 newtype OgmiosBlockHeaderHash = OgmiosBlockHeaderHash String diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 8bc4df848..298974d7f 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -154,7 +154,8 @@ suite = group "Ogmios Aeson tests" do "queryNetwork/tip" -> handle (Proxy :: _ O.ChainTipQR) "queryLedgerState/epoch" -> handle (Proxy :: _ O.CurrentEpoch) "queryNetwork/startTime" -> handle (Proxy :: _ O.OgmiosSystemStart) - "queryLedgerState/eraSummaries" -> handle (Proxy :: _ O.OgmiosEraSummaries) + "queryLedgerState/eraSummaries" -> handle + (Proxy :: _ O.OgmiosEraSummaries) "queryLedgerState/protocolParameters" -> handle (Proxy :: _ O.OgmiosProtocolParameters) "queryLedgerState/stakePools" -> handle diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index dfd02082f..4356db956 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -4,7 +4,7 @@ module Test.Ctl.Ogmios.GenerateFixtures import Prelude -import Aeson (class DecodeAeson, Aeson, stringifyAeson) +import Aeson (Aeson, stringifyAeson) import Control.Parallel (parTraverse) import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) @@ -26,12 +26,17 @@ import Ctl.Internal.QueryM , mkRequestAff , mkWebsocketDispatch ) -import Ctl.Internal.QueryM.JsonRpc2 (JsonRpc2Call) +import Ctl.Internal.QueryM.JsonRpc2 + ( class DecodeOgmios + , JsonRpc2Call + , decodeResult + ) import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallTypeNoArgs) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) import Data.Map as Map +import Data.Newtype (class Newtype, unwrap, wrap) import Data.String.Common (replace) import Data.String.Pattern (Pattern(Pattern), Replacement(Replacement)) import Data.Traversable (for_, traverse_) @@ -48,8 +53,7 @@ import Node.Path (concat) -- A simple websocket for testing mkWebSocket :: forall (a :: Type) (b :: Type) - . DecodeAeson b - => Show b + . DecodeOgmios b => LogLevel -> ServerConfig -> (Either Error (WebSocket (ListenerSet a b)) -> Effect Unit) @@ -81,15 +85,23 @@ mkWebSocket lvl serverCfg cb = do mkWebSocketAff :: forall (a :: Type) (b :: Type) - . DecodeAeson b - => Show b + + -- . Show b + . DecodeOgmios b => LogLevel -> ServerConfig -> Aff (WebSocket (ListenerSet a b)) mkWebSocketAff lvl = makeAff <<< map (map (Canceler <<< map liftEffect)) <<< mkWebSocket lvl -data Query = Query (JsonRpc2Call Unit Aeson) String +data Query = Query (JsonRpc2Call Unit AesonResult) String + +newtype AesonResult = AesonResult Aeson + +derive instance Newtype AesonResult _ + +instance DecodeOgmios AesonResult where + decodeOgmios r = wrap <$> decodeResult r mkQuery' :: String -> Query mkQuery' method = Query (mkOgmiosCallTypeNoArgs method) (sanitiseMethod method) @@ -106,16 +118,12 @@ main = let queries = - [ - mkQuery' "queryNetwork/tip" + [ mkQuery' "queryNetwork/tip" , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" , mkQuery' "queryLedgerState/eraSummaries" , mkQuery' "queryLedgerState/protocolParameters" , mkQuery' "queryLedgerState/stakePools" - -- , mkQuery' "queryLedgerState/rewardAccountSummaries" -- hangs (?) - -- , mkQuery' "submitTransaction" - -- , mkQuery' "evaluateTransaction" ] resps <- flip parTraverse queries \(Query qc method) -> do @@ -123,7 +131,7 @@ main = pure { resp, method } for_ resps \{ resp, method } -> do - let resp' = stringifyAeson resp + let resp' = stringifyAeson $ unwrap resp respMd5 <- liftEffect $ md5HashHex resp' let fp = concat diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 9ca6994b3..f2898946a 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -86,12 +86,14 @@ loadOgmiosFixture query hash = do eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = (unwrap :: OgmiosEraSummaries -> EraSummaries) <$> - loadOgmiosFixture "queryLedgerState-eraSummaries" "722c02660cab6e7267fe330d2383582d" + loadOgmiosFixture "queryLedgerState-eraSummaries" + "722c02660cab6e7267fe330d2383582d" systemStartFixture :: Effect SystemStart systemStartFixture = (unwrap :: OgmiosSystemStart -> SystemStart) <$> - loadOgmiosFixture "queryNetwork-startTime" "7f144fea9c3d7f1998a96806e1b0efee" + loadOgmiosFixture "queryNetwork-startTime" + "7f144fea9c3d7f1998a96806e1b0efee" testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit testPosixTimeToSlot eraSummaries sysStart = do From e2ea619b48ad629a5ead711b48630fb908eb576c Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 3 Nov 2023 18:10:10 +0100 Subject: [PATCH 391/478] Save full Ogmios response in fixtures Also update blockfrost ProtocolParameters fixture to match Ogmios. --- .../schemata/JsonRpc2/UtxoQueryResponse.medea | 84 --------------- ...ters-2d2ce3159a465c84058d7eab67b1b345.json | 1 + ...poch-8d7a461f70d4d44d0d8cdd64c5fba15c.json | 1 + ...poch-9be40cee5b0eee1462c82c6964087ff9.json | 1 - ...poch-bac9162b47c56fc8a4d2a519803d51b3.json | 1 - ...ries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json | 1 - ...ries-722c02660cab6e7267fe330d2383582d.json | 1 - ...ries-d8b19110b9580cddfa3895eea34c2139.json | 1 + ...ters-13365782430bcc1da07918d41b57dd73.json | 1 - ...ters-68ba1141d17af9326cad70407ea3d7fb.json | 1 + ...ools-986e758da884f919a3afac69bea81267.json | 1 - ...ools-c4bb7845eaac5da66d8f3e38f45a31b3.json | 1 - ...ools-e449fe6e00b4f704f6b9b28c7d42047e.json | 1 + ...Time-02fa6f9e7ed04ebfe3294c7648be54d5.json | 1 + ...Time-7f144fea9c3d7f1998a96806e1b0efee.json | 1 - ...-tip-48bd18f8014360789cfdd697b53cfcfd.json | 1 - ...-tip-86ba8232c517e309a0f5f432ed705688.json | 1 - ...-tip-fbd01538064b3ef7b5e3a703dddcb32b.json | 1 + src/Internal/BalanceTx/Error.purs | 29 +++-- src/Internal/QueryM.purs | 102 ++---------------- src/Internal/QueryM/JsonRpc2.purs | 24 +++-- src/Internal/QueryM/Ogmios.purs | 5 +- test/Blockfrost/ProtocolParameters.purs | 14 +-- test/Ogmios/Aeson.purs | 68 +++--------- test/Ogmios/GenerateFixtures.purs | 43 ++------ test/ProtocolParams.purs | 4 +- test/Types/Interval.purs | 14 ++- 27 files changed, 92 insertions(+), 312 deletions(-) delete mode 100644 fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea create mode 100644 fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json create mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json create mode 100644 fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json delete mode 100644 fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json delete mode 100644 fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json delete mode 100644 fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json diff --git a/fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea b/fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea deleted file mode 100644 index 9e55c1a1c..000000000 --- a/fixtures/schemata/JsonRpc2/UtxoQueryResponse.medea +++ /dev/null @@ -1,84 +0,0 @@ -$schema $start - $type - $object - $properties - $property-name "jsonrpc" - $property-schema jsonRpcType - $property-name "method" - $property-schema methodType - $property-name "result" - $property-schema result - $property-name "id" - $property-schema mirrorType - -$schema jsonRpcType - $type - $string - $string-values - "2.0" - -$schema methodType - $type - $string - $string-values - "queryLedgerState/utxo" - -$schema mirrorType - $type - $string - -$schema result - $type - $array - $element-type - utxoEntry - -$schema utxoEntry - $type - $array - $tuple - txOutRef - ogmiosTxOut - -$schema txOutRef - $type - $object - $properties - $property-name "txId" - $property-schema $string - $property-name "index" - $property-schema $number - -$schema ogmiosTxOut - $type - $object - $properties - $property-name "address" - $property-schema $string - $property-name "value" - $property-schema valueType - $property-name "datumHash" - $property-schema datumHashType - $additional-properties-allowed - -$schema valueType - $type - $object - $properties - $property-name "coins" - $property-schema $number - $property-name "assets" - $property-schema assetsType - $optional-property - -$schema datumHashType - $type - $null - $string - -$schema assetsType - $type - $object - $properties - $additional-properties-allowed - $additional-property-schema $number diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json new file mode 100644 index 000000000..d137e184a --- /dev/null +++ b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json @@ -0,0 +1 @@ +{"epoch":374,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"170000000","nonce":"e35763cef0b1b30b21d7cf61e8572e016fe3b71c0619a80d1d4850643357d047","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json b/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json new file mode 100644 index 000000000..093568ebd --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json @@ -0,0 +1 @@ +{"result":374,"method":"queryLedgerState/epoch","jsonrpc":"2.0","id":"queryLedgerState/epoch-3rvj1ml27d5loixoww7","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json b/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json deleted file mode 100644 index 55f04f2ae..000000000 --- a/fixtures/test/ogmios/queryLedgerState-epoch-9be40cee5b0eee1462c82c6964087ff9.json +++ /dev/null @@ -1 +0,0 @@ -365 \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json b/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json deleted file mode 100644 index e8930b6df..000000000 --- a/fixtures/test/ogmios/queryLedgerState-epoch-bac9162b47c56fc8a4d2a519803d51b3.json +++ /dev/null @@ -1 +0,0 @@ -364 \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json deleted file mode 100644 index dec2d5de7..000000000 --- a/fixtures/test/ogmios/queryLedgerState-eraSummaries-14dd5a0ac0940a62e50c6a7e49b0eb0a.json +++ /dev/null @@ -1 +0,0 @@ -[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":31708800,"slot":31708800,"epoch":367},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json deleted file mode 100644 index 2639b9931..000000000 --- a/fixtures/test/ogmios/queryLedgerState-eraSummaries-722c02660cab6e7267fe330d2383582d.json +++ /dev/null @@ -1 +0,0 @@ -[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":31536000,"slot":31536000,"epoch":365},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}] \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json new file mode 100644 index 000000000..6a2ce7478 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json @@ -0,0 +1 @@ +{"result":[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":32486400,"slot":32486400,"epoch":376},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}],"method":"queryLedgerState/eraSummaries","jsonrpc":"2.0","id":"queryLedgerState/eraSummaries-3rvj1ml27d5loixoww8","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json deleted file mode 100644 index 34817bccf..000000000 --- a/fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json +++ /dev/null @@ -1 +0,0 @@ -{"minFeeCoefficient":44,"minFeeConstant":{"lovelace":155381},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"lovelace":2000000},"stakePoolDeposit":{"lovelace":500000000},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"lovelace":170000000},"minUtxoDepositConstant":0,"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json new file mode 100644 index 000000000..154c4a496 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json @@ -0,0 +1 @@ +{"result":{"minFeeCoefficient":44,"minFeeConstant":{"lovelace":155381},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"lovelace":2000000},"stakePoolDeposit":{"lovelace":500000000},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"lovelace":170000000},"minUtxoDepositConstant":0,"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"method":"queryLedgerState/protocolParameters","jsonrpc":"2.0","id":"queryLedgerState/protocolParameters-3rvj1ml27d5loixoww9","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json b/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json deleted file mode 100644 index 9ea1feb92..000000000 --- a/fixtures/test/ogmios/queryLedgerState-stakePools-986e758da884f919a3afac69bea81267.json +++ /dev/null @@ -1 +0,0 @@ -{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":900000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://rb.gy/nijgk","hash":"4988f4fa5d842f080c785fcc8525b5223344b9cef6a3fc29f43c7e80e47749b7"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool14lv8dtwxc0swyhkypzut2u9yvzaqh8k285q08yajwug0qllt7u3":{"id":"pool14lv8dtwxc0swyhkypzut2u9yvzaqh8k285q08yajwug0qllt7u3","vrfVerificationKeyHash":"4edcf855c5e7e0ea3627364b9b907dcc308c9c2b4ebdb3fe9c233023a5ab7b74","pledge":{"lovelace":9500000000},"cost":{"lovelace":170000000},"margin":"1/50","rewardAccount":"stake_test1uqeyz0zltruafwmk0djupujqdmurl6y59s9eeuunsy7l7dcc6n2sv","owners":["32413c5f58f9d4bb767b65c0f2406ef83fe8942c0b9cf393813dff37"],"relays":[{"type":"hostname","hostname":"pvrelay1.nodeempire.io","port":6000},{"type":"hostname","hostname":"pvrelay2.nodeempire.io","port":6000}],"metadata":{"url":"http://metadata.nodeempire.io","hash":"fd2fc54759cf618e3be1064efe1b455bb3d786602f7d6f4cb50c473de84681a2"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":100},"cost":{"lovelace":500000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5002}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003},{"type":"hostname","hostname":"_preview._tcp.happystaking.io"}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":123000000},"cost":{"lovelace":171000000},"margin":"27/625","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json b/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json deleted file mode 100644 index 52139e2d9..000000000 --- a/fixtures/test/ogmios/queryLedgerState-stakePools-c4bb7845eaac5da66d8f3e38f45a31b3.json +++ /dev/null @@ -1 +0,0 @@ -{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":900000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://rb.gy/nijgk","hash":"4988f4fa5d842f080c785fcc8525b5223344b9cef6a3fc29f43c7e80e47749b7"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce":{"id":"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce","vrfVerificationKeyHash":"a1b272e77f8d5cebc04ba482dacba825e8f7f59251d95746e8ff23864e0c89ee","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["788cf0519348fefaf3c721c5f5bd60b195b444fa0d8fb4512dc259be"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku":{"id":"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku","vrfVerificationKeyHash":"5ad90f4be69faac1c7e216cd50631240db41842b5a43f2ce344670fa7219a6c6","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["f631370cc87882bf5e14ab72534caf2655d0a2a50a9a8a3820bb6f4a"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":100},"cost":{"lovelace":500000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5002}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003},{"type":"hostname","hostname":"_preview._tcp.happystaking.io"}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932":{"id":"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932","vrfVerificationKeyHash":"4331f2905796fd9a028c17896ce5305dc1daf710ad448a3872df75722f2cc41d","pledge":{"lovelace":100000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["ba149e2e2379097e65f0c03f2733d3103151e7f100d36dfdb01a0b22"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":4567000000},"cost":{"lovelace":340000000},"margin":"117/5000","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json b/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json new file mode 100644 index 000000000..0fd254181 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json @@ -0,0 +1 @@ +{"result":{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy":{"id":"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy","vrfVerificationKeyHash":"b6168f2e63d95d18756328cf2ea0f869c7f227e50e13f55228cf3854dea16475","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"99/100","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/c856b8c5-0f0a-42db-8a78-59a.json","hash":"8de3639f2d956664dd0d58903461853572e01355895cbc5932e42e22b0c1b960"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":3000000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47":{"id":"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47","vrfVerificationKeyHash":"48de9f061019deaba5729b48be6db15e7169a18574c995cbb27d5b89f243ab9f","pledge":{"lovelace":3000000000},"cost":{"lovelace":170000000},"margin":"1/50","rewardAccount":"stake_test1uz2r2kjj8ulkp2l9l8474pfe800ad77yl2p2ksqg6keza9c8azv2g","owners":["94355a523f3f60abe5f9ebea85393bdfd6fbc4fa82ab4008d5b22e97"],"relays":[{"type":"ipAddress","ipv4":"78.131.56.145","port":7362}],"metadata":{"url":"https://tinyurl.com/2s3jx2rs","hash":"502b700e1c714a9e51534f1f61731a1ae1ec251199bdeb0d7d7fa65fa53b4626"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://github.com/MontiMarti","hash":"72497a1aa897015a10c30bff37371adde3fedf5da930fbf54c40976856782d46"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve":{"id":"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve","vrfVerificationKeyHash":"2288a7b58fe88ea76717ba5dd7741e4274042e6806307c10804c581788098d9b","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"9999/10000","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/f60a27ae-11a4-4e87-9707-3d9.json","hash":"32c22289da648abcb85bf98d81ab0cde0959e92bb01dfd2837966d6b6858d3d0"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ca053fef4b28242ebbdec5bfe99fdcd0ce37927a281dbfd3173f09a59a7a8432"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":1000000},"cost":{"lovelace":200000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5333}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":123000000},"cost":{"lovelace":171000000},"margin":"27/625","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j":{"id":"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j","vrfVerificationKeyHash":"1c3ba4a44d07d779d3b699936ead18a3dd9b20eeaa25281df144c404b611f864","pledge":{"lovelace":1000000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uqrw4g3al234sqskw87z6t45k42z2t9qyp9jyeec83wm0csq2u08c","owners":["06eaa23dfaa358021671fc2d2eb4b554252ca0204b2267383c5db7e2"],"relays":[{"type":"hostname","hostname":"testnet.valhallapool.net","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/t0m3kf/v/main/testnet.json","hash":"1d707d6861b2fdb6b46321270e40ea01ff9a49acc3858b5499b5f33fa4f3bebf"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}},"method":"queryLedgerState/stakePools","jsonrpc":"2.0","id":"queryLedgerState/stakePools-3rvj1ml27d5loixowwa","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json b/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json new file mode 100644 index 000000000..a70856486 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json @@ -0,0 +1 @@ +{"result":"2022-10-25T00:00:00Z","method":"queryNetwork/startTime","jsonrpc":"2.0","id":"queryNetwork/startTime-3rvj1ml27d5loixoww6","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json b/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json deleted file mode 100644 index 19f8162ec..000000000 --- a/fixtures/test/ogmios/queryNetwork-startTime-7f144fea9c3d7f1998a96806e1b0efee.json +++ /dev/null @@ -1 +0,0 @@ -"2022-10-25T00:00:00Z" \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json b/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json deleted file mode 100644 index 13d8a15ea..000000000 --- a/fixtures/test/ogmios/queryNetwork-tip-48bd18f8014360789cfdd697b53cfcfd.json +++ /dev/null @@ -1 +0,0 @@ -{"slot":31501250,"id":"588b5272ed580fa730deb7b602d07d4a6e5505c8c4aaa8afa2dc3992a233fefb"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json b/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json deleted file mode 100644 index 7fa503bc7..000000000 --- a/fixtures/test/ogmios/queryNetwork-tip-86ba8232c517e309a0f5f432ed705688.json +++ /dev/null @@ -1 +0,0 @@ -{"slot":31606555,"id":"61af67789e73c8cb96a25d675001248b7a112a7275f7d300738e6490afe595a4"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json b/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json new file mode 100644 index 000000000..9bf66db46 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json @@ -0,0 +1 @@ +{"result":{"slot":32379177,"id":"5f88efad29d47924ac3c275ad44ec1e1163d04c9e6d98927b1389ae87325a418"},"method":"queryNetwork/tip","jsonrpc":"2.0","id":"queryNetwork/tip-3rvj1ml27d5loixoww4","error":null} \ No newline at end of file diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index d1396e333..3483f99a7 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -26,9 +26,18 @@ module Ctl.Internal.BalanceTx.Error import Prelude import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer(Redeemer), Transaction, _redeemers, _witnessSet) +import Ctl.Internal.Cardano.Types.Transaction + ( Redeemer(Redeemer) + , Transaction + , _redeemers + , _witnessSet + ) import Ctl.Internal.Plutus.Types.Value (Value) -import Ctl.Internal.QueryM.Ogmios (RedeemerPointer, ScriptFailure(..), TxEvaluationFailure(UnparsedError, ScriptFailures)) as Ogmios +import Ctl.Internal.QueryM.Ogmios + ( RedeemerPointer + , ScriptFailure(..) + , TxEvaluationFailure(UnparsedError, ScriptFailures) + ) as Ogmios import Ctl.Internal.QueryM.Ogmios (showRedeemerPointer) import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) @@ -155,7 +164,7 @@ printTxEvaluationFailure :: Transaction -> Ogmios.TxEvaluationFailure -> String printTxEvaluationFailure transaction e = runPrettyString $ case e of - Ogmios.UnparsedError error -> line $ "Unknown error: " <> show error + Ogmios.UnparsedError error -> line $ "Unknown error: " <> error Ogmios.ScriptFailures sf -> line "Script failures:" <> bullet (foldMapWithIndex printScriptFailures sf) where @@ -206,12 +215,14 @@ printTxEvaluationFailure transaction e = ("Unknown input referenced by redeemer: " <> show txIn) Ogmios.NonScriptInputReferencedByRedeemer txIn -> line ("Non script input referenced by redeemer: " <> show txIn) - Ogmios.NoCostModelForLanguage languages -> - line "No cost model for languages:" - <> bullet (foldMap line languages) - Ogmios.InternalLedgerTypeConversionError error -> - line $ "Internal ledger type conversion error, if you ever run into this, please report the issue as you've likely discoverd a critical bug: \"" - <> error <> "\"" + Ogmios.NoCostModelForLanguage languages -> + line "No cost model for languages:" + <> bullet (foldMap line languages) + Ogmios.InternalLedgerTypeConversionError error -> + line $ + "Internal ledger type conversion error, if you ever run into this, please report the issue as you've likely discoverd a critical bug: \"" + <> error + <> "\"" printScriptFailures :: Ogmios.RedeemerPointer -> Array Ogmios.ScriptFailure -> PrettyString diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index cbff78c65..0ba8510dc 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -49,15 +49,7 @@ module Ctl.Internal.QueryM import Prelude -import Aeson - ( class DecodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - , parseJsonStringToAeson - , stringifyAeson - ) +import Aeson (class DecodeAeson, Aeson, JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader @@ -65,12 +57,7 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode import Control.Alt (class Alt) import Control.Alternative (class Alternative) -import Control.Monad.Error.Class - ( class MonadError - , class MonadThrow - , liftEither - , throwError - ) +import Control.Monad.Error.Class (class MonadError, class MonadThrow, liftEither, throwError) import Control.Monad.Logger.Class (class MonadLogger) import Control.Monad.Reader.Class (class MonadAsk, class MonadReader) import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) @@ -78,77 +65,18 @@ import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Helpers (logWithLevel) -import Ctl.Internal.JsWebSocket - ( JsWebSocket - , Url - , _mkWebSocket - , _onWsConnect - , _onWsError - , _onWsMessage - , _removeOnWsError - , _wsClose - , _wsFinalize - , _wsSend - ) +import Ctl.Internal.JsWebSocket (JsWebSocket, Url, _mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _removeOnWsError, _wsClose, _wsFinalize, _wsSend) import Ctl.Internal.Logging (Logger, mkLogger) -import Ctl.Internal.QueryM.Dispatcher - ( DispatchError(JsonError) - , Dispatcher - , GenericPendingRequests - , PendingRequests - , PendingSubmitTxRequests - , RequestBody - , WebsocketDispatch - , mkWebsocketDispatch - , newDispatcher - , newPendingRequests - ) -import Ctl.Internal.QueryM.Dispatcher - ( DispatchError(JsonError, FaultError, ListenerCancelled) - , Dispatcher - , GenericPendingRequests - , PendingRequests - , PendingSubmitTxRequests - , RequestBody - , WebsocketDispatch - , dispatchErrorToError - , mkWebsocketDispatch - , newDispatcher - , newPendingRequests - ) as ExportDispatcher -import Ctl.Internal.QueryM.JsonRpc2 - ( OgmiosDecodeError - , decodeAesonJsonRpc2Response - , decodeOgmios - , ogmiosDecodeErrorToError - ) +import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, mkWebsocketDispatch, newDispatcher, newPendingRequests) +import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError, FaultError, ListenerCancelled), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, dispatchErrorToError, mkWebsocketDispatch, newDispatcher, newPendingRequests) as ExportDispatcher +import Ctl.Internal.QueryM.JsonRpc2 (OgmiosDecodeError, decodeOgmiosResponse, ogmiosDecodeErrorToError) import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 -import Ctl.Internal.QueryM.Ogmios - ( AdditionalUtxoSet - , DelegationsAndRewardsR - , HasTxR - , MaybeMempoolTransaction - , OgmiosProtocolParameters - , PoolParametersR - , ReleasedMempool - , StakePoolsQueryArgument - , TxHash - ) +import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, DelegationsAndRewardsR, HasTxR, MaybeMempoolTransaction, OgmiosProtocolParameters, PoolParametersR, ReleasedMempool, StakePoolsQueryArgument, TxHash) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.UniqueId (ListenerId) -import Ctl.Internal.ServerConfig - ( Host - , ServerConfig - , defaultOgmiosWsConfig - , mkHttpUrl - , mkServerUrl - , mkWsUrl - ) as ExportServerConfig +import Ctl.Internal.ServerConfig (Host, ServerConfig, defaultOgmiosWsConfig, mkHttpUrl, mkServerUrl, mkWsUrl) as ExportServerConfig import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) -import Ctl.Internal.Service.Error - ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) - , ServiceError(ServiceOtherError) - ) +import Ctl.Internal.Service.Error (ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError), ServiceError(ServiceOtherError)) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain @@ -169,15 +97,7 @@ import Data.Traversable (for_, traverse_) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) -import Effect.Aff - ( Aff - , Canceler(Canceler) - , ParAff - , delay - , launchAff_ - , makeAff - , runAff_ - ) +import Effect.Aff (Aff, Canceler(Canceler), ParAff, delay, launchAff_, makeAff, runAff_) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) @@ -761,7 +681,7 @@ mkAddMessageListener dispatcher = \reflection handler -> flip Ref.modify_ dispatcher $ Map.insert reflection - (\aeson -> handler $ decodeOgmios =<< decodeAesonJsonRpc2Response aeson) + (\aeson -> handler $ decodeOgmiosResponse aeson) mkRemoveMessageListener :: forall (requestData :: Type) diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index fc613c8cc..29a805c67 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -12,6 +12,7 @@ module Ctl.Internal.QueryM.JsonRpc2 , OgmiosDecodeError(NoResultError, DecodingError, InvalidResponseError) , class DecodeOgmios , decodeOgmios + , decodeOgmiosResponse , parseJsonRpc2ResponseId , decodeAesonJsonRpc2Response ) where @@ -124,16 +125,18 @@ data OgmiosDecodeError -- Parsing of JsonRpc2Response failed | InvalidResponseError JsonDecodeError +instance Show OgmiosDecodeError where + show (DecodingError err) = show err + show (NoResultError err) = + "Server didn't respond with result. Responded with error: " <> maybe + "" + stringifyAeson + err + -- Parsing of JsonRpc2Response failed + show (InvalidResponseError err) = "Couldn't parse the response: " <> show err + ogmiosDecodeErrorToError :: OgmiosDecodeError -> Error -ogmiosDecodeErrorToError (DecodingError err) = error $ show err -ogmiosDecodeErrorToError (NoResultError err) = - error $ "Server didn't respond with result. Responded with error: " <> maybe - "" - stringifyAeson - err --- Parsing of JsonRpc2Response failed -ogmiosDecodeErrorToError (InvalidResponseError err) = error $ - "Couldn't parse the response: " <> show err +ogmiosDecodeErrorToError err = error $ show err -- | Variation of DecodeAeson for ogmios response, defines how to parse full ogmios reponse. -- We usually parse just the content of the "result" field, @@ -141,6 +144,9 @@ ogmiosDecodeErrorToError (InvalidResponseError err) = error $ class DecodeOgmios o where decodeOgmios :: JsonRpc2Response -> Either OgmiosDecodeError o +decodeOgmiosResponse :: forall o . DecodeOgmios o => Aeson -> Either OgmiosDecodeError o +decodeOgmiosResponse = decodeOgmios <=< decodeAesonJsonRpc2Response + -- | Decode "result" field of ogmios response with DecodeAeson. decodeResult :: forall o. DecodeAeson o => JsonRpc2Response -> Either OgmiosDecodeError o diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index a487bb066..a8b40f97d 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -88,6 +88,7 @@ import Aeson , fromString , getField , isNull + , stringifyAeson , (.:) , (.:?) ) @@ -839,7 +840,7 @@ instance Show ScriptFailure where -- NotEnoughSynced -- CannotCreateEvaluationContext data TxEvaluationFailure - = UnparsedError OgmiosError + = UnparsedError String | ScriptFailures (Map RedeemerPointer (Array ScriptFailure)) derive instance Generic TxEvaluationFailure _ @@ -903,7 +904,7 @@ instance DecodeAeson TxEvaluationFailure where ) ) -- All other errors - _ -> pure $ UnparsedError error + _ -> pure $ UnparsedError $ stringifyAeson aeson where parseElem elem = do diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index f34eb50ad..52e60a926 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -5,12 +5,8 @@ import Prelude import Aeson (class DecodeAeson, decodeJsonString) import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Control.Monad.Error.Class (liftEither) -import Ctl.Internal.QueryM.Ogmios - ( OgmiosProtocolParameters(OgmiosProtocolParameters) - ) -import Ctl.Internal.Service.Blockfrost - ( BlockfrostProtocolParameters(BlockfrostProtocolParameters) - ) +import Ctl.Internal.QueryM.Ogmios (OgmiosProtocolParameters(..)) +import Ctl.Internal.Service.Blockfrost (BlockfrostProtocolParameters(BlockfrostProtocolParameters)) import Data.Bifunctor (lmap) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) @@ -25,11 +21,11 @@ import Test.Spec.Runner (defaultConfig) blockfrostFixture :: String blockfrostFixture = - "blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json" + "blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json" ogmiosFixture :: String ogmiosFixture = - "ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json" + "ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = @@ -48,6 +44,6 @@ suite = group "Blockfrost" do test "ProtocolParameter parsing verification" do BlockfrostProtocolParameters blockfrostFixture' <- loadFixture blockfrostFixture - OgmiosProtocolParameters ogmiosFixture' <- loadFixture ogmiosFixture + { result : OgmiosProtocolParameters ogmiosFixture' } :: { result :: OgmiosProtocolParameters } <- loadFixture ogmiosFixture blockfrostFixture' `shouldEqual` ogmiosFixture' diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 298974d7f..9ea63f146 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -1,36 +1,31 @@ module Test.Ctl.Ogmios.Aeson ( main , suite - , printEvaluateTxFailures ) where import Prelude -import Aeson (class DecodeAeson, Aeson, printJsonDecodeError) +import Aeson (Aeson, printJsonDecodeError) import Aeson as Aeson import Control.Monad.Error.Class (liftEither) import Control.Monad.Trans.Class (lift) import Control.Parallel (parTraverse) -import Ctl.Internal.BalanceTx (printTxEvaluationFailure) +import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, decodeOgmiosResponse) import Ctl.Internal.QueryM.Ogmios as O import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) -import Data.Array (catMaybes, elem, filter, groupAllBy, nubBy) +import Data.Array (catMaybes, elem, groupAllBy, nubBy) import Data.Array.NonEmpty (NonEmptyArray, head, length, tail) import Data.Bifunctor (bimap, lmap) -import Data.Either (either, hush) +import Data.Either (hush) import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.Newtype (unwrap) import Data.String.Regex (match, regex) import Data.String.Regex.Flags (noFlags) -import Data.Traversable (for_, traverse) -import Data.Tuple (fst, snd) +import Data.Traversable (for_) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) import Effect.Class (liftEffect) -import Effect.Class.Console (log) import Effect.Exception (throw) -import Foreign.Object (Object) import Mote (group, skip, test) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (readTextFile, readdir) @@ -46,40 +41,14 @@ supported = , "queryLedgerState/eraSummaries" , "queryLedgerState/protocolParameters" , "queryLedgerState/stakePools" - , "queryLedgerState/rewardAccountSummaries" - , "submitTransaction" - , "evaluateTransaction" + -- , "queryLedgerState/rewardAccountSummaries" -- TODO Support plutus:v2 parameters -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/567 -- , "currentProtocolParameters-noPlutusV1" ] -getField - :: forall (a :: Type). DecodeAeson a => String -> Object Aeson -> Maybe a -getField f o = join $ hush $ Aeson.getFieldOptional' o f - type Query = String --- Given a query and a response of the query, create a special case query -specialize :: Query -> Aeson -> Query -specialize query a - | Just _ :: _ Aeson <- getField "eraMismatch" =<< Aeson.toObject a = query - <> "-" - <> "eraMismatch" - | "currentProtocolParameters" <- query - , Just costModels <- getField "costModels" =<< Aeson.toObject a - , Nothing :: _ Aeson <- getField "plutus:v1" costModels = query <> "-" <> - "noPlutusV1" - | "currentProtocolParameters" <- query - , Just costModels <- getField "costModels" =<< Aeson.toObject a - , Nothing :: _ Aeson <- getField "plutus:v2" costModels = query <> "-" <> - "noPlutusV2" - | "SubmitTx" <- query - , Just _ :: _ Aeson <- getField "SubmitFail" =<< Aeson.toObject a = query - <> "-" - <> "SubmitFail" -specialize query _ = query - readdir' :: FilePath -> Aff (Array FilePath) readdir' fp = (map <<< map) (\fn -> concat [ fp, fn ]) (readdir fp) @@ -110,7 +79,7 @@ loadFixtures = do (Aeson.parseJsonStringToAeson contents) pure case pattern >>= flip match bn >>> map tail of Just [ Just query ] -> Just - { query: specialize query aeson + { query , bn , aeson } @@ -124,15 +93,6 @@ loadFixtures = do pure groupedFiles -printEvaluateTxFailures :: Effect Unit -printEvaluateTxFailures = launchAff_ do - fixtures <- loadFixtures <#> filter (fst >>> (_ == "EvaluateTx")) >>> map snd - flip (traverse >>> traverse) fixtures \{ aeson } -> do - let - response = hush $ Aeson.decodeAeson aeson :: _ O.TxEvaluationR - mbFailure = response >>= unwrap >>> either pure (const Nothing) - for_ mbFailure (log <<< printTxEvaluationFailure mempty) - suite :: TestPlanM (Aff Unit) Unit suite = group "Ogmios Aeson tests" do groupedFiles <- lift loadFixtures @@ -143,13 +103,11 @@ suite = group "Ogmios Aeson tests" do $ for_ files' \{ aeson, bn } -> do let - handle :: forall (a :: Type). DecodeAeson a => Proxy a -> Aff Unit + handle :: forall (a :: Type). DecodeOgmios a => Proxy a -> Aff Unit handle _ = liftEither $ bimap - ( error <<< ((bn <> "\n ") <> _) <<< - printJsonDecodeError - ) + ( error <<< ((bn <> "\n ") <> _) <<< show ) (const unit) - (Aeson.decodeAeson aeson :: _ a) + (decodeOgmiosResponse aeson :: _ a) case query of "queryNetwork/tip" -> handle (Proxy :: _ O.ChainTipQR) "queryLedgerState/epoch" -> handle (Proxy :: _ O.CurrentEpoch) @@ -160,10 +118,8 @@ suite = group "Ogmios Aeson tests" do (Proxy :: _ O.OgmiosProtocolParameters) "queryLedgerState/stakePools" -> handle (Proxy :: _ O.PoolParametersR) - "queryLedgerState/rewardAccountSummaries" -> handle - (Proxy :: _ O.DelegationsAndRewardsR) - "evaluateTransaction" -> handle (Proxy :: _ O.TxEvaluationR) - "submitTransaction" -> handle (Proxy :: _ O.SubmitTxR) + -- "queryLedgerState/rewardAccountSummaries" -> handle + -- (Proxy :: _ O.DelegationsAndRewardsR) _ -> liftEffect $ throw $ "Unknown case " <> bn main :: Effect Unit diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index 4356db956..135bac7df 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -4,39 +4,19 @@ module Test.Ctl.Ogmios.GenerateFixtures import Prelude -import Aeson (Aeson, stringifyAeson) +import Aeson (Aeson, encodeAeson, stringifyAeson) import Control.Parallel (parTraverse) import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) -import Ctl.Internal.JsWebSocket - ( _mkWebSocket - , _onWsConnect - , _onWsError - , _onWsMessage - , _wsClose - , _wsSend - ) -import Ctl.Internal.QueryM - ( ListenerSet - , WebSocket(WebSocket) - , WebsocketDispatch - , defaultMessageListener - , defaultOgmiosWsConfig - , mkListenerSet - , mkRequestAff - , mkWebsocketDispatch - ) -import Ctl.Internal.QueryM.JsonRpc2 - ( class DecodeOgmios - , JsonRpc2Call - , decodeResult - ) +import Ctl.Internal.JsWebSocket (_mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _wsClose, _wsSend) +import Ctl.Internal.QueryM (ListenerSet, WebSocket(WebSocket), WebsocketDispatch, defaultMessageListener, defaultOgmiosWsConfig, mkListenerSet, mkRequestAff, mkWebsocketDispatch) +import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, JsonRpc2Call) import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallTypeNoArgs) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) import Data.Map as Map -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Newtype (class Newtype, unwrap) import Data.String.Common (replace) import Data.String.Pattern (Pattern(Pattern), Replacement(Replacement)) import Data.Traversable (for_, traverse_) @@ -85,8 +65,6 @@ mkWebSocket lvl serverCfg cb = do mkWebSocketAff :: forall (a :: Type) (b :: Type) - - -- . Show b . DecodeOgmios b => LogLevel -> ServerConfig @@ -94,14 +72,15 @@ mkWebSocketAff mkWebSocketAff lvl = makeAff <<< map (map (Canceler <<< map liftEffect)) <<< mkWebSocket lvl -data Query = Query (JsonRpc2Call Unit AesonResult) String +data Query = Query (JsonRpc2Call Unit AesonResponse) String -newtype AesonResult = AesonResult Aeson +newtype AesonResponse = AesonResponse Aeson -derive instance Newtype AesonResult _ +derive instance Newtype AesonResponse _ -instance DecodeOgmios AesonResult where - decodeOgmios r = wrap <$> decodeResult r +-- We decode and save the responses exactly. +instance DecodeOgmios AesonResponse where + decodeOgmios = pure <<< AesonResponse <<< encodeAeson mkQuery' :: String -> Query mkQuery' method = Query (mkOgmiosCallTypeNoArgs method) (sanitiseMethod method) diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index 778214827..bce591b89 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,8 +16,8 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/queryLedgerState-protocolParameters-13365782430bcc1da07918d41b57dd73.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ - (decodeAeson aeson :: Either _ OgmiosProtocolParameters) `shouldSatisfy` + (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) `shouldSatisfy` isRight diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index f2898946a..f771e12f6 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -84,16 +84,14 @@ loadOgmiosFixture query hash = do -- newly generated fixtures are stored in source control, i.e. git. eraSummariesFixture :: Effect EraSummaries -eraSummariesFixture = - (unwrap :: OgmiosEraSummaries -> EraSummaries) <$> - loadOgmiosFixture "queryLedgerState-eraSummaries" - "722c02660cab6e7267fe330d2383582d" +eraSummariesFixture = do + { result } :: { result :: OgmiosEraSummaries} <- loadOgmiosFixture "queryLedgerState-eraSummaries" "d8b19110b9580cddfa3895eea34c2139" + pure $ unwrap result systemStartFixture :: Effect SystemStart -systemStartFixture = - (unwrap :: OgmiosSystemStart -> SystemStart) <$> - loadOgmiosFixture "queryNetwork-startTime" - "7f144fea9c3d7f1998a96806e1b0efee" +systemStartFixture = do + { result } :: { result :: OgmiosSystemStart } <- loadOgmiosFixture "queryNetwork-startTime" "02fa6f9e7ed04ebfe3294c7648be54d5" + pure $ unwrap result testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit testPosixTimeToSlot eraSummaries sysStart = do From f99247802d0aa2d9eb5f279813e5cd3f23f2672e Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sun, 5 Nov 2023 17:06:46 +0100 Subject: [PATCH 392/478] Add evaluateTx fixtures --- src/Internal/QueryM/Ogmios.purs | 2 +- test/Fixtures.purs | 13 +++++- ...sEvaluateTxFailIncompatibleEraFixture.json | 1 + .../OgmiosEvaluateTxFailScriptErrors.json | 1 + ...EvaluateTxInvalidPointerFormatFixture.json | 43 ++++++++++++++----- .../OgmiosEvaluateTxValidRespFixture.json | 43 ++++++++++++++----- test/Ogmios/EvaluateTx.purs | 36 +++++++++------- test/Ogmios/GenerateFixtures.purs | 23 ++++++---- 8 files changed, 117 insertions(+), 45 deletions(-) create mode 100644 test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json create mode 100644 test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index a8b40f97d..f2e750f38 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -1184,7 +1184,7 @@ instance EncodeAeson AdditionalUtxoSet where encodeAeson { "language": "plutus:v2", "cbor": byteArrayToHex s } encodeValue :: Value -> Aeson - encodeValue value = encodeMap $ Map.union adaPart nonAdaPart + encodeValue value = encodeMap $ map encodeMap $ Map.union adaPart nonAdaPart where adaPart = Map.fromFoldable [ ( "ada" /\ diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 097b8a7bc..32ad7cf89 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -32,6 +32,8 @@ module Test.Ctl.Fixtures , nativeScriptFixture6 , nativeScriptFixture7 , nullPaymentPubKeyHash + , ogmiosEvaluateTxFailScriptErrorsFixture + , ogmiosEvaluateTxFailIncompatibleEraFixture , ogmiosEvaluateTxInvalidPointerFormatFixture , ogmiosEvaluateTxValidRespFixture , partiallyAppliedScriptFixture @@ -1441,8 +1443,17 @@ ogmiosEvaluateTxValidRespFixture = ogmiosEvaluateTxInvalidPointerFormatFixture :: Effect Aeson ogmiosEvaluateTxInvalidPointerFormatFixture = + readJsonFixtureFile "test/Fixtures/ogmiosEvaluateTxInvalidPointerFormatFixture.json" + +ogmiosEvaluateTxFailIncompatibleEraFixture :: Effect Aeson +ogmiosEvaluateTxFailIncompatibleEraFixture = + readJsonFixtureFile + "test/Fixtures/ogmiosEvaluateTxFailIncompatibleEraFixture.json" + +ogmiosEvaluateTxFailScriptErrorsFixture :: Effect Aeson +ogmiosEvaluateTxFailScriptErrorsFixture = readJsonFixtureFile - "test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json" + "test/Fixtures/ogmiosEvaluateTxFailScriptErrorsFixture.json" redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer diff --git a/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json b/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json new file mode 100644 index 000000000..feec59ebf --- /dev/null +++ b/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3000,"message":"Trying to evaluate a transaction from an old era (prior to Alonzo).","data":{"incompatibleEra":"shelley"}},"id":null} \ No newline at end of file diff --git a/test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json b/test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json new file mode 100644 index 000000000..83ce449e0 --- /dev/null +++ b/test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3010,"message":"Some scripts of the transactions terminated with error(s).","data":[{"validator":"certificate:11","error":{"code":3117,"message":"The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.","data":{"unknownOutputReferences":[{"transaction":{"id":"731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180"},"index":1}]}}},{"validator":"certificate:15","error":{"code":3011,"message":"An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.","data":{"missingScripts":["mint:11"]}}},{"validator":"withdrawal:16","error":{"code":3111,"message":"Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.","data":{"missingDatums":["342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f"]}}}]},"id":"mK9IYY6GandR"} \ No newline at end of file diff --git a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json index b91cff1ac..437ca5623 100644 --- a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json @@ -1,12 +1,35 @@ { - "EvaluationResult": { - "spend": { - "memory": 1700, - "steps": 476468 - }, - "mint:0": { - "memory": 1685698, - "steps": 609724445 - } - } + "jsonrpc": "2.0", + "method": "evaluateTransaction", + "result": [ + { + "validator": "spend", + "budget": { + "memory": 2766916028110716146, + "cpu": 6325731070934221229 + } + }, + { + "validator": "spend:11", + "budget": { + "memory": 5543181870361291648, + "cpu": 2251643430894285464 + } + }, + { + "validator": "certificate:3", + "budget": { + "memory": 4926587050210136942, + "cpu": 2982577810151428748 + } + }, + { + "validator": "withdrawal:8", + "budget": { + "memory": 3603965291794951667, + "cpu": 937555587227912939 + } + } + ], + "id": "kuOpGfqeiHbY" } diff --git a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json index a368a459e..54b030866 100644 --- a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json @@ -1,12 +1,35 @@ { - "EvaluationResult": { - "spend:1": { - "memory": 1700, - "steps": 476468 - }, - "mint:0": { - "memory": 1685698, - "steps": 609724445 - } - } + "jsonrpc": "2.0", + "method": "evaluateTransaction", + "result": [ + { + "validator": "spend:1", + "budget": { + "memory": 2766916028110716146, + "cpu": 6325731070934221229 + } + }, + { + "validator": "spend:11", + "budget": { + "memory": 5543181870361291648, + "cpu": 2251643430894285464 + } + }, + { + "validator": "certificate:3", + "budget": { + "memory": 4926587050210136942, + "cpu": 2982577810151428748 + } + }, + { + "validator": "withdrawal:8", + "budget": { + "memory": 3603965291794951667, + "cpu": 937555587227912939 + } + } + ], + "id": "kuOpGfqeiHbY" } diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index 9f2a32821..34f01745b 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -3,11 +3,8 @@ module Test.Ctl.Ogmios.EvaluateTx (suite) where import Prelude import Aeson (JsonDecodeError(TypeMismatch), decodeAeson) -import Ctl.Internal.QueryM.Ogmios - ( ExecutionUnits - , RedeemerPointer - , TxEvaluationResult - ) +import Ctl.Internal.QueryM.JsonRpc2 (OgmiosDecodeError(..), decodeOgmios, decodeOgmiosResponse) +import Ctl.Internal.QueryM.Ogmios (ExecutionUnits, RedeemerPointer, TxEvaluationR(..), TxEvaluationResult(..)) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Natural (fromInt') import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Mint, Spend)) @@ -18,10 +15,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) -import Test.Ctl.Fixtures - ( ogmiosEvaluateTxInvalidPointerFormatFixture - , ogmiosEvaluateTxValidRespFixture - ) +import Test.Ctl.Fixtures (ogmiosEvaluateTxFailIncompatibleEraFixture, ogmiosEvaluateTxFailScriptErrorsFixture, ogmiosEvaluateTxInvalidPointerFormatFixture, ogmiosEvaluateTxValidRespFixture) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit @@ -29,17 +23,29 @@ suite = do group "Ogmios EvaluateTx endpoint" do group "Decoding EvaluateTx response" do test "Successfully decodes a valid response" do - txEvalR :: Either JsonDecodeError TxEvaluationResult <- - decodeAeson <$> liftEffect ogmiosEvaluateTxValidRespFixture + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxValidRespFixture (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` - Right ogmiosEvaluateTxValidRespDecoded + Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) test "Fails to decode a response with invalid redeemer pointer format" do - txEvalR :: Either JsonDecodeError TxEvaluationResult <- - decodeAeson <$> liftEffect ogmiosEvaluateTxInvalidPointerFormatFixture + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxInvalidPointerFormatFixture txEvalR `shouldSatisfy` case _ of - Left (TypeMismatch _) -> true + Left (DecodingError (TypeMismatch _)) -> true _ -> false + + test "Successfully decodes a failed execution response (Incompatible era)" do + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailIncompatibleEraFixture + (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` + Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) + + test "Successfully decodes a failed execution response (Script errors)" do + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailScriptErrorsFixture + (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` + Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) ogmiosEvaluateTxValidRespDecoded :: Array (RedeemerPointer /\ ExecutionUnits) ogmiosEvaluateTxValidRespDecoded = diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index 135bac7df..545ce5d0e 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -4,14 +4,14 @@ module Test.Ctl.Ogmios.GenerateFixtures import Prelude -import Aeson (Aeson, encodeAeson, stringifyAeson) +import Aeson (class EncodeAeson, Aeson, encodeAeson, stringifyAeson) import Control.Parallel (parTraverse) import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) import Ctl.Internal.JsWebSocket (_mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _wsClose, _wsSend) import Ctl.Internal.QueryM (ListenerSet, WebSocket(WebSocket), WebsocketDispatch, defaultMessageListener, defaultOgmiosWsConfig, mkListenerSet, mkRequestAff, mkWebsocketDispatch) import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, JsonRpc2Call) -import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallTypeNoArgs) +import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallType) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) @@ -29,6 +29,7 @@ import Effect.Ref as Ref import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (writeTextFile) import Node.Path (concat) +import Test.Unit.Console (print) -- A simple websocket for testing mkWebSocket @@ -53,7 +54,7 @@ mkWebSocket lvl serverCfg cb = do Ref.read pendingRequests >>= traverse_ sendRequest _onWsConnect ws do void $ _onWsError ws \_ -> onError - _onWsMessage ws (logger Debug) $ defaultMessageListener (\_ _ -> pure unit) + _onWsMessage ws (logger Debug) $ defaultMessageListener (\_ str -> print str) [ messageDispatch ] void $ _onWsError ws $ const onError cb $ Right $ WebSocket ws @@ -72,18 +73,23 @@ mkWebSocketAff mkWebSocketAff lvl = makeAff <<< map (map (Canceler <<< map liftEffect)) <<< mkWebSocket lvl -data Query = Query (JsonRpc2Call Unit AesonResponse) String +data Query = Query (JsonRpc2Call Aeson AesonResponse) String Aeson newtype AesonResponse = AesonResponse Aeson derive instance Newtype AesonResponse _ +instance Show AesonResponse where + show = show <<< unwrap -- We decode and save the responses exactly. instance DecodeOgmios AesonResponse where decodeOgmios = pure <<< AesonResponse <<< encodeAeson +mkQueryWithArgs' :: forall a . EncodeAeson a => String -> a -> Query +mkQueryWithArgs' method a = Query (mkOgmiosCallType { method , params : identity } ) (sanitiseMethod method) (encodeAeson a) + mkQuery' :: String -> Query -mkQuery' method = Query (mkOgmiosCallTypeNoArgs method) (sanitiseMethod method) +mkQuery' method = mkQueryWithArgs' method {} -- | To avoid creating directories, replace slashes with dashes sanitiseMethod :: String -> String @@ -97,7 +103,8 @@ main = let queries = - [ mkQuery' "queryNetwork/tip" + [ + mkQuery' "queryNetwork/tip" , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" , mkQuery' "queryLedgerState/eraSummaries" @@ -105,8 +112,8 @@ main = , mkQuery' "queryLedgerState/stakePools" ] - resps <- flip parTraverse queries \(Query qc method) -> do - resp <- mkRequestAff listeners ws (\_ _ -> pure unit) qc identity unit + resps <- flip parTraverse queries \(Query qc method args) -> do + resp <- mkRequestAff listeners ws (\_ _ -> pure unit) qc identity args pure { resp, method } for_ resps \{ resp, method } -> do From 0860b9c4a750542b0fad3267d7b447a4b32e1943 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Nov 2023 14:56:26 +0400 Subject: [PATCH 393/478] Replace "ADA" with "Lovelace" in the error message --- src/Internal/Cardano/Types/Value.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 1143621e2..0a4e1fe7a 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -500,7 +500,7 @@ instance Equipartition Value where pprintValue :: Value -> TagSet pprintValue value = TagSet.fromArray $ - [ "ADA" `tag` BigInt.toString (unwrap (valueToCoin value)) ] + [ "Lovelace" `tag` BigInt.toString (unwrap (valueToCoin value)) ] <> if nonAdaAssets /= mempty then [ "Assets" `tagSetTag` pprintNonAdaAsset nonAdaAssets ] From b516a14216e0ad41048e6892375d6aabdd0ec158 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Nov 2023 14:58:28 +0400 Subject: [PATCH 394/478] Fix formatting --- src/Internal/BalanceTx/Error.purs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 1dcc2fbdf..bdd829e5c 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -118,36 +118,31 @@ explainBalanceTxError = case _ of CollateralReturnError -> "Negative totalCollateral after covering min-utxo-ada requirement." <> "This should be impossible: please report this as a bug to " - <> - bugTrackerLink + <> bugTrackerLink CollateralReturnMinAdaValueCalcError coinsPerUtxoUnit txOut -> "Could not calculate minimum Ada for collateral return.\n" <> "Coins per UTxO unit: " <> show coinsPerUtxoUnit <> "\nTransaction output: " - <> - show txOut + <> show txOut ExUnitsEvaluationFailed _ _ -> "Script evaluation failure while trying to estimate ExUnits" InsufficientUtxoBalanceToCoverAsset asset -> "Insufficient UTxO balance to cover asset named " <> asset <> "\nThis should be impossible: please report this as a bug to " - <> - bugTrackerLink + <> bugTrackerLink ReindexRedeemersError uir -> "Could not reindex redeemer " <> show uir <> "\nThis should be impossible: please report this as a bug to " - <> - bugTrackerLink + <> bugTrackerLink UtxoLookupFailedFor ti -> "Could not look up UTxO for " <> show ti <> " from a given set of UTxOs.\n" <> "This should be impossible: please report this as a bug to " - <> - bugTrackerLink + <> bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" where From c118662233141ce5dd4282ce77377ab8c56612c6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Nov 2023 15:13:21 +0400 Subject: [PATCH 395/478] Improve changelog --- CHANGELOG.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0e21ee98..4eef483fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -142,12 +142,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `E2E_SKIP_JQUERY_DOWNLOAD` configuration variable for [E2E test suite](./doc/e2e-testing.md). It is not needed, because it's expected value can be determined from the environment, and thus it can be an implementation detail ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `reindexSpentScriptRedeemers` function from the public API - if there is a need to modify the `Transaction` in a way that breaks redeemer indices, it should be done before balancing ([#1462](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1462)) - Typed scripts and constraints interface. In practice, it means that the following types now have no type-level arguments: `TxConstraints`, `ScriptLookups`. -- `ImpossibleError` (as it is no longer used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `CannotConvertPaymentPubKeyHash`, `CannotHashMintingPolicy`, `CannotHashValidator` and `CannotHashDatum` variants of `MkUnbalancedTxError` (no longer - used) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `InvalidInContext` (not needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) -- `CannotGetBigIntFromNumber'` and `CannotGetBigNumFromBigInt'` variants of - `PosixTimeToSlotError` (no longer needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) +- Removed error variants (no more needed) ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545)): + - `ImpossibleError` + - `CannotConvertPaymentPubKeyHash`, `CannotHashMintingPolicy`, `CannotHashValidator` and `CannotHashDatum` variants of `MkUnbalancedTxError` + - `InvalidInContext` + - `CannotGetBigIntFromNumber'` and `CannotGetBigNumFromBigInt'` variants of `PosixTimeToSlotError` ## [v5.0.0] From 33bc7817bdc483acf05e76e5e55e59e92a39c25a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Nov 2023 15:17:41 +0400 Subject: [PATCH 396/478] De-duplicate bugTrackerLink function --- src/Internal/BalanceTx/Error.purs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index bdd829e5c..23b15a502 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -33,6 +33,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _witnessSet ) import Ctl.Internal.Cardano.Types.Value (pprintValue) +import Ctl.Internal.Helpers (bugTrackerLink) import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios @@ -98,8 +99,6 @@ data BalanceTxError derive instance Generic BalanceTxError _ instance Show BalanceTxError where - show (ExUnitsEvaluationFailed tx failure) = - "ExUnitsEvaluationFailed: " <> printTxEvaluationFailure tx failure show e = genericShow e explainBalanceTxError :: BalanceTxError -> String @@ -312,7 +311,3 @@ printTxEvaluationFailure transaction e = :: Ogmios.RedeemerPointer -> Array Ogmios.ScriptFailure -> PrettyString printScriptFailures ptr sfs = printRedeemer ptr <> bullet (foldMap printScriptFailure sfs) - -bugTrackerLink :: String -bugTrackerLink = - "https://github.com/Plutonomicon/cardano-transaction-lib/issues" From 6ad58558368b079cb10ce109b55f8ba250b0ec69 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 7 Nov 2023 15:45:46 +0400 Subject: [PATCH 397/478] Improve pretty-printing for Value --- src/Internal/BalanceTx/Error.purs | 40 +++++-------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 23b15a502..4f0c7277a 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -33,7 +33,7 @@ import Ctl.Internal.Cardano.Types.Transaction , _witnessSet ) import Ctl.Internal.Cardano.Types.Value (pprintValue) -import Ctl.Internal.Helpers (bugTrackerLink) +import Ctl.Internal.Helpers (bugTrackerLink, unsafePprintTagSet) import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios @@ -63,16 +63,6 @@ import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) import Data.Lens (non, (^.)) -import Data.Log.Tag - ( Tag - ( StringTag - , IntTag - , NumberTag - , BooleanTag - , JSDateTag - , TagSetTag - ) - ) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) @@ -104,9 +94,9 @@ instance Show BalanceTxError where explainBalanceTxError :: BalanceTxError -> String explainBalanceTxError = case _ of BalanceInsufficientError expected actual -> - "Insufficient balance. Expected: " <> prettyValue expected - <> ", actual: " - <> prettyValue actual + "Insufficient balance. " <> prettyValue "Expected" (unwrap expected) + <> ", " + <> prettyValue "actual" (unwrap actual) CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> @@ -145,26 +135,8 @@ explainBalanceTxError = case _ of UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" where - prettyValue - :: forall (a :: Type) - . Newtype a Value - => a - -> String - prettyValue = unwrap >>> fromPlutusValue >>> pprintValue >>> - foldMapWithIndex prettyEntry - - prettyEntry :: String -> Tag -> String - prettyEntry k v = (k <> ": ") - <> - ( case v of - StringTag s -> s - NumberTag n -> show n - IntTag i -> show i - BooleanTag b -> show b - JSDateTag date -> show date - TagSetTag ts -> foldMapWithIndex prettyEntry ts - ) - <> "\n" + prettyValue :: String -> Value -> String + prettyValue str = fromPlutusValue >>> pprintValue >>> unsafePprintTagSet str newtype Actual = Actual Value From a6e5f3276a65d6972815327f4087857e7c4cb5bc Mon Sep 17 00:00:00 2001 From: zmrocze Date: Tue, 7 Nov 2023 15:26:09 +0100 Subject: [PATCH 398/478] Restore parsing of blockfrost evaluateTx responses (Ogmios v5.6) --- src/Internal/QueryM/Ogmios.purs | 4 +- src/Internal/Service/Blockfrost.purs | 291 ++++++++++++++++----------- 2 files changed, 177 insertions(+), 118 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index f2e750f38..59c311b9a 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -70,6 +70,8 @@ module Ctl.Internal.QueryM.Ogmios , parseIpv6String , rationalToSubcoin , showRedeemerPointer + , decodeRedeemerPointer + , redeemerPtrTypeMismatch ) where import Prelude @@ -773,8 +775,6 @@ instance DecodeOgmios TxEvaluationR where <|> (Left <$> decodeError r) ) --- (anyResponse (map (TxEvaluationR <<< Left) <<< decodeAeson) (map (TxEvaluationR <<< Right) <<< decodeAeson)) - newtype TxEvaluationResult = TxEvaluationResult (Map RedeemerPointer ExecutionUnits) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 3c09cf979..32fa14779 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -60,112 +60,42 @@ module Ctl.Internal.Service.Blockfrost import Prelude -import Aeson - ( class DecodeAeson - , Aeson - , Finite - , JsonDecodeError(TypeMismatch, MissingValue, AtKey) - , decodeAeson - , decodeJsonString - , getField - , getFieldOptional - , getFieldOptional' - , isNull - , parseJsonStringToAeson - , stringifyAeson - , unpackFinite - , (.:) - , (.:!) - ) +import Aeson (class DecodeAeson, Aeson, Finite, JsonDecodeError(TypeMismatch, MissingValue, AtKey), decodeAeson, decodeJsonString, encodeAeson, getField, getFieldOptional, getFieldOptional', isNull, parseJsonStringToAeson, stringifyAeson, unpackFinite, (.:), (.:!)) import Affjax (Error, Response, URL, defaultRequest, printError, request) as Affjax import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax -import Contract.RewardAddress - ( rewardAddressToBech32 - , stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - ) +import Contract.RewardAddress (rewardAddressToBech32, stakePubKeyHashRewardAddress, stakeValidatorHashRewardAddress) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) import Control.Monad.Logger.Class (log) import Control.Monad.Logger.Trans (LoggerT(LoggerT), runLoggerT) import Control.Monad.Maybe.Trans (MaybeT(MaybeT), runMaybeT) +import Control.Monad.Reader (ReaderT(..)) import Control.Monad.Reader.Class (ask, asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) import Control.Parallel (parTraverse) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptAll - , ScriptAny - , ScriptNOfK - , ScriptPubkey - , TimelockExpiry - , TimelockStart - ) - ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls(Costmdls) - , PoolPubKeyHash - , Transaction - , TransactionOutput(TransactionOutput) - , UtxoMap - , poolPubKeyHashToBech32 - ) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAll, ScriptAny, ScriptNOfK, ScriptPubkey, TimelockExpiry, TimelockStart)) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), PoolPubKeyHash, Transaction, TransactionOutput(TransactionOutput), UtxoMap, poolPubKeyHashToBech32) import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Cardano.Types.Value - ( lovelaceValueOf - , mkSingletonNonAdaAsset - , mkValue - ) as Value +import Ctl.Internal.Cardano.Types.Value (lovelaceValueOf, mkSingletonNonAdaAsset, mkValue) as Value import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) -import Ctl.Internal.Contract.QueryHandle.Error - ( GetTxMetadataError - ( GetTxMetadataTxNotFoundError - , GetTxMetadataClientError - , GetTxMetadataMetadataEmptyOrMissingError - ) - ) +import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError(GetTxMetadataTxNotFoundError, GetTxMetadataClientError, GetTxMetadataMetadataEmptyOrMissingError)) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData (deserializeData) -import Ctl.Internal.Deserialization.Transaction - ( convertGeneralTransactionMetadata - ) -import Ctl.Internal.QueryM.Ogmios (TxEvaluationR) +import Ctl.Internal.Deserialization.Transaction (convertGeneralTransactionMetadata) +import Ctl.Internal.QueryM.Ogmios (ExecutionUnits, OgmiosDatum, OgmiosScript, OgmiosTxIn, RedeemerPointer, ScriptFailure, TxEvaluationFailure(..), TxEvaluationR, TxEvaluationResult(..), decodeRedeemerPointer) +import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.Serialization as Serialization -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , addressBech32 - , addressFromBech32 - ) -import Ctl.Internal.Serialization.Hash - ( ScriptHash - , ed25519KeyHashFromBytes - , scriptHashToBytes - ) +import Ctl.Internal.Serialization.Address (Address, NetworkId, addressBech32, addressFromBech32) +import Ctl.Internal.Serialization.Hash (ScriptHash, ed25519KeyHashFromBytes, scriptHashToBytes) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) -import Ctl.Internal.Service.Error - ( ClientError - ( ClientDecodeJsonError - , ClientHttpError - , ClientHttpResponseError - , ClientOtherError - ) - , ServiceError(ServiceBlockfrostError) - ) -import Ctl.Internal.Service.Helpers - ( aesonArray - , aesonObject - , aesonString - , decodeAssetClass - ) +import Ctl.Internal.Service.Error (ClientError(ClientDecodeJsonError, ClientHttpError, ClientHttpResponseError, ClientOtherError), ServiceError(ServiceBlockfrostError)) +import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString, decodeAssetClass) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum @@ -174,39 +104,16 @@ import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries - ( EraSummaries - , EraSummary - , EraSummaryParameters - ) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatum, OutputDatumHash) - ) -import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) - , CostModelV1 - , CostModelV2 - , ProtocolParameters(ProtocolParameters) - , convertPlutusV1CostModel - , convertPlutusV2CostModel - ) +import Ctl.Internal.Types.EraSummaries (EraSummaries, EraSummary, EraSummaryParameters) +import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum, OutputDatumHash)) +import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte), CostModelV1, CostModelV2, ProtocolParameters(ProtocolParameters), convertPlutusV1CostModel, convertPlutusV2CostModel) import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Rational (Rational, reduce) import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV2, PlutusV1) - , StakeValidatorHash - , plutusV1Script - , plutusV2Script - ) +import Ctl.Internal.Types.Scripts (Language(PlutusV2, PlutusV1), StakeValidatorHash, plutusV1Script, plutusV2Script) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) -import Ctl.Internal.Types.Transaction - ( TransactionHash - , TransactionInput(TransactionInput) - ) -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - ) +import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput(TransactionInput)) +import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata(GeneralTransactionMetadata)) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) @@ -221,6 +128,7 @@ import Data.HTTP.Method (Method(GET, POST)) import Data.JSDate (JSDate, now) import Data.Log.Level (LogLevel(Trace)) import Data.Log.Message (Message) +import Data.Map (Map) import Data.Map (empty, fromFoldable, isEmpty, unions) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) import Data.MediaType (MediaType(MediaType)) @@ -238,6 +146,7 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) import Foreign.Object (Object) +import Foreign.Object as ForeignObject -------------------------------------------------------------------------------- -- BlockfrostServiceM @@ -871,8 +780,8 @@ instance DecodeAeson BlockfrostEvaluateTx where where success :: Either JsonDecodeError (Either Aeson TxEvaluationR) success = do - { result } :: { result :: TxEvaluationR } <- decodeAeson aeson - pure $ Right result + { result : BlockfrostTxEvaluationR res } :: { result :: BlockfrostTxEvaluationR } <- decodeAeson aeson + pure $ Right res failure :: Either JsonDecodeError (Either Aeson TxEvaluationR) failure = pure $ Left aeson @@ -880,6 +789,156 @@ instance DecodeAeson BlockfrostEvaluateTx where unwrapBlockfrostEvaluateTx :: BlockfrostEvaluateTx -> Either Aeson TxEvaluationR unwrapBlockfrostEvaluateTx (BlockfrostEvaluateTx ei) = ei +-- +-- TxEvaluationR parsing +-- + +-- | Wrapper for Aeson parsing. +-- +-- Blockfrost returns on evaluateTx endpoint an ogmios response from the older Ogmios v5.6! +-- Ogmios backed parses against Ogmios v6, here we parse using the previous code for Ogmios. +-- +-- Note: TxEvaluationFailure as part of BlockfrostTxEvaluation doesn't parse with it's DecodeAeson instance. +newtype BlockfrostTxEvaluationR = BlockfrostTxEvaluationR TxEvaluationR + +instance DecodeAeson BlockfrostTxEvaluationR where + decodeAeson aeson = BlockfrostTxEvaluationR <$> ((wrap <<< Right <$> decodeBlockfrostTxEvaluationResult aeson) <|> + (wrap <<< Left <$> decodeBlockfrostTxEvaluationFailure aeson)) + +decodeBlockfrostTxEvaluationResult :: Aeson -> Either JsonDecodeError TxEvaluationResult +decodeBlockfrostTxEvaluationResult = aesonObject $ \obj -> do + rdmrPtrExUnitsList :: Array (String /\ Aeson) <- + ForeignObject.toUnfoldable <$> getField obj "EvaluationResult" + TxEvaluationResult <<< Map.fromFoldable <$> + traverse decodeRdmrPtrExUnitsItem rdmrPtrExUnitsList + where + decodeRdmrPtrExUnitsItem + :: String /\ Aeson + -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) + decodeRdmrPtrExUnitsItem (redeemerPtrRaw /\ exUnitsAeson) = do + redeemerPtr <- decodeRedeemerPointer redeemerPtrRaw + flip aesonObject exUnitsAeson $ \exUnitsObj -> do + memory <- getField exUnitsObj "memory" + steps <- getField exUnitsObj "steps" + pure $ redeemerPtr /\ { memory, steps } + +data OldScriptFailure + = ExtraRedeemers (Array RedeemerPointer) + | MissingRequiredDatums + { provided :: Maybe (Array OgmiosDatum), missing :: Array OgmiosDatum } + | MissingRequiredScripts + { resolved :: Map RedeemerPointer OgmiosScript + , missing :: Array OgmiosScript + } + | ValidatorFailed { error :: String, traces :: Array String } + | UnknownInputReferencedByRedeemer OgmiosTxIn + | NonScriptInputReferencedByRedeemer OgmiosTxIn + | IllFormedExecutionBudget (Maybe ExecutionUnits) + | NoCostModelForLanguage String + +type ObjectParser = ReaderT (Object Aeson) (Either JsonDecodeError) + +liftField + :: forall (a :: Type) (b :: Type) + . DecodeAeson a + => String + -> (a -> Either JsonDecodeError b) + -> ObjectParser b +liftField f act = ReaderT (flip getField f >=> act) + +instance DecodeAeson OldScriptFailure where + decodeAeson = aesonObject $ runReaderT cases + where + cases :: ObjectParser OldScriptFailure + cases = decodeExtraRedeemers + <|> decodeMissingRequiredDatums + <|> decodeMissingRequiredScripts + <|> decodeValidatorFailed + <|> decodeUnknownInputReferencedByRedeemer + <|> decodeNonScriptInputReferencedByRedeemer + <|> decodeIllFormedExecutionBudget + <|> decodeNoCostModelForLanguage + <|> defaultCase + + defaultCase :: ObjectParser OldScriptFailure + defaultCase = ReaderT $ const $ Left $ TypeMismatch "Expected ScriptFailure" + + decodeExtraRedeemers :: ObjectParser OldScriptFailure + decodeExtraRedeemers = ExtraRedeemers <$> liftField "extraRedeemers" + (traverse decodeRedeemerPointer) + + decodeMissingRequiredDatums :: ObjectParser OldScriptFailure + decodeMissingRequiredDatums = liftField "missingRequiredDatums" \o -> do + pure $ MissingRequiredDatums o + + decodeMissingRequiredScripts :: ObjectParser OldScriptFailure + decodeMissingRequiredScripts = liftField "missingRequiredScripts" \o -> do + resolvedKV <- ForeignObject.toUnfoldable <$> getField o "resolved" + resolved <- Map.fromFoldable <$> for (resolvedKV :: Array _) + \(k /\ v) -> (_ /\ v) <$> decodeRedeemerPointer k + missing <- getField o "missing" + pure $ MissingRequiredScripts { resolved, missing } + + decodeValidatorFailed :: ObjectParser OldScriptFailure + decodeValidatorFailed = liftField "validatorFailed" \o -> do + pure $ ValidatorFailed o + + decodeUnknownInputReferencedByRedeemer :: ObjectParser OldScriptFailure + decodeUnknownInputReferencedByRedeemer = liftField + "unknownInputReferencedByRedeemer" + \o -> do + pure $ UnknownInputReferencedByRedeemer o + + decodeNonScriptInputReferencedByRedeemer :: ObjectParser OldScriptFailure + decodeNonScriptInputReferencedByRedeemer = liftField + "nonScriptInputReferencedByRedeemer" + \o -> do + pure $ NonScriptInputReferencedByRedeemer o + + decodeIllFormedExecutionBudget :: ObjectParser OldScriptFailure + decodeIllFormedExecutionBudget = liftField "illFormedExecutionBudget" \o -> + do + pure $ IllFormedExecutionBudget o + + decodeNoCostModelForLanguage :: ObjectParser OldScriptFailure + decodeNoCostModelForLanguage = liftField "noCostModelForLanguage" \o -> do + pure $ NoCostModelForLanguage o + +decodeBlockfrostTxEvaluationFailure :: Aeson -> Either JsonDecodeError TxEvaluationFailure +decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases + where + cases :: ObjectParser TxEvaluationFailure + cases = decodeScriptFailures <|> defaultCase + + defaultCase :: ObjectParser TxEvaluationFailure + defaultCase = ReaderT \o -> + pure (UnparsedError (stringifyAeson (encodeAeson o))) + + -- translate Ogmios v5.6 ScriptFailures to Ogmios v6 + translateOldToNew :: OldScriptFailure -> Either JsonDecodeError ScriptFailure + translateOldToNew x = case x of + ExtraRedeemers ptrs -> pure $ Ogmios.ExtraRedeemers ptrs + MissingRequiredDatums { provided: _, missing } -> pure $ Ogmios.MissingRequiredDatums missing + MissingRequiredScripts { resolved: _, missing } -> + Ogmios.MissingRequiredScripts <$> traverse decodeRedeemerPointer missing + ValidatorFailed { error, traces } -> pure $ Ogmios.ValidatorFailed { error, traces } + UnknownInputReferencedByRedeemer txin -> pure $ Ogmios.UnknownInputReferencedByRedeemer txin + NonScriptInputReferencedByRedeemer txin -> pure $ Ogmios.NonScriptInputReferencedByRedeemer txin + -- TODO: This is a stretch: + IllFormedExecutionBudget mexu -> pure $ Ogmios.InternalLedgerTypeConversionError ("NoCostModelForLanguage error: " <> show mexu) + NoCostModelForLanguage lang -> pure $ Ogmios.NoCostModelForLanguage [ lang ] + + decodeScriptFailures :: ObjectParser TxEvaluationFailure + decodeScriptFailures = ReaderT \o -> do + scriptFailuresKV <- ForeignObject.toUnfoldable + <$> (getField o "EvaluationFailure" >>= flip getField "ScriptFailures") + scriptFailures <- Map.fromFoldable <$> for (scriptFailuresKV :: Array _) + \(k /\ v) -> do + v' <- traverse translateOldToNew =<< decodeAeson v + (_ /\ v') <$> decodeRedeemerPointer k + pure $ ScriptFailures scriptFailures + + -------------------------------------------------------------------------------- -- BlockfrostUtxosAtAddress / BlockfrostUtxosOfTransaction -------------------------------------------------------------------------------- From 559d8fa3e5716dfebefa6859a002cf2398a7c62e Mon Sep 17 00:00:00 2001 From: zmrocze Date: Tue, 7 Nov 2023 18:18:20 +0100 Subject: [PATCH 399/478] Fix test - ogmios decoding --- src/Internal/BalanceTx/Error.purs | 8 +- src/Internal/QueryM.purs | 99 +++++++++++-- src/Internal/QueryM/JsonRpc2.purs | 5 +- src/Internal/QueryM/Ogmios.purs | 45 ++++-- src/Internal/Service/Blockfrost.purs | 179 ++++++++++++++++++++---- test/Blockfrost/ProtocolParameters.purs | 7 +- test/Fixtures.purs | 3 +- test/Ogmios/Aeson.purs | 2 +- test/Ogmios/EvaluateTx.purs | 56 +++++--- test/Ogmios/GenerateFixtures.purs | 35 +++-- test/ProtocolParams.purs | 5 +- test/Types/Interval.purs | 8 +- 12 files changed, 354 insertions(+), 98 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 3483f99a7..8f478af8f 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -34,11 +34,9 @@ import Ctl.Internal.Cardano.Types.Transaction ) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios - ( RedeemerPointer - , ScriptFailure(..) - , TxEvaluationFailure(UnparsedError, ScriptFailures) - ) as Ogmios -import Ctl.Internal.QueryM.Ogmios (showRedeemerPointer) + ( showRedeemerPointer + ) +import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 0ba8510dc..ccfe589d2 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -49,7 +49,15 @@ module Ctl.Internal.QueryM import Prelude -import Aeson (class DecodeAeson, Aeson, JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) +import Aeson + ( class DecodeAeson + , Aeson + , JsonDecodeError(TypeMismatch) + , decodeAeson + , encodeAeson + , parseJsonStringToAeson + , stringifyAeson + ) import Affjax (Error, Response, defaultRequest, request) as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader @@ -57,7 +65,12 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode import Control.Alt (class Alt) import Control.Alternative (class Alternative) -import Control.Monad.Error.Class (class MonadError, class MonadThrow, liftEither, throwError) +import Control.Monad.Error.Class + ( class MonadError + , class MonadThrow + , liftEither + , throwError + ) import Control.Monad.Logger.Class (class MonadLogger) import Control.Monad.Reader.Class (class MonadAsk, class MonadReader) import Control.Monad.Reader.Trans (ReaderT(ReaderT), asks) @@ -65,18 +78,76 @@ import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Helpers (logWithLevel) -import Ctl.Internal.JsWebSocket (JsWebSocket, Url, _mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _removeOnWsError, _wsClose, _wsFinalize, _wsSend) +import Ctl.Internal.JsWebSocket + ( JsWebSocket + , Url + , _mkWebSocket + , _onWsConnect + , _onWsError + , _onWsMessage + , _removeOnWsError + , _wsClose + , _wsFinalize + , _wsSend + ) import Ctl.Internal.Logging (Logger, mkLogger) -import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, mkWebsocketDispatch, newDispatcher, newPendingRequests) -import Ctl.Internal.QueryM.Dispatcher (DispatchError(JsonError, FaultError, ListenerCancelled), Dispatcher, GenericPendingRequests, PendingRequests, PendingSubmitTxRequests, RequestBody, WebsocketDispatch, dispatchErrorToError, mkWebsocketDispatch, newDispatcher, newPendingRequests) as ExportDispatcher -import Ctl.Internal.QueryM.JsonRpc2 (OgmiosDecodeError, decodeOgmiosResponse, ogmiosDecodeErrorToError) +import Ctl.Internal.QueryM.Dispatcher + ( DispatchError(JsonError) + , Dispatcher + , GenericPendingRequests + , PendingRequests + , PendingSubmitTxRequests + , RequestBody + , WebsocketDispatch + , mkWebsocketDispatch + , newDispatcher + , newPendingRequests + ) +import Ctl.Internal.QueryM.Dispatcher + ( DispatchError(JsonError, FaultError, ListenerCancelled) + , Dispatcher + , GenericPendingRequests + , PendingRequests + , PendingSubmitTxRequests + , RequestBody + , WebsocketDispatch + , dispatchErrorToError + , mkWebsocketDispatch + , newDispatcher + , newPendingRequests + ) as ExportDispatcher +import Ctl.Internal.QueryM.JsonRpc2 + ( OgmiosDecodeError + , decodeOgmiosResponse + , ogmiosDecodeErrorToError + ) import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 -import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, DelegationsAndRewardsR, HasTxR, MaybeMempoolTransaction, OgmiosProtocolParameters, PoolParametersR, ReleasedMempool, StakePoolsQueryArgument, TxHash) +import Ctl.Internal.QueryM.Ogmios + ( AdditionalUtxoSet + , DelegationsAndRewardsR + , HasTxR + , MaybeMempoolTransaction + , OgmiosProtocolParameters + , PoolParametersR + , ReleasedMempool + , StakePoolsQueryArgument + , TxHash + ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.UniqueId (ListenerId) -import Ctl.Internal.ServerConfig (Host, ServerConfig, defaultOgmiosWsConfig, mkHttpUrl, mkServerUrl, mkWsUrl) as ExportServerConfig +import Ctl.Internal.ServerConfig + ( Host + , ServerConfig + , defaultOgmiosWsConfig + , mkHttpUrl + , mkServerUrl + , mkWsUrl + ) as ExportServerConfig import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) -import Ctl.Internal.Service.Error (ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError), ServiceError(ServiceOtherError)) +import Ctl.Internal.Service.Error + ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) + , ServiceError(ServiceOtherError) + ) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain @@ -97,7 +168,15 @@ import Data.Traversable (for_, traverse_) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) -import Effect.Aff (Aff, Canceler(Canceler), ParAff, delay, launchAff_, makeAff, runAff_) +import Effect.Aff + ( Aff + , Canceler(Canceler) + , ParAff + , delay + , launchAff_ + , makeAff + , runAff_ + ) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, error) diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 29a805c67..18f43a967 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -133,7 +133,7 @@ instance Show OgmiosDecodeError where stringifyAeson err -- Parsing of JsonRpc2Response failed - show (InvalidResponseError err) = "Couldn't parse the response: " <> show err + show (InvalidResponseError err) = "Couldn't parse the response: " <> show err ogmiosDecodeErrorToError :: OgmiosDecodeError -> Error ogmiosDecodeErrorToError err = error $ show err @@ -144,7 +144,8 @@ ogmiosDecodeErrorToError err = error $ show err class DecodeOgmios o where decodeOgmios :: JsonRpc2Response -> Either OgmiosDecodeError o -decodeOgmiosResponse :: forall o . DecodeOgmios o => Aeson -> Either OgmiosDecodeError o +decodeOgmiosResponse + :: forall o. DecodeOgmios o => Aeson -> Either OgmiosDecodeError o decodeOgmiosResponse = decodeOgmios <=< decodeAesonJsonRpc2Response -- | Decode "result" field of ogmios response with DecodeAeson. diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 59c311b9a..0e65e82b7 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -378,10 +378,9 @@ instance Show MempoolSizeAndCapacity where instance DecodeAeson MempoolSizeAndCapacity where decodeAeson = aesonObject \o -> do - capacity <- getField o "maxCapacity" - currentSize <- getField o "currentSize" - numberOfTxs <- (flip getField "transactions") >=> (flip getField "count") $ - o + capacity <- getField o "maxCapacity" >>= flip getField "bytes" + currentSize <- getField o "currentSize" >>= flip getField "bytes" + numberOfTxs <- getField o "transactions" >>= flip getField "count" pure $ wrap { capacity, currentSize, numberOfTxs } instance DecodeOgmios MempoolSizeAndCapacity where @@ -399,10 +398,14 @@ instance Show MempoolTransaction where show = genericShow instance DecodeAeson MempoolTransaction where - decodeAeson = aesonObject \o -> do - id <- o .: "id" - raw <- o .: "cbor" - pure $ MempoolTransaction { id, raw } + decodeAeson aeson = do + { transaction: tx } + :: { transaction :: + { id :: String + , raw :: String + } + } <- decodeAeson aeson + pure $ MempoolTransaction { id: tx.id, raw: tx.raw } newtype MaybeMempoolTransaction = MaybeMempoolTransaction (Maybe MempoolTransaction) @@ -456,7 +459,19 @@ instance DecodeOgmios SubmitTxR where ( bimap DecodingError SubmitTxSuccess <<< decodeTxHash =<< decodeResult response ) - <|> (SubmitFail <$> decodeError response) + <|> + ( SubmitFail <$> + ( do + -- With Ogmios 5.6 we failed with error on deserialization error, so we do now as well + err <- decodeError response + -- as of 7.11.23 it's in {3005} u [3100, 3159] range + if (3000 <= err.code && err.code <= 3999) then + pure err + else + Left $ DecodingError $ TypeMismatch + "Expected error code in a range [3000, 3999]" + ) + ) where decodeTxHash :: Aeson -> Either JsonDecodeError TxHash @@ -648,8 +663,8 @@ instance DecodeOgmios PoolParametersR where decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters decodePoolParameters objParams = do vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrfVerificationKeyHash" - pledge <- objParams .: "pledge" - cost <- objParams .: "cost" + pledge <- objParams .: "pledge" >>= aesonObject (\obj -> obj .: "lovelace") + cost <- objParams .: "cost" >>= aesonObject (\obj -> obj .: "lovelace") margin <- decodeUnitInterval =<< objParams .: "margin" rewardAccount <- objParams .: "rewardAccount" poolOwners <- objParams .: "owners" @@ -1177,7 +1192,13 @@ instance EncodeAeson AdditionalUtxoSet where encodeScriptRef :: ScriptRef -> Aeson encodeScriptRef (NativeScriptRef s) = encodeAeson $ - { "language": "native", "cbor": s, "json": (encodeNativeScript s) } + { "language": "native" + , + -- WARN: We pass empty cbor as an argument because we don't have it. + -- We pass the argument as json instead and seemingly ogmios accepts if only json is present. + "cbor": "" + , "json": (encodeNativeScript s) + } encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV1))) = encodeAeson { "language": "plutus:v1", "cbor": byteArrayToHex s } encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV2))) = diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 32fa14779..8cc360f1a 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -60,42 +60,126 @@ module Ctl.Internal.Service.Blockfrost import Prelude -import Aeson (class DecodeAeson, Aeson, Finite, JsonDecodeError(TypeMismatch, MissingValue, AtKey), decodeAeson, decodeJsonString, encodeAeson, getField, getFieldOptional, getFieldOptional', isNull, parseJsonStringToAeson, stringifyAeson, unpackFinite, (.:), (.:!)) +import Aeson + ( class DecodeAeson + , Aeson + , Finite + , JsonDecodeError(TypeMismatch, MissingValue, AtKey) + , decodeAeson + , decodeJsonString + , encodeAeson + , getField + , getFieldOptional + , getFieldOptional' + , isNull + , parseJsonStringToAeson + , stringifyAeson + , unpackFinite + , (.:) + , (.:!) + ) import Affjax (Error, Response, URL, defaultRequest, printError, request) as Affjax import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax -import Contract.RewardAddress (rewardAddressToBech32, stakePubKeyHashRewardAddress, stakeValidatorHashRewardAddress) +import Contract.RewardAddress + ( rewardAddressToBech32 + , stakePubKeyHashRewardAddress + , stakeValidatorHashRewardAddress + ) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) import Control.Monad.Logger.Class (log) import Control.Monad.Logger.Trans (LoggerT(LoggerT), runLoggerT) import Control.Monad.Maybe.Trans (MaybeT(MaybeT), runMaybeT) -import Control.Monad.Reader (ReaderT(..)) +import Control.Monad.Reader (ReaderT(ReaderT)) import Control.Monad.Reader.Class (ask, asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) import Control.Parallel (parTraverse) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAll, ScriptAny, ScriptNOfK, ScriptPubkey, TimelockExpiry, TimelockStart)) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), PoolPubKeyHash, Transaction, TransactionOutput(TransactionOutput), UtxoMap, poolPubKeyHashToBech32) +import Ctl.Internal.Cardano.Types.NativeScript + ( NativeScript + ( ScriptAll + , ScriptAny + , ScriptNOfK + , ScriptPubkey + , TimelockExpiry + , TimelockStart + ) + ) +import Ctl.Internal.Cardano.Types.ScriptRef + ( ScriptRef(NativeScriptRef, PlutusScriptRef) + ) +import Ctl.Internal.Cardano.Types.Transaction + ( Costmdls(Costmdls) + , PoolPubKeyHash + , Transaction + , TransactionOutput(TransactionOutput) + , UtxoMap + , poolPubKeyHashToBech32 + ) import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Cardano.Types.Value (lovelaceValueOf, mkSingletonNonAdaAsset, mkValue) as Value +import Ctl.Internal.Cardano.Types.Value + ( lovelaceValueOf + , mkSingletonNonAdaAsset + , mkValue + ) as Value import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) -import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError(GetTxMetadataTxNotFoundError, GetTxMetadataClientError, GetTxMetadataMetadataEmptyOrMissingError)) +import Ctl.Internal.Contract.QueryHandle.Error + ( GetTxMetadataError + ( GetTxMetadataTxNotFoundError + , GetTxMetadataClientError + , GetTxMetadataMetadataEmptyOrMissingError + ) + ) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData (deserializeData) -import Ctl.Internal.Deserialization.Transaction (convertGeneralTransactionMetadata) -import Ctl.Internal.QueryM.Ogmios (ExecutionUnits, OgmiosDatum, OgmiosScript, OgmiosTxIn, RedeemerPointer, ScriptFailure, TxEvaluationFailure(..), TxEvaluationR, TxEvaluationResult(..), decodeRedeemerPointer) +import Ctl.Internal.Deserialization.Transaction + ( convertGeneralTransactionMetadata + ) +import Ctl.Internal.QueryM.Ogmios + ( ExecutionUnits + , OgmiosDatum + , OgmiosScript + , OgmiosTxIn + , RedeemerPointer + , ScriptFailure + , TxEvaluationFailure(ScriptFailures, UnparsedError) + , TxEvaluationR + , TxEvaluationResult(TxEvaluationResult) + , decodeRedeemerPointer + ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.Serialization as Serialization -import Ctl.Internal.Serialization.Address (Address, NetworkId, addressBech32, addressFromBech32) -import Ctl.Internal.Serialization.Hash (ScriptHash, ed25519KeyHashFromBytes, scriptHashToBytes) +import Ctl.Internal.Serialization.Address + ( Address + , NetworkId + , addressBech32 + , addressFromBech32 + ) +import Ctl.Internal.Serialization.Hash + ( ScriptHash + , ed25519KeyHashFromBytes + , scriptHashToBytes + ) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) -import Ctl.Internal.Service.Error (ClientError(ClientDecodeJsonError, ClientHttpError, ClientHttpResponseError, ClientOtherError), ServiceError(ServiceBlockfrostError)) -import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString, decodeAssetClass) +import Ctl.Internal.Service.Error + ( ClientError + ( ClientDecodeJsonError + , ClientHttpError + , ClientHttpResponseError + , ClientOtherError + ) + , ServiceError(ServiceBlockfrostError) + ) +import Ctl.Internal.Service.Helpers + ( aesonArray + , aesonObject + , aesonString + , decodeAssetClass + ) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum @@ -104,16 +188,39 @@ import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) -import Ctl.Internal.Types.EraSummaries (EraSummaries, EraSummary, EraSummaryParameters) -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum, OutputDatumHash)) -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte), CostModelV1, CostModelV2, ProtocolParameters(ProtocolParameters), convertPlutusV1CostModel, convertPlutusV2CostModel) +import Ctl.Internal.Types.EraSummaries + ( EraSummaries + , EraSummary + , EraSummaryParameters + ) +import Ctl.Internal.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatum, OutputDatumHash) + ) +import Ctl.Internal.Types.ProtocolParameters + ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) + , CostModelV1 + , CostModelV2 + , ProtocolParameters(ProtocolParameters) + , convertPlutusV1CostModel + , convertPlutusV2CostModel + ) import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Rational (Rational, reduce) import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Scripts (Language(PlutusV2, PlutusV1), StakeValidatorHash, plutusV1Script, plutusV2Script) +import Ctl.Internal.Types.Scripts + ( Language(PlutusV2, PlutusV1) + , StakeValidatorHash + , plutusV1Script + , plutusV2Script + ) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput(TransactionInput)) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata(GeneralTransactionMetadata)) +import Ctl.Internal.Types.Transaction + ( TransactionHash + , TransactionInput(TransactionInput) + ) +import Ctl.Internal.Types.TransactionMetadata + ( GeneralTransactionMetadata(GeneralTransactionMetadata) + ) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) import Data.BigInt (BigInt) @@ -780,7 +887,8 @@ instance DecodeAeson BlockfrostEvaluateTx where where success :: Either JsonDecodeError (Either Aeson TxEvaluationR) success = do - { result : BlockfrostTxEvaluationR res } :: { result :: BlockfrostTxEvaluationR } <- decodeAeson aeson + { result: BlockfrostTxEvaluationR res } + :: { result :: BlockfrostTxEvaluationR } <- decodeAeson aeson pure $ Right res failure :: Either JsonDecodeError (Either Aeson TxEvaluationR) @@ -802,10 +910,13 @@ unwrapBlockfrostEvaluateTx (BlockfrostEvaluateTx ei) = ei newtype BlockfrostTxEvaluationR = BlockfrostTxEvaluationR TxEvaluationR instance DecodeAeson BlockfrostTxEvaluationR where - decodeAeson aeson = BlockfrostTxEvaluationR <$> ((wrap <<< Right <$> decodeBlockfrostTxEvaluationResult aeson) <|> - (wrap <<< Left <$> decodeBlockfrostTxEvaluationFailure aeson)) + decodeAeson aeson = BlockfrostTxEvaluationR <$> + ( (wrap <<< Right <$> decodeBlockfrostTxEvaluationResult aeson) <|> + (wrap <<< Left <$> decodeBlockfrostTxEvaluationFailure aeson) + ) -decodeBlockfrostTxEvaluationResult :: Aeson -> Either JsonDecodeError TxEvaluationResult +decodeBlockfrostTxEvaluationResult + :: Aeson -> Either JsonDecodeError TxEvaluationResult decodeBlockfrostTxEvaluationResult = aesonObject $ \obj -> do rdmrPtrExUnitsList :: Array (String /\ Aeson) <- ForeignObject.toUnfoldable <$> getField obj "EvaluationResult" @@ -904,7 +1015,8 @@ instance DecodeAeson OldScriptFailure where decodeNoCostModelForLanguage = liftField "noCostModelForLanguage" \o -> do pure $ NoCostModelForLanguage o -decodeBlockfrostTxEvaluationFailure :: Aeson -> Either JsonDecodeError TxEvaluationFailure +decodeBlockfrostTxEvaluationFailure + :: Aeson -> Either JsonDecodeError TxEvaluationFailure decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases where cases :: ObjectParser TxEvaluationFailure @@ -918,14 +1030,20 @@ decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases translateOldToNew :: OldScriptFailure -> Either JsonDecodeError ScriptFailure translateOldToNew x = case x of ExtraRedeemers ptrs -> pure $ Ogmios.ExtraRedeemers ptrs - MissingRequiredDatums { provided: _, missing } -> pure $ Ogmios.MissingRequiredDatums missing + MissingRequiredDatums { provided: _, missing } -> pure $ + Ogmios.MissingRequiredDatums missing MissingRequiredScripts { resolved: _, missing } -> Ogmios.MissingRequiredScripts <$> traverse decodeRedeemerPointer missing - ValidatorFailed { error, traces } -> pure $ Ogmios.ValidatorFailed { error, traces } - UnknownInputReferencedByRedeemer txin -> pure $ Ogmios.UnknownInputReferencedByRedeemer txin - NonScriptInputReferencedByRedeemer txin -> pure $ Ogmios.NonScriptInputReferencedByRedeemer txin + ValidatorFailed { error, traces } -> pure $ Ogmios.ValidatorFailed + { error, traces } + UnknownInputReferencedByRedeemer txin -> pure $ + Ogmios.UnknownInputReferencedByRedeemer txin + NonScriptInputReferencedByRedeemer txin -> pure $ + Ogmios.NonScriptInputReferencedByRedeemer txin -- TODO: This is a stretch: - IllFormedExecutionBudget mexu -> pure $ Ogmios.InternalLedgerTypeConversionError ("NoCostModelForLanguage error: " <> show mexu) + IllFormedExecutionBudget mexu -> pure $ + Ogmios.InternalLedgerTypeConversionError + ("NoCostModelForLanguage error: " <> show mexu) NoCostModelForLanguage lang -> pure $ Ogmios.NoCostModelForLanguage [ lang ] decodeScriptFailures :: ObjectParser TxEvaluationFailure @@ -938,7 +1056,6 @@ decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases (_ /\ v') <$> decodeRedeemerPointer k pure $ ScriptFailures scriptFailures - -------------------------------------------------------------------------------- -- BlockfrostUtxosAtAddress / BlockfrostUtxosOfTransaction -------------------------------------------------------------------------------- diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index 52e60a926..70e146f60 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -6,7 +6,9 @@ import Aeson (class DecodeAeson, decodeJsonString) import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Control.Monad.Error.Class (liftEither) import Ctl.Internal.QueryM.Ogmios (OgmiosProtocolParameters(..)) -import Ctl.Internal.Service.Blockfrost (BlockfrostProtocolParameters(BlockfrostProtocolParameters)) +import Ctl.Internal.Service.Blockfrost + ( BlockfrostProtocolParameters(BlockfrostProtocolParameters) + ) import Data.Bifunctor (lmap) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) @@ -44,6 +46,7 @@ suite = group "Blockfrost" do test "ProtocolParameter parsing verification" do BlockfrostProtocolParameters blockfrostFixture' <- loadFixture blockfrostFixture - { result : OgmiosProtocolParameters ogmiosFixture' } :: { result :: OgmiosProtocolParameters } <- loadFixture ogmiosFixture + { result: OgmiosProtocolParameters ogmiosFixture' } + :: { result :: OgmiosProtocolParameters } <- loadFixture ogmiosFixture blockfrostFixture' `shouldEqual` ogmiosFixture' diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 32ad7cf89..c3ae2481d 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -1443,7 +1443,8 @@ ogmiosEvaluateTxValidRespFixture = ogmiosEvaluateTxInvalidPointerFormatFixture :: Effect Aeson ogmiosEvaluateTxInvalidPointerFormatFixture = - readJsonFixtureFile "test/Fixtures/ogmiosEvaluateTxInvalidPointerFormatFixture.json" + readJsonFixtureFile + "test/Fixtures/ogmiosEvaluateTxInvalidPointerFormatFixture.json" ogmiosEvaluateTxFailIncompatibleEraFixture :: Effect Aeson ogmiosEvaluateTxFailIncompatibleEraFixture = diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 9ea63f146..a9e63a1bf 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -105,7 +105,7 @@ suite = group "Ogmios Aeson tests" do let handle :: forall (a :: Type). DecodeOgmios a => Proxy a -> Aff Unit handle _ = liftEither $ bimap - ( error <<< ((bn <> "\n ") <> _) <<< show ) + (error <<< ((bn <> "\n ") <> _) <<< show) (const unit) (decodeOgmiosResponse aeson :: _ a) case query of diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index 34f01745b..05f86b725 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -2,21 +2,32 @@ module Test.Ctl.Ogmios.EvaluateTx (suite) where import Prelude -import Aeson (JsonDecodeError(TypeMismatch), decodeAeson) -import Ctl.Internal.QueryM.JsonRpc2 (OgmiosDecodeError(..), decodeOgmios, decodeOgmiosResponse) -import Ctl.Internal.QueryM.Ogmios (ExecutionUnits, RedeemerPointer, TxEvaluationR(..), TxEvaluationResult(..)) +import Aeson (JsonDecodeError(TypeMismatch)) +import Ctl.Internal.QueryM.JsonRpc2 + ( OgmiosDecodeError(DecodingError) + , decodeOgmiosResponse + ) +import Ctl.Internal.QueryM.Ogmios + ( ExecutionUnits + , RedeemerPointer + , TxEvaluationR(TxEvaluationR) + , TxEvaluationResult(TxEvaluationResult) + ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Natural (fromInt') import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Mint, Spend)) import Data.Either (Either(Left, Right)) -import Data.Map (toUnfoldable) as Map -import Data.Newtype (unwrap) +import Data.Map (fromFoldable) as Map import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) -import Test.Ctl.Fixtures (ogmiosEvaluateTxFailIncompatibleEraFixture, ogmiosEvaluateTxFailScriptErrorsFixture, ogmiosEvaluateTxInvalidPointerFormatFixture, ogmiosEvaluateTxValidRespFixture) -import Test.Spec.Assertions (shouldEqual, shouldSatisfy) +-- import Test.Ctl.Fixtures (ogmiosEvaluateTxFailIncompatibleEraFixture, ogmiosEvaluateTxFailScriptErrorsFixture, ogmiosEvaluateTxInvalidPointerFormatFixture, ogmiosEvaluateTxValidRespFixture) +import Test.Ctl.Fixtures + ( ogmiosEvaluateTxInvalidPointerFormatFixture + , ogmiosEvaluateTxValidRespFixture + ) +import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do @@ -25,27 +36,30 @@ suite = do test "Successfully decodes a valid response" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxValidRespFixture - (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` - Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) + txEvalR `shouldSatisfy` case _ of + Right (TxEvaluationR (Right (TxEvaluationResult map))) -> map == + Map.fromFoldable ogmiosEvaluateTxValidRespDecoded + _ -> false test "Fails to decode a response with invalid redeemer pointer format" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxInvalidPointerFormatFixture + decodeOgmiosResponse <$> liftEffect + ogmiosEvaluateTxInvalidPointerFormatFixture txEvalR `shouldSatisfy` case _ of Left (DecodingError (TypeMismatch _)) -> true _ -> false - - test "Successfully decodes a failed execution response (Incompatible era)" do - txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailIncompatibleEraFixture - (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` - Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) - test "Successfully decodes a failed execution response (Script errors)" do - txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailScriptErrorsFixture - (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` - Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) +-- test "Successfully decodes a failed execution response (Incompatible era)" do +-- txEvalR :: Either OgmiosDecodeError TxEvaluationR <- +-- decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailIncompatibleEraFixture +-- (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` +-- Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) + +-- test "Successfully decodes a failed execution response (Script errors)" do +-- txEvalR :: Either OgmiosDecodeError TxEvaluationR <- +-- decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailScriptErrorsFixture +-- (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` +-- Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) ogmiosEvaluateTxValidRespDecoded :: Array (RedeemerPointer /\ ExecutionUnits) ogmiosEvaluateTxValidRespDecoded = diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index 545ce5d0e..f7976068a 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -8,8 +8,24 @@ import Aeson (class EncodeAeson, Aeson, encodeAeson, stringifyAeson) import Control.Parallel (parTraverse) import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) -import Ctl.Internal.JsWebSocket (_mkWebSocket, _onWsConnect, _onWsError, _onWsMessage, _wsClose, _wsSend) -import Ctl.Internal.QueryM (ListenerSet, WebSocket(WebSocket), WebsocketDispatch, defaultMessageListener, defaultOgmiosWsConfig, mkListenerSet, mkRequestAff, mkWebsocketDispatch) +import Ctl.Internal.JsWebSocket + ( _mkWebSocket + , _onWsConnect + , _onWsError + , _onWsMessage + , _wsClose + , _wsSend + ) +import Ctl.Internal.QueryM + ( ListenerSet + , WebSocket(WebSocket) + , WebsocketDispatch + , defaultMessageListener + , defaultOgmiosWsConfig + , mkListenerSet + , mkRequestAff + , mkWebsocketDispatch + ) import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, JsonRpc2Call) import Ctl.Internal.QueryM.Ogmios (mkOgmiosCallType) import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) @@ -29,7 +45,6 @@ import Effect.Ref as Ref import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (writeTextFile) import Node.Path (concat) -import Test.Unit.Console (print) -- A simple websocket for testing mkWebSocket @@ -54,7 +69,7 @@ mkWebSocket lvl serverCfg cb = do Ref.read pendingRequests >>= traverse_ sendRequest _onWsConnect ws do void $ _onWsError ws \_ -> onError - _onWsMessage ws (logger Debug) $ defaultMessageListener (\_ str -> print str) + _onWsMessage ws (logger Debug) $ defaultMessageListener (\_ _ -> pure unit) [ messageDispatch ] void $ _onWsError ws $ const onError cb $ Right $ WebSocket ws @@ -66,7 +81,7 @@ mkWebSocket lvl serverCfg cb = do mkWebSocketAff :: forall (a :: Type) (b :: Type) - . DecodeOgmios b + . DecodeOgmios b => LogLevel -> ServerConfig -> Aff (WebSocket (ListenerSet a b)) @@ -85,8 +100,11 @@ instance Show AesonResponse where instance DecodeOgmios AesonResponse where decodeOgmios = pure <<< AesonResponse <<< encodeAeson -mkQueryWithArgs' :: forall a . EncodeAeson a => String -> a -> Query -mkQueryWithArgs' method a = Query (mkOgmiosCallType { method , params : identity } ) (sanitiseMethod method) (encodeAeson a) +mkQueryWithArgs' :: forall a. EncodeAeson a => String -> a -> Query +mkQueryWithArgs' method a = Query + (mkOgmiosCallType { method, params: identity }) + (sanitiseMethod method) + (encodeAeson a) mkQuery' :: String -> Query mkQuery' method = mkQueryWithArgs' method {} @@ -103,8 +121,7 @@ main = let queries = - [ - mkQuery' "queryNetwork/tip" + [ mkQuery' "queryNetwork/tip" , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" , mkQuery' "queryLedgerState/eraSummaries" diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index bce591b89..d5918bc36 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -19,5 +19,6 @@ suite = do "./fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ - (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) `shouldSatisfy` - isRight + (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) + `shouldSatisfy` + isRight diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index f771e12f6..cf9fc6882 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -85,12 +85,16 @@ loadOgmiosFixture query hash = do eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = do - { result } :: { result :: OgmiosEraSummaries} <- loadOgmiosFixture "queryLedgerState-eraSummaries" "d8b19110b9580cddfa3895eea34c2139" + { result } :: { result :: OgmiosEraSummaries } <- loadOgmiosFixture + "queryLedgerState-eraSummaries" + "d8b19110b9580cddfa3895eea34c2139" pure $ unwrap result systemStartFixture :: Effect SystemStart systemStartFixture = do - { result } :: { result :: OgmiosSystemStart } <- loadOgmiosFixture "queryNetwork-startTime" "02fa6f9e7ed04ebfe3294c7648be54d5" + { result } :: { result :: OgmiosSystemStart } <- loadOgmiosFixture + "queryNetwork-startTime" + "02fa6f9e7ed04ebfe3294c7648be54d5" pure $ unwrap result testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit From 0ccc85d4cd816283a47a8509754ea273809962bd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Nov 2023 14:12:36 +0400 Subject: [PATCH 400/478] Update error message fixtures in plutip tests --- test/Plutip/Contract/Assert.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 824b65341..14fb3e5ef 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -102,7 +102,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: (fromString \"2\"), Actual: (fromString \"1\")" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1" test "ExUnits limit reached" do @@ -137,7 +137,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. ExUnits limit exceeded: Expected: { mem: (fromString \"800\"), steps: (fromString \"16110\") }, Actual: { mem: (fromString \"800\"), steps: (fromString \"161100\") }" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. ExUnits limit exceeded: Expected: { mem: 800, steps: 16110 }, Actual: { mem: 800, steps: 161100 }" test "An exception is thrown - everything is reported" do @@ -176,4 +176,4 @@ suite = do eiResult `shouldSatisfy` isLeft printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: (fromString \"2\"), Actual: (fromString \"1\") \n\n 3. ExUnits limit exceeded: Expected: { mem: (fromString \"800\"), steps: (fromString \"16110\") }, Actual: { mem: (fromString \"800\"), steps: (fromString \"161100\") } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1 \n\n 3. ExUnits limit exceeded: Expected: { mem: 800, steps: 16110 }, Actual: { mem: 800, steps: 161100 } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" From c677f5fd5a8ce9fefa184348e6522f5776331e68 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Nov 2023 22:33:23 +0400 Subject: [PATCH 401/478] Use newer purescript-aeson and json-bigint --- package-lock.json | 20 ++++------- package.json | 2 +- packages.dhall | 8 ++--- src/Internal/Cardano/Types/Transaction.purs | 6 ++-- src/Internal/Plutip/Types.purs | 6 ++-- src/Internal/Service/Blockfrost.purs | 39 +++++++++++++-------- src/Internal/Types/EraSummaries.purs | 9 +++-- src/Internal/Types/Interval.purs | 4 +-- 8 files changed, 46 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2314c4c56..60e4d9aab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", - "@mlabs-haskell/json-bigint": " 1.0.0", + "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", @@ -519,12 +519,9 @@ "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" }, "node_modules/@mlabs-haskell/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", - "dependencies": { - "bignumber.js": "^9.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", + "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@noble/hashes": { "version": "1.3.1", @@ -6654,12 +6651,9 @@ "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" }, "@mlabs-haskell/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", - "requires": { - "bignumber.js": "^9.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", + "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@noble/hashes": { "version": "1.3.1", diff --git a/package.json b/package.json index c627e3f2c..faa207c34 100755 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", - "@mlabs-haskell/json-bigint": " 1.0.0", + "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", diff --git a/packages.dhall b/packages.dhall index bb7e263fb..316e96555 100644 --- a/packages.dhall +++ b/packages.dhall @@ -145,7 +145,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82" + , version = "e885fa483ba374f34416049b96be0bb0cd591c0b" } , bignumber = { dependencies = @@ -250,11 +250,7 @@ let additions = , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" } , js-bigints = - { dependencies = - [ "integers" - , "maybe" - , "prelude" - ] + { dependencies = [ "integers", "maybe", "prelude" ] , repo = "https://github.com/purescript-contrib/purescript-js-bigints" , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" } diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 0a92ad9dd..3aebed07a 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -95,7 +95,7 @@ import Aeson , caseAesonString , decodeAeson , encodeAeson - , partialFiniteNumber + , finiteNumber ) import Control.Alternative ((<|>)) import Control.Apply (lift2) @@ -605,10 +605,10 @@ instance EncodeAeson MoveInstantaneousReward where encodeAeson = case _ of ToOtherPot r -> encodeTagged' "ToOtherPot" r -- We assume the numbers are finite - { pot = unsafePartial partialFiniteNumber r.pot } + { pot = unsafePartial $ fromJust $ finiteNumber r.pot } ToStakeCreds r -> encodeTagged' "ToStakeCreds" r -- We assume the numbers are finite - { pot = unsafePartial partialFiniteNumber r.pot } + { pot = unsafePartial $ fromJust $ finiteNumber r.pot } type PoolRegistrationParams = { operator :: PoolPubKeyHash -- cwitness (cert) diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 13a880d5b..d2f7ba78c 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -26,7 +26,7 @@ import Aeson , JsonDecodeError(TypeMismatch, UnexpectedValue) , decodeAeson , encodeAeson - , partialFiniteNumber + , finiteNumber , toStringifiedNumbersJson , (.:) ) @@ -41,7 +41,7 @@ import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe) +import Data.Maybe (Maybe, fromJust) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import Data.Time.Duration (Seconds(Seconds)) @@ -94,7 +94,7 @@ instance EncodeAeson ClusterStartupRequest where ) = encodeAeson { keysToGenerate , epochSize - , slotLength: unsafePartial partialFiniteNumber slotLength + , slotLength: unsafePartial $ fromJust $ finiteNumber slotLength , maxTxSize , raiseExUnitsToMax } diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 81ffa2cbe..d5f22cc2c 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -63,7 +63,6 @@ import Prelude import Aeson ( class DecodeAeson , Aeson - , Finite , JsonDecodeError(TypeMismatch, MissingValue, AtKey) , decodeAeson , decodeJsonString @@ -74,7 +73,6 @@ import Aeson , isNull , parseJsonStringToAeson , stringifyAeson - , unpackFinite , (.:) , (.:!) ) @@ -214,7 +212,7 @@ import Data.Bifunctor (lmap) import Data.BigNumber (BigNumber, toFraction) import Data.BigNumber as BigNumber import Data.DateTime.Instant (instant, toDateTime) -import Data.Either (Either(Left, Right), either, note) +import Data.Either (Either(Left, Right), either, hush, note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET, POST)) @@ -1237,7 +1235,7 @@ blockfrostStakeCredentialToBech32 = case _ of -- BlockfrostProtocolParameters -------------------------------------------------------------------------------- --- | `Stringed a` decodes an `a` who was encoded as a `String` +-- | `Stringed a` decodes an `a` that was encoded as a `String` newtype Stringed a = Stringed a derive instance Newtype (Stringed a) _ @@ -1245,6 +1243,17 @@ derive instance Newtype (Stringed a) _ instance DecodeAeson a => DecodeAeson (Stringed a) where decodeAeson = decodeAeson >=> decodeJsonString >=> Stringed >>> pure +newtype FiniteBigNumber = FiniteBigNumber BigNumber + +derive instance Newtype FiniteBigNumber _ + +instance DecodeAeson FiniteBigNumber where + decodeAeson aeson = do + number <- decodeAeson aeson + map FiniteBigNumber $ note (TypeMismatch "BigNumber") $ hush + $ BigNumber.parseBigNumber + $ show (number :: Number) + type BlockfrostProtocolParametersRaw = { "min_fee_a" :: UInt , "min_fee_b" :: UInt @@ -1255,9 +1264,9 @@ type BlockfrostProtocolParametersRaw = , "pool_deposit" :: Stringed BigInt , "e_max" :: BigInt , "n_opt" :: UInt - , "a0" :: Finite BigNumber - , "rho" :: Finite BigNumber - , "tau" :: Finite BigNumber + , "a0" :: FiniteBigNumber + , "rho" :: FiniteBigNumber + , "tau" :: FiniteBigNumber , "protocol_major_ver" :: UInt , "protocol_minor_ver" :: UInt , "min_pool_cost" :: Stringed BigInt @@ -1265,8 +1274,8 @@ type BlockfrostProtocolParametersRaw = { "PlutusV1" :: { | CostModelV1 } , "PlutusV2" :: { | CostModelV2 } } - , "price_mem" :: Finite BigNumber - , "price_step" :: Finite BigNumber + , "price_mem" :: FiniteBigNumber + , "price_step" :: FiniteBigNumber , "max_tx_ex_mem" :: Stringed BigInt , "max_tx_ex_steps" :: Stringed BigInt , "max_block_ex_mem" :: Stringed BigInt @@ -1278,15 +1287,15 @@ type BlockfrostProtocolParametersRaw = , "coins_per_utxo_word" :: Maybe (Stringed BigInt) } -toFraction' :: Finite BigNumber -> String /\ String +toFraction' :: BigNumber -> String /\ String toFraction' bn = (BigNumber.toString numerator /\ BigNumber.toString denominator) where - (numerator /\ denominator) = toFraction (unpackFinite bn) + (numerator /\ denominator) = toFraction bn (BigNumber.fromNumber infinity) -bigNumberToRational :: Finite BigNumber -> Either JsonDecodeError Rational -bigNumberToRational bn = note (TypeMismatch "Rational") do +bigNumberToRational :: FiniteBigNumber -> Either JsonDecodeError Rational +bigNumberToRational (FiniteBigNumber bn) = note (TypeMismatch "Rational") do numerator <- BigInt.fromString numerator' denominator <- BigInt.fromString denominator' reduce numerator denominator @@ -1294,9 +1303,9 @@ bigNumberToRational bn = note (TypeMismatch "Rational") do (numerator' /\ denominator') = toFraction' bn bigNumberToPrice - :: Finite BigNumber + :: FiniteBigNumber -> Either JsonDecodeError { numerator :: BigNum, denominator :: BigNum } -bigNumberToPrice bn = note (TypeMismatch "Rational") do +bigNumberToPrice (FiniteBigNumber bn) = note (TypeMismatch "Rational") do numerator <- BigNum.fromString numerator' denominator <- BigNum.fromString denominator' pure { numerator, denominator } diff --git a/src/Internal/Types/EraSummaries.purs b/src/Internal/Types/EraSummaries.purs index e1d11c076..ae6cf387c 100644 --- a/src/Internal/Types/EraSummaries.purs +++ b/src/Internal/Types/EraSummaries.purs @@ -15,15 +15,15 @@ import Aeson ( class DecodeAeson , class EncodeAeson , encodeAeson + , finiteNumber , getField - , partialFiniteNumber ) import Ctl.Internal.Helpers (showWithParens) import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Service.Helpers (aesonObject) import Ctl.Internal.Types.Epoch (Epoch) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) +import Data.Maybe (Maybe, fromJust) import Data.Newtype (class Newtype, wrap) import Data.Show.Generic (genericShow) import JS.BigInt (BigInt) @@ -143,7 +143,7 @@ derive newtype instance DecodeAeson RelativeTime instance EncodeAeson RelativeTime where encodeAeson (RelativeTime rt) = -- We assume the numbers are finite. - encodeAeson $ unsafePartial partialFiniteNumber rt + encodeAeson $ unsafePartial $ fromJust $ finiteNumber rt instance Show RelativeTime where show (RelativeTime rt) = showWithParens "RelativeTime" rt @@ -170,7 +170,7 @@ derive newtype instance DecodeAeson SlotLength instance EncodeAeson SlotLength where encodeAeson (SlotLength sl) = -- We assume the numbers are finite. - encodeAeson $ unsafePartial partialFiniteNumber sl + encodeAeson $ unsafePartial $ fromJust $ finiteNumber sl instance Show SlotLength where show (SlotLength slotLength) = showWithParens "SlotLength" slotLength @@ -189,4 +189,3 @@ derive newtype instance EncodeAeson SafeZone instance Show SafeZone where show (SafeZone sz) = showWithParens "SafeZone" sz - diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 9a957d5eb..69ec8c30e 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -73,9 +73,9 @@ import Aeson , aesonNull , decodeAeson , encodeAeson + , finiteNumber , getField , isNull - , partialFiniteNumber , (.:) ) import Control.Monad.Error.Class (throwError) @@ -652,7 +652,7 @@ instance EncodeAeson SlotToPosixTimeError where slotToPosixTimeErrorStr "endTimeLessThanTime" -- We assume the numbers are finite - [ unsafePartial partialFiniteNumber absTime ] + [ unsafePartial $ fromJust $ finiteNumber absTime ] encodeAeson CannotGetBigIntFromNumber = do encodeAeson $ mkErrorRecord slotToPosixTimeErrorStr From 539093d4fca99de5651fed27f4052317eb361b79 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 Nov 2023 23:37:52 +0400 Subject: [PATCH 402/478] Remove big-integer runtime dep, update the template --- package-lock.json | 14 -------------- package.json | 1 - packages.dhall | 5 ++--- spago-packages.nix | 6 +++--- templates/ctl-scaffold/package-lock.json | 14 -------------- templates/ctl-scaffold/package.json | 1 - templates/ctl-scaffold/packages.dhall | 11 +++-------- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 8 files changed, 11 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index 60e4d9aab..e33f06931 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", - "big-integer": "1.6.51", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", "blakejs": "1.2.1", @@ -1234,14 +1233,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", @@ -7267,11 +7258,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, "bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", diff --git a/package.json b/package.json index faa207c34..3eae60f6c 100755 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", - "big-integer": "1.6.51", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", "blakejs": "1.2.1", diff --git a/packages.dhall b/packages.dhall index 316e96555..b409a6554 100644 --- a/packages.dhall +++ b/packages.dhall @@ -117,8 +117,6 @@ let additions = , "argonaut-core" , "arrays" , "bifunctors" - , "js-bigints" - , "bignumber" , "const" , "control" , "effect" @@ -127,6 +125,7 @@ let additions = , "foldable-traversable" , "foreign-object" , "integers" + , "js-bigints" , "lists" , "maybe" , "mote" @@ -145,7 +144,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "e885fa483ba374f34416049b96be0bb0cd591c0b" + , version = "v2.0.0" } , bignumber = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 8fc9f46bd..67a7b2ab7 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; - sha256 = "1brh39w3krjscnpsda5yk171yiq0ykf148bzapl1w21qc4g9ifpr"; + rev = "4fddd518a143de563299d484272a0ef18daa7dcd"; + sha256 = "1bz1z9l6nwf5yk45sbbjllmqvci0n1l92cvk3lgmni19g9silbrl"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 414a8c52d..1a2c07f96 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -19,7 +19,6 @@ "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", - "big-integer": "1.6.51", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", "blakejs": "1.2.1", @@ -1179,14 +1178,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", @@ -6363,11 +6354,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, "bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index ad17c1b6f..de23a588b 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -35,7 +35,6 @@ "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", - "big-integer": "1.6.51", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", "blakejs": "1.2.1", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d171e0324..421343fae 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -117,8 +117,6 @@ let additions = , "argonaut-core" , "arrays" , "bifunctors" - , "js-bigints" - , "bignumber" , "const" , "control" , "effect" @@ -127,6 +125,7 @@ let additions = , "foldable-traversable" , "foreign-object" , "integers" + , "js-bigints" , "lists" , "maybe" , "mote" @@ -145,7 +144,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82" + , version = "v2.0.0" } , bignumber = { dependencies = @@ -345,11 +344,7 @@ let additions = , version = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca" } , js-bigints = - { dependencies = - [ "integers" - , "maybe" - , "prelude" - ] + { dependencies = [ "integers", "maybe", "prelude" ] , repo = "https://github.com/purescript-contrib/purescript-js-bigints" , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 7019d9c06..9c9641db0 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "1da04ea8ff3656a4954b3ae2414da2d6a73ade82"; - sha256 = "1brh39w3krjscnpsda5yk171yiq0ykf148bzapl1w21qc4g9ifpr"; + rev = "4fddd518a143de563299d484272a0ef18daa7dcd"; + sha256 = "1bz1z9l6nwf5yk45sbbjllmqvci0n1l92cvk3lgmni19g9silbrl"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From fbf56b2965752ced05fd7f3a2d7ae6778e566df9 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 9 Nov 2023 11:22:33 +0100 Subject: [PATCH 403/478] Adds a missing NPM json-bigint upgrade in CTL scaffold --- templates/ctl-scaffold/package-lock.json | 20 +++++++------------- templates/ctl-scaffold/package.json | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 1a2c07f96..7b3db0184 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -14,7 +14,7 @@ "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", - "@mlabs-haskell/json-bigint": " 1.0.0", + "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", @@ -517,12 +517,9 @@ "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" }, "node_modules/@mlabs-haskell/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", - "dependencies": { - "bignumber.js": "^9.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", + "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@noble/hashes": { "version": "1.3.1", @@ -5788,12 +5785,9 @@ "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" }, "@mlabs-haskell/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-Opo07yXP/OU9mIoGmY5VVuDy5kxmb3fBAG3U9dbC15qK1OCpVLJAlxbdOfBmLOja94SnIfZINUU2xvYtVfk65w==", - "requires": { - "bignumber.js": "^9.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", + "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@noble/hashes": { "version": "1.3.1", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index de23a588b..1997e2065 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -30,7 +30,7 @@ "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", - "@mlabs-haskell/json-bigint": " 1.0.0", + "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", "apply-args-nodejs": "0.0.1", From eccd587499e24214bc9dcd5caec41b4df4e820ff Mon Sep 17 00:00:00 2001 From: zmrocze Date: Thu, 9 Nov 2023 20:30:40 +0100 Subject: [PATCH 404/478] Better blockfrost and ogmios evaluateTx return type --- src/Internal/BalanceTx/Error.purs | 45 ++++++++++++--- src/Internal/QueryM/Ogmios.purs | 25 +++++++-- src/Internal/Service/Blockfrost.purs | 15 ++--- test/Blockfrost/ProtocolParameters.purs | 4 +- ...EvaluateTxInvalidPointerFormatFixture.json | 7 --- .../OgmiosEvaluateTxValidRespFixture.json | 7 --- test/Ogmios/EvaluateTx.purs | 56 +++++++++++++------ 7 files changed, 107 insertions(+), 52 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 8f478af8f..7a1b4e77a 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -34,9 +34,20 @@ import Ctl.Internal.Cardano.Types.Transaction ) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios - ( showRedeemerPointer - ) -import Ctl.Internal.QueryM.Ogmios as Ogmios + ( RedeemerPointer + , ScriptFailure + ( ExtraRedeemers + , MissingRequiredDatums + , MissingRequiredScripts + , ValidatorFailed + , UnknownInputReferencedByRedeemer + , NonScriptInputReferencedByRedeemer + , IllFormedExecutionBudget + , NoCostModelForLanguage + , InternalLedgerTypeConversionError + ) + , TxEvaluationFailure(UnparsedError, ScriptFailures) + ) as Ogmios import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array @@ -200,12 +211,22 @@ printTxEvaluationFailure transaction e = printScriptFailure = case _ of Ogmios.ExtraRedeemers ptrs -> line "Extra redeemers:" <> bullet (foldMap printRedeemer ptrs) - Ogmios.MissingRequiredDatums missing - -> line "Missing required datums:" + Ogmios.MissingRequiredDatums { provided, missing } + -> line "Supplied with datums:" + <> bullet (foldMap (foldMap line) provided) + <> line "But missing required datums:" <> bullet (foldMap line missing) - Ogmios.MissingRequiredScripts missing - -> line "Missing required scripts:" - <> bullet (foldMap (line <<< showRedeemerPointer) missing) + Ogmios.MissingRequiredScripts { resolved: mresolved, missing } + -> line "Supplied with scripts:" + <> bullet + ( foldMap + ( foldMapWithIndex + (\ptr scr -> printRedeemer ptr <> line ("Script: " <> show scr)) + ) + mresolved + ) + <> line "But missing required scripts:" + <> bullet (foldMap printRedeemer missing) Ogmios.ValidatorFailed { error, traces } -> line error <> line "Trace:" <> number (foldMap line traces) @@ -213,6 +234,14 @@ printTxEvaluationFailure transaction e = ("Unknown input referenced by redeemer: " <> show txIn) Ogmios.NonScriptInputReferencedByRedeemer txIn -> line ("Non script input referenced by redeemer: " <> show txIn) + Ogmios.IllFormedExecutionBudget Nothing -> line + ("Ill formed execution budget: Execution budget missing") + Ogmios.IllFormedExecutionBudget (Just { memory, steps }) -> + line "Ill formed execution budget:" + <> bullet + ( line ("Memory: " <> BigInt.toString (Natural.toBigInt memory)) + <> line ("Steps: " <> BigInt.toString (Natural.toBigInt steps)) + ) Ogmios.NoCostModelForLanguage languages -> line "No cost model for languages:" <> bullet (foldMap line languages) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 0e65e82b7..eff43255f 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -29,6 +29,7 @@ module Ctl.Internal.QueryM.Ogmios , NonScriptInputReferencedByRedeemer , NoCostModelForLanguage , InternalLedgerTypeConversionError + , IllFormedExecutionBudget ) , AdditionalUtxoSet(AdditionalUtxoSet) , OgmiosUtxoMap @@ -145,7 +146,7 @@ import Ctl.Internal.QueryM.JsonRpc2 , mkCallType ) import Ctl.Internal.Serialization.Address (Slot(Slot)) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) +import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum import Ctl.Internal.Types.ByteArray @@ -834,15 +835,26 @@ type OgmiosScript = String type OgmiosTxId = String type OgmiosTxIn = { txId :: OgmiosTxId, index :: Int } +-- | Reason a script failed. +-- +-- The type definition is a least common denominator between Ogmios v6 format used by ogmios backend +-- and ogmios v5.6 format used by blockfrost backend data ScriptFailure = ExtraRedeemers (Array RedeemerPointer) - | MissingRequiredDatums (Array OgmiosDatum) - | MissingRequiredScripts (Array RedeemerPointer) + | MissingRequiredDatums + { missing :: (Array OgmiosDatum) + , provided :: Maybe (Array OgmiosDatum) + } + | MissingRequiredScripts + { missing :: Array RedeemerPointer + , resolved :: Maybe (Map RedeemerPointer ScriptHash) + } | ValidatorFailed { error :: String, traces :: Array String } | UnknownInputReferencedByRedeemer OgmiosTxIn | NonScriptInputReferencedByRedeemer OgmiosTxIn | NoCostModelForLanguage (Array String) | InternalLedgerTypeConversionError String + | IllFormedExecutionBudget (Maybe ExecutionUnits) derive instance Generic ScriptFailure _ @@ -869,8 +881,8 @@ instance DecodeAeson ScriptFailure where case error.code of 3011 -> do res :: { missingScript :: Array String } <- decodeAeson error.data - MissingRequiredScripts <$> traverse decodeRedeemerPointer - res.missingScript + missing <- traverse decodeRedeemerPointer res.missingScript + pure $ MissingRequiredScripts { missing: missing, resolved: Nothing } 3012 -> do res :: { validationError :: String, traces :: Array String } <- decodeAeson error.data @@ -891,7 +903,8 @@ instance DecodeAeson ScriptFailure where res.extraneousRedeemers 3111 -> do res :: { missingDatums :: Array String } <- decodeAeson error.data - pure $ MissingRequiredDatums res.missingDatums + pure $ MissingRequiredDatums + { missing: res.missingDatums, provided: Nothing } 3117 -> do res :: { unknownOutputReference :: diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 8cc360f1a..962c79aa1 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -1030,20 +1030,21 @@ decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases translateOldToNew :: OldScriptFailure -> Either JsonDecodeError ScriptFailure translateOldToNew x = case x of ExtraRedeemers ptrs -> pure $ Ogmios.ExtraRedeemers ptrs - MissingRequiredDatums { provided: _, missing } -> pure $ - Ogmios.MissingRequiredDatums missing - MissingRequiredScripts { resolved: _, missing } -> - Ogmios.MissingRequiredScripts <$> traverse decodeRedeemerPointer missing + MissingRequiredDatums { provided, missing } -> pure $ + Ogmios.MissingRequiredDatums { missing, provided: provided } + MissingRequiredScripts { resolved: resolved0, missing: missing0 } -> do + missing <- traverse decodeRedeemerPointer missing0 + resolved :: Map RedeemerPointer ScriptHash <- traverse decodeAeson + (map (encodeAeson :: String -> _) resolved0) + pure $ Ogmios.MissingRequiredScripts { missing, resolved: Just resolved } ValidatorFailed { error, traces } -> pure $ Ogmios.ValidatorFailed { error, traces } UnknownInputReferencedByRedeemer txin -> pure $ Ogmios.UnknownInputReferencedByRedeemer txin NonScriptInputReferencedByRedeemer txin -> pure $ Ogmios.NonScriptInputReferencedByRedeemer txin - -- TODO: This is a stretch: IllFormedExecutionBudget mexu -> pure $ - Ogmios.InternalLedgerTypeConversionError - ("NoCostModelForLanguage error: " <> show mexu) + Ogmios.IllFormedExecutionBudget mexu NoCostModelForLanguage lang -> pure $ Ogmios.NoCostModelForLanguage [ lang ] decodeScriptFailures :: ObjectParser TxEvaluationFailure diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index 70e146f60..ec9e596c8 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -5,7 +5,9 @@ import Prelude import Aeson (class DecodeAeson, decodeJsonString) import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Control.Monad.Error.Class (liftEither) -import Ctl.Internal.QueryM.Ogmios (OgmiosProtocolParameters(..)) +import Ctl.Internal.QueryM.Ogmios + ( OgmiosProtocolParameters(OgmiosProtocolParameters) + ) import Ctl.Internal.Service.Blockfrost ( BlockfrostProtocolParameters(BlockfrostProtocolParameters) ) diff --git a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json index 437ca5623..2e1d7c9fe 100644 --- a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json @@ -9,13 +9,6 @@ "cpu": 6325731070934221229 } }, - { - "validator": "spend:11", - "budget": { - "memory": 5543181870361291648, - "cpu": 2251643430894285464 - } - }, { "validator": "certificate:3", "budget": { diff --git a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json index 54b030866..d6400b312 100644 --- a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json @@ -9,13 +9,6 @@ "cpu": 6325731070934221229 } }, - { - "validator": "spend:11", - "budget": { - "memory": 5543181870361291648, - "cpu": 2251643430894285464 - } - }, { "validator": "certificate:3", "budget": { diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index 05f86b725..6b5c3c898 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -3,6 +3,7 @@ module Test.Ctl.Ogmios.EvaluateTx (suite) where import Prelude import Aeson (JsonDecodeError(TypeMismatch)) +import Contract.Numeric.Natural (Natural, fromBigInt') import Ctl.Internal.QueryM.JsonRpc2 ( OgmiosDecodeError(DecodingError) , decodeOgmiosResponse @@ -10,21 +11,25 @@ import Ctl.Internal.QueryM.JsonRpc2 import Ctl.Internal.QueryM.Ogmios ( ExecutionUnits , RedeemerPointer + , TxEvaluationFailure(UnparsedError, ScriptFailures) , TxEvaluationR(TxEvaluationR) , TxEvaluationResult(TxEvaluationResult) ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Natural (fromInt') -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Mint, Spend)) +import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Cert, Mint)) +import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Map (fromFoldable) as Map +import Data.Maybe (fromJust) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) --- import Test.Ctl.Fixtures (ogmiosEvaluateTxFailIncompatibleEraFixture, ogmiosEvaluateTxFailScriptErrorsFixture, ogmiosEvaluateTxInvalidPointerFormatFixture, ogmiosEvaluateTxValidRespFixture) +import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures - ( ogmiosEvaluateTxInvalidPointerFormatFixture + ( ogmiosEvaluateTxFailIncompatibleEraFixture + , ogmiosEvaluateTxFailScriptErrorsFixture + , ogmiosEvaluateTxInvalidPointerFormatFixture , ogmiosEvaluateTxValidRespFixture ) import Test.Spec.Assertions (shouldSatisfy) @@ -49,22 +54,41 @@ suite = do Left (DecodingError (TypeMismatch _)) -> true _ -> false --- test "Successfully decodes a failed execution response (Incompatible era)" do --- txEvalR :: Either OgmiosDecodeError TxEvaluationR <- --- decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailIncompatibleEraFixture --- (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` --- Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) + test "Successfully decodes a failed execution response (Incompatible era)" + do + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect + ogmiosEvaluateTxFailIncompatibleEraFixture + txEvalR `shouldSatisfy` case _ of + Right (TxEvaluationR (Left (UnparsedError _))) -> true + _ -> false --- test "Successfully decodes a failed execution response (Script errors)" do --- txEvalR :: Either OgmiosDecodeError TxEvaluationR <- --- decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxFailScriptErrorsFixture --- (Map.toUnfoldable <<< unwrap <$> txEvalR) `shouldEqual` --- Right (TxEvaluationResult ogmiosEvaluateTxValidRespDecoded) + test "Successfully decodes a failed execution response (Script errors)" do + txEvalR :: Either OgmiosDecodeError TxEvaluationR <- + decodeOgmiosResponse <$> liftEffect + ogmiosEvaluateTxFailScriptErrorsFixture + txEvalR `shouldSatisfy` case _ of + Right (TxEvaluationR (Left (ScriptFailures _))) -> true + _ -> false ogmiosEvaluateTxValidRespDecoded :: Array (RedeemerPointer /\ ExecutionUnits) ogmiosEvaluateTxValidRespDecoded = [ { redeemerTag: Mint, redeemerIndex: zero } - /\ { memory: fromInt' 1685698, steps: fromInt' 609724445 } + /\ + { memory: naturalLiteral "4926587050210136942" + , steps: naturalLiteral "2982577810151428748" + } , { redeemerTag: Spend, redeemerIndex: one } - /\ { memory: fromInt' 1700, steps: fromInt' 476468 } + /\ + { memory: naturalLiteral "2766916028110716146" + , steps: naturalLiteral "6325731070934221229" + } + , { redeemerTag: Cert, redeemerIndex: one + one + one } + /\ + { memory: naturalLiteral "4926587050210136942" + , steps: naturalLiteral "2982577810151428748" + } ] + +naturalLiteral :: String -> Natural +naturalLiteral x = fromBigInt' $ unsafePartial $ fromJust $ BigInt.fromString x \ No newline at end of file From 59ba413bdc526937e8d476e247c1adf8b305d7e5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 10 Nov 2023 14:30:54 +0400 Subject: [PATCH 405/478] Add docs on configuring kupo --- doc/custom-query-layers.md | 33 ++++++++++++++++++++++++++++++++- doc/query-layers.md | 5 +++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/doc/custom-query-layers.md b/doc/custom-query-layers.md index aad710a5b..757373f0a 100644 --- a/doc/custom-query-layers.md +++ b/doc/custom-query-layers.md @@ -1,4 +1,14 @@ - + + + +- [Custom query layers in CTL](#custom-query-layers-in-ctl) + - [Adding a new backend](#adding-a-new-backend) + - [Replacing some queries in existing backend](#replacing-some-queries-in-existing-backend) +- [Configuring CTL's default query layer (Kupo/Ogmios)](#configuring-ctls-default-query-layer-kupoogmios) + - [Kupo](#kupo) + - [Faster sync for Kupo](#faster-sync-for-kupo) + + # Custom query layers in CTL @@ -15,3 +25,24 @@ A new [backend option](https://github.com/Plutonomicon/cardano-transaction-lib/b Substituting the query layer for a few functions only (assuming the original backend remains available for initial connection) can be done without forking CTL. `ContractEnv` contains a QueryHandle (inside a `Reader`), so a [`local`](https://pursuit.purescript.org/packages/purescript-transformers/6.0.0/docs/Control.Monad.Reader.Class#v:local) call with a function that replaces some `QueryHandle` record entries will just work. + +# Configuring CTL's default query layer (Kupo/Ogmios) + +Optimising storage requirements and performance of the query layer, unfortunately, depends on your app query needs. + +## Kupo + +Kupo is used for "utxos-at-address" query in CTL. + +This query is mainly used in two contexts: + +- manual `utxosAt` calls +- wallet <-> backend synchronization (see [here](./query-layers.md)) + +If you don't need either, consider removing Kupo from the runtime and [disabling wallet <-> backend synchronization](./query-layers.md) (**IMPORTANT!**). + +If your app works in a way that only requires UTxO lookups on certain addresses (e.g. script addresses), consider using [`--match-pattern`](https://cardanosolutions.github.io/kupo/#section/Getting-started/-match-pattern) to drastically reduce DB size. The downside would be that wallet<->backend sync will have to be disabled, because it requires looking up wallet's addresses via the backend. + +### Faster sync for Kupo + +Use [`--since` flag](https://cardanosolutions.github.io/kupo/#section/Getting-started/-since-slot-no.header_hash) to perform partial incomplete sync. Find block parameters on [a block explorer](https://cexplorer.io/block). It will let you sync things faster (than in ~4 days for mainnet), for the price of Kupo not seeing UTxOs created after the specified slot. If you disable wallet<->backend sync, and depending on your use case, that might be acceptable for production. diff --git a/doc/query-layers.md b/doc/query-layers.md index 0ae2760d9..eb21cd990 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -6,6 +6,7 @@ - [Configuring synchronization behavior](#configuring-synchronization-behavior) - [Synchronization and wallet UTxO locking](#synchronization-and-wallet-utxo-locking) - [Historical notes](#historical-notes) + - [See also](#see-also) @@ -113,3 +114,7 @@ Initially we underestimated the problem of UTxO set inconsistency between query Conceptually, the wallet is responsible for *owning* the UTxOs, so wallet developers may implement behaviors that would prevent us from making general assumptions about the wallet state. CTL `v5.1.0` introduces better consistency guarantees while not requiring the developer to change any code on their side - for the price of slight delays during the app runtime. + +## See also + +- [Optimising your app with custom query layers](./custom-query-layers.md) From c3ac43c85e985b0561ca6d766508c166ae203297 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 10 Nov 2023 17:56:38 +0100 Subject: [PATCH 406/478] Set ogmios include-transaction-cbor --- doc/runtime.md | 4 ++-- nix/runtime.nix | 1 + src/Internal/Plutip/Server.purs | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/runtime.md b/doc/runtime.md index ac484631f..2ec91aea4 100644 --- a/doc/runtime.md +++ b/doc/runtime.md @@ -25,8 +25,8 @@ Info in this section only applies to CTL backend services. The services that are currently **required** are: - [Ogmios](https://ogmios.dev) - - You **must** use Ogmios v5.2.0 or greater with CTL - - Ogmios itself requires a running Cardano node, so you may also need to deploy a node. Node v1.34.0 or greater is recommended + - You **must** use Ogmios v6 or greater with CTL with `--include-transaction-cbor` option + - Ogmios itself requires a running Cardano node, so you may also need to deploy a node. Node v8.1.1 or greater is recommended - You can also use [our fork](https://github.com/mlabs-haskell/ogmios) which has improved Nix integration - [Kupo](https://github.com/CardanoSolutions/kupo) - Required to query UTxOs and resolve inline datums and reference scripts diff --git a/nix/runtime.nix b/nix/runtime.nix index 3526abe8f..9f0ca6d90 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -170,6 +170,7 @@ rec { --port ${toString ogmios.port} \ --node-socket /ipc/node.socket \ --node-config /config/cardano-node/config.json + --include-transaction-cbor '' ]; }; diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4b2e52c3d..38d1aaf2c 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -522,6 +522,7 @@ startOgmios cfg params = do , params.nodeSocketPath , "--node-config" , params.nodeConfigPath + , "--include-transaction-cbor" ] startKupo From a0b50690fa62ff2272ad5d86010ffa36eb54a481 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 10 Nov 2023 19:01:04 +0100 Subject: [PATCH 407/478] Fix decoding error messages --- src/Internal/QueryM.purs | 8 +- src/Internal/QueryM/JsonRpc2.purs | 167 ++++++++++++------ src/Internal/QueryM/Ogmios.purs | 125 +++++++------ src/Internal/Service/Blockfrost.purs | 10 +- test/Fixtures.purs | 6 +- ...sEvaluateTxFailIncompatibleEraFixture.json | 2 +- ...iosEvaluateTxFailScriptErrorsFixture.json} | 2 +- ...EvaluateTxInvalidPointerFormatFixture.json | 2 +- .../OgmiosEvaluateTxValidRespFixture.json | 6 +- test/Ogmios/Aeson.purs | 4 +- test/Ogmios/EvaluateTx.purs | 35 ++-- test/Ogmios/GenerateFixtures.purs | 5 +- test/QueryM/AffInterface.purs | 3 +- 13 files changed, 213 insertions(+), 162 deletions(-) rename test/Fixtures/{OgmiosEvaluateTxFailScriptErrors.json => OgmiosEvaluateTxFailScriptErrorsFixture.json} (98%) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index ccfe589d2..b86afe368 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -118,7 +118,7 @@ import Ctl.Internal.QueryM.Dispatcher ) as ExportDispatcher import Ctl.Internal.QueryM.JsonRpc2 ( OgmiosDecodeError - , decodeOgmiosResponse + , decodeOgmios , ogmiosDecodeErrorToError ) import Ctl.Internal.QueryM.JsonRpc2 as JsonRpc2 @@ -154,7 +154,7 @@ import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) -import Data.Bifunctor (bimap, lmap) +import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, isRight) import Data.Foldable (foldl) import Data.HTTP.Method (Method(POST)) @@ -760,7 +760,7 @@ mkAddMessageListener dispatcher = \reflection handler -> flip Ref.modify_ dispatcher $ Map.insert reflection - (\aeson -> handler $ decodeOgmiosResponse aeson) + (\aeson -> handler $ decodeOgmios aeson) mkRemoveMessageListener :: forall (requestData :: Type) @@ -870,7 +870,7 @@ mkRequestAff listeners' webSocket logger jsonRpc2Call getLs input = do _ <- respLs.addMessageListener id ( \res -> do respLs.removeMessageListener id - cont $ bimap ogmiosDecodeErrorToError identity res + cont $ lmap ogmiosDecodeErrorToError res ) respLs.addRequest id (sBody /\ input) _wsSend webSocket (logger Debug) sBody diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 18f43a967..737416c8a 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -7,14 +7,16 @@ module Ctl.Internal.QueryM.JsonRpc2 , mkCallType , JsonRpc2Response , decodeResult - , decodeError , ogmiosDecodeErrorToError - , OgmiosDecodeError(NoResultError, DecodingError, InvalidResponseError) + , OgmiosDecodeError(ResultDecodingError, InvalidResponse, ErrorResponse) + , OgmiosError(OgmiosError) , class DecodeOgmios , decodeOgmios - , decodeOgmiosResponse + , decodeErrorOrResult , parseJsonRpc2ResponseId , decodeAesonJsonRpc2Response + , pprintOgmiosDecodeError + , pprintOgmiosError ) where import Prelude @@ -23,7 +25,7 @@ import Aeson ( class DecodeAeson , class EncodeAeson , Aeson - , JsonDecodeError(AtKey, TypeMismatch, MissingValue) + , JsonDecodeError(TypeMismatch) , caseAesonObject , decodeAeson , encodeAeson @@ -32,9 +34,15 @@ import Aeson , stringifyAeson ) import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) -import Data.Bifunctor (bimap) -import Data.Either (Either(Left), note) -import Data.Maybe (Maybe, maybe) +import Data.Bifunctor (lmap) +import Data.Either (Either(Left, Right)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just), maybe) +import Data.Newtype (class Newtype, unwrap) +import Data.Show.Generic (genericShow) +import Data.These (These(That, Both), theseLeft, theseRight) +import Data.Traversable (sequence) +import Data.Tuple.Nested ((/\)) import Effect (Effect) import Effect.Aff (Error, error) import Foreign.Object (Object) @@ -75,22 +83,20 @@ type JsonRpc2Response = } decodeAesonJsonRpc2Response - :: Aeson -> Either OgmiosDecodeError JsonRpc2Response -decodeAesonJsonRpc2Response aeson = bimap InvalidResponseError identity - $ flip aesonObject aeson - $ \o -> do - jsonrpc <- getField o "jsonrpc" - method <- getFieldOptional o "method" - result <- getFieldOptional o "result" - error <- getFieldOptional o "error" - id <- getField o "id" - pure - { jsonrpc - , method - , result - , error - , id - } + :: Aeson -> Either JsonDecodeError JsonRpc2Response +decodeAesonJsonRpc2Response = aesonObject $ \o -> do + jsonrpc <- getField o "jsonrpc" + method <- getFieldOptional o "method" + result <- getFieldOptional o "result" + error <- getFieldOptional o "error" + id <- getField o "id" + pure + { jsonrpc + , method + , result + , error + , id + } -- | A wrapper for tying arguments and response types to request building. newtype JsonRpc2Call :: Type -> Type -> Type @@ -117,50 +123,97 @@ buildRequest -> Effect { body :: Aeson, id :: String } buildRequest (JsonRpc2Call c) = c +newtype OgmiosError = OgmiosError + { code :: Int, message :: String, data :: Maybe Aeson } + +derive instance Generic OgmiosError _ +derive instance Newtype OgmiosError _ + +instance Show OgmiosError where + show = genericShow + +pprintOgmiosError :: OgmiosError -> String +pprintOgmiosError (OgmiosError err) = stringifyAeson $ encodeAeson err + +instance DecodeAeson OgmiosError where + decodeAeson = aesonObject \o -> do + code <- getField o "code" + message <- getField o "message" + dat <- getFieldOptional o "data" + pure $ OgmiosError { code, message, data: dat } + data OgmiosDecodeError - -- Server didn't respond with "result", responded with given "error". - = NoResultError (Maybe Aeson) - -- Parsing of result failed - | DecodingError JsonDecodeError - -- Parsing of JsonRpc2Response failed - | InvalidResponseError JsonDecodeError + -- Server responded with error. + = ErrorResponse (Maybe OgmiosError) + -- Server responded with result, parsing of which failed + | ResultDecodingError JsonDecodeError + -- Received JsonRpc2Response was not of the right format. + | InvalidResponse JsonDecodeError + +derive instance Generic OgmiosDecodeError _ instance Show OgmiosDecodeError where - show (DecodingError err) = show err - show (NoResultError err) = - "Server didn't respond with result. Responded with error: " <> maybe - "" - stringifyAeson - err - -- Parsing of JsonRpc2Response failed - show (InvalidResponseError err) = "Couldn't parse the response: " <> show err + show = genericShow + +pprintOgmiosDecodeError :: OgmiosDecodeError -> String +pprintOgmiosDecodeError (ErrorResponse err) = "Ogmios responded with error: " <> + maybe "" (stringifyAeson <<< encodeAeson <<< unwrap) err +pprintOgmiosDecodeError (ResultDecodingError err) = + "Failed to parse the result: " <> show err +pprintOgmiosDecodeError (InvalidResponse err) = + "Ogmios response was not of the right format: " <> show err ogmiosDecodeErrorToError :: OgmiosDecodeError -> Error -ogmiosDecodeErrorToError err = error $ show err +ogmiosDecodeErrorToError err = error $ pprintOgmiosDecodeError err -- | Variation of DecodeAeson for ogmios response, defines how to parse full ogmios reponse. --- We usually parse just the content of the "result" field, +-- We usually parse just the content of the "result" field, -- but sometimes also "error" field, hence a class other than DecodeAeson. class DecodeOgmios o where - decodeOgmios :: JsonRpc2Response -> Either OgmiosDecodeError o - -decodeOgmiosResponse - :: forall o. DecodeOgmios o => Aeson -> Either OgmiosDecodeError o -decodeOgmiosResponse = decodeOgmios <=< decodeAesonJsonRpc2Response - --- | Decode "result" field of ogmios response with DecodeAeson. + decodeOgmios :: Aeson -> Either OgmiosDecodeError o + +-- | Given how to parse result or error fields, +-- defines a parser of the full json2rpc response. +makeDecodeOgmios + :: forall o + . These + { parseError :: Aeson -> Either JsonDecodeError o } + { parseResult :: Aeson -> Either JsonDecodeError o } + -> Aeson + -> Either OgmiosDecodeError o +makeDecodeOgmios decoders aeson = do + json <- lmap InvalidResponse $ decodeAesonJsonRpc2Response aeson + let merr = _.parseError <$> theseLeft decoders <*> json.error + let mres = _.parseResult <$> theseRight decoders <*> json.result + case (mres /\ merr) of + -- Expected result, got it + Just (Right x) /\ _ -> pure x + -- Expected result, got it in a wrong format + Just (Left err) /\ _ -> Left $ ResultDecodingError err + -- Got an expected error + _ /\ Just (Right x) -> pure x + -- Got an unexpected error + _ -> do + err :: Maybe OgmiosError <- sequence $ + lmap InvalidResponse <<< decodeAeson <$> json.error + Left $ ErrorResponse err + +-- | Decode "result" field of ogmios response. decodeResult - :: forall o. DecodeAeson o => JsonRpc2Response -> Either OgmiosDecodeError o -decodeResult response = do - result <- note (NoResultError response.error) $ response.result - bimap DecodingError identity $ decodeAeson result - --- | Decode "error" field of ogmios response with DecodeAeson. -decodeError - :: forall o. DecodeAeson o => JsonRpc2Response -> Either OgmiosDecodeError o -decodeError response = bimap DecodingError identity $ do - error <- note (AtKey "error" MissingValue) response.error - decodeAeson error + :: forall o + . (Aeson -> Either JsonDecodeError o) + -> Aeson + -> Either OgmiosDecodeError o +decodeResult decodeAeson = makeDecodeOgmios $ That { parseResult: decodeAeson } + +-- | Decode "result" field or if absent the error field of ogmios response. +decodeErrorOrResult + :: forall o + . { parseError :: (Aeson -> Either JsonDecodeError o) } + -> { parseResult :: (Aeson -> Either JsonDecodeError o) } + -> Aeson + -> Either OgmiosDecodeError o +decodeErrorOrResult err res = makeDecodeOgmios $ Both err res -- | Parse just ID from the response parseJsonRpc2ResponseId diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index eff43255f..f9fc562e2 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -39,7 +39,6 @@ module Ctl.Internal.QueryM.Ogmios , OgmiosSystemStart(OgmiosSystemStart) , OgmiosTxIn , OgmiosTxId - , OgmiosError , SubmitTxR(SubmitTxSuccess, SubmitFail) , StakePoolsQueryArgument(StakePoolsQueryArgument) , TxEvaluationFailure(UnparsedError, ScriptFailures) @@ -81,7 +80,7 @@ import Aeson ( class DecodeAeson , class EncodeAeson , Aeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) + , JsonDecodeError(AtKey, TypeMismatch, UnexpectedValue, MissingValue) , caseAesonArray , caseAesonObject , caseAesonString @@ -140,8 +139,8 @@ import Ctl.Internal.QueryM.JsonRpc2 ( class DecodeOgmios , JsonRpc2Call , JsonRpc2Request - , OgmiosDecodeError(DecodingError) - , decodeError + , OgmiosError + , decodeErrorOrResult , decodeResult , mkCallType ) @@ -188,7 +187,7 @@ import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (fromFoldable, length, replicate) as Array -import Data.Bifunctor (bimap, lmap) +import Data.Bifunctor (lmap) import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Either (Either(Left, Right), either, note) @@ -348,7 +347,7 @@ newtype HasTxR = HasTxR Boolean derive instance Newtype HasTxR _ instance DecodeOgmios HasTxR where - decodeOgmios r = HasTxR <$> decodeResult r + decodeOgmios = decodeResult (map HasTxR <<< decodeAeson) newtype MempoolSnapshotAcquired = AwaitAcquired Slot @@ -361,7 +360,7 @@ instance DecodeAeson MempoolSnapshotAcquired where map AwaitAcquired <<< aesonObject (flip getField "slot") instance DecodeOgmios MempoolSnapshotAcquired where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson -- | The acquired snapshot’s size (in bytes), number of transactions, and capacity -- | (in bytes). @@ -385,7 +384,7 @@ instance DecodeAeson MempoolSizeAndCapacity where pure $ wrap { capacity, currentSize, numberOfTxs } instance DecodeOgmios MempoolSizeAndCapacity where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId @@ -403,10 +402,10 @@ instance DecodeAeson MempoolTransaction where { transaction: tx } :: { transaction :: { id :: String - , raw :: String + , cbor :: String } } <- decodeAeson aeson - pure $ MempoolTransaction { id: tx.id, raw: tx.raw } + pure $ MempoolTransaction { id: tx.id, raw: tx.cbor } newtype MaybeMempoolTransaction = MaybeMempoolTransaction (Maybe MempoolTransaction) @@ -414,7 +413,7 @@ newtype MaybeMempoolTransaction = MaybeMempoolTransaction derive instance Newtype MaybeMempoolTransaction _ instance DecodeOgmios MaybeMempoolTransaction where - decodeOgmios r = wrap <$> decodeResult r + decodeOgmios = decodeResult (map wrap <<< decodeAeson) data ReleasedMempool = ReleasedMempool @@ -433,7 +432,7 @@ instance DecodeAeson ReleasedMempool where Left (UnexpectedValue $ Argonaut.encodeString s) instance DecodeOgmios ReleasedMempool where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- TX SUBMISSION QUERY RESPONSE & PARSING @@ -453,28 +452,24 @@ instance Show SubmitTxR where type TxHash = ByteArray -type OgmiosError = { code :: Int, message :: String, data :: Aeson } - instance DecodeOgmios SubmitTxR where - decodeOgmios response = - ( bimap DecodingError SubmitTxSuccess <<< decodeTxHash =<< decodeResult - response - ) - <|> - ( SubmitFail <$> - ( do - -- With Ogmios 5.6 we failed with error on deserialization error, so we do now as well - err <- decodeError response - -- as of 7.11.23 it's in {3005} u [3100, 3159] range - if (3000 <= err.code && err.code <= 3999) then - pure err - else - Left $ DecodingError $ TypeMismatch - "Expected error code in a range [3000, 3999]" - ) - ) + decodeOgmios = decodeErrorOrResult + { parseError: decodeError } + { parseResult: map SubmitTxSuccess <<< decodeTxHash } where + + decodeError aeson = map SubmitFail do + -- With Ogmios 5.6 we failed with error on deserialization error, so we do now as well + err :: OgmiosError <- decodeAeson aeson + let code = (unwrap err).code + -- as of 7.11.23 it's in {3005} u [3100, 3159] range + if (3000 <= code && code <= 3999) then + pure err + else + Left $ TypeMismatch + "Expected error code in a range [3000, 3999]" + decodeTxHash :: Aeson -> Either JsonDecodeError TxHash decodeTxHash = aesonObject $ \o -> ( getField o "transaction" >>= flip getField "id" >>= hexToByteArray @@ -500,7 +495,7 @@ instance EncodeAeson OgmiosSystemStart where encodeAeson = encodeAeson <<< sysStartToOgmiosTimestamp <<< unwrap instance DecodeOgmios OgmiosSystemStart where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- CURRENT EPOCH QUERY RESPONSE & PARSING newtype CurrentEpoch = CurrentEpoch BigInt @@ -516,7 +511,7 @@ instance Show CurrentEpoch where show (CurrentEpoch ce) = showWithParens "CurrentEpoch" ce instance DecodeOgmios CurrentEpoch where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- ERA SUMMARY QUERY RESPONSE & PARSING @@ -583,7 +578,7 @@ slotLengthFactor :: Number slotLengthFactor = 1000.0 instance DecodeOgmios OgmiosEraSummaries where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- DELEGATIONS & REWARDS QUERY RESPONSE & PARSING @@ -607,7 +602,7 @@ instance DecodeAeson DelegationsAndRewardsR where pure $ DelegationsAndRewardsR $ Map.fromFoldable kvs instance DecodeOgmios DelegationsAndRewardsR where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- POOL PARAMETERS REQUEST & PARSING @@ -659,7 +654,7 @@ instance DecodeAeson PoolParametersR where pure $ PoolParametersR $ Map.fromFoldable kvs instance DecodeOgmios PoolParametersR where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters decodePoolParameters objParams = do @@ -786,10 +781,9 @@ instance Show TxEvaluationR where show = genericShow instance DecodeOgmios TxEvaluationR where - decodeOgmios r = wrap <$> - ( (Right <$> decodeResult r) - <|> (Left <$> decodeError r) - ) + decodeOgmios = decodeErrorOrResult + { parseError: map (wrap <<< Left) <<< decodeAeson } + { parseResult: map (wrap <<< Right) <<< decodeAeson } newtype TxEvaluationResult = TxEvaluationResult (Map RedeemerPointer ExecutionUnits) @@ -836,7 +830,7 @@ type OgmiosTxId = String type OgmiosTxIn = { txId :: OgmiosTxId, index :: Int } -- | Reason a script failed. --- +-- -- The type definition is a least common denominator between Ogmios v6 format used by ogmios backend -- and ogmios v5.6 format used by blockfrost backend data ScriptFailure @@ -850,7 +844,7 @@ data ScriptFailure , resolved :: Maybe (Map RedeemerPointer ScriptHash) } | ValidatorFailed { error :: String, traces :: Array String } - | UnknownInputReferencedByRedeemer OgmiosTxIn + | UnknownInputReferencedByRedeemer (Array OgmiosTxIn) | NonScriptInputReferencedByRedeemer OgmiosTxIn | NoCostModelForLanguage (Array String) | InternalLedgerTypeConversionError String @@ -877,45 +871,48 @@ instance Show TxEvaluationFailure where instance DecodeAeson ScriptFailure where decodeAeson aeson = do - error :: OgmiosError <- decodeAeson aeson + err :: OgmiosError <- decodeAeson aeson + let error = unwrap err + errorData <- maybe (Left (AtKey "data" MissingValue)) pure error.data case error.code of 3011 -> do - res :: { missingScript :: Array String } <- decodeAeson error.data - missing <- traverse decodeRedeemerPointer res.missingScript + res :: { missingScripts :: Array String } <- decodeAeson errorData + missing <- traverse decodeRedeemerPointer res.missingScripts pure $ MissingRequiredScripts { missing: missing, resolved: Nothing } 3012 -> do res :: { validationError :: String, traces :: Array String } <- - decodeAeson error.data + decodeAeson errorData pure $ ValidatorFailed { error: res.validationError, traces: res.traces } 3013 -> do res :: { unsuitableOutputReference :: { transaction :: { id :: String }, index :: Int } - } <- decodeAeson error.data + } <- decodeAeson errorData pure $ NonScriptInputReferencedByRedeemer { index: res.unsuitableOutputReference.index , txId: res.unsuitableOutputReference.transaction.id } 3110 -> do - res :: { extraneousRedeemers :: Array String } <- decodeAeson error.data + res :: { extraneousRedeemers :: Array String } <- decodeAeson errorData ExtraRedeemers <$> traverse decodeRedeemerPointer res.extraneousRedeemers 3111 -> do - res :: { missingDatums :: Array String } <- decodeAeson error.data + res :: { missingDatums :: Array String } <- decodeAeson errorData pure $ MissingRequiredDatums { missing: res.missingDatums, provided: Nothing } 3117 -> do res - :: { unknownOutputReference :: - { transaction :: { id :: String }, index :: Int } - } <- decodeAeson error.data - let res' = res.unknownOutputReference - pure $ UnknownInputReferencedByRedeemer - { index: res'.index, txId: res'.transaction.id } + :: { unknownOutputReferences :: + Array { transaction :: { id :: String }, index :: Int } + } <- decodeAeson errorData + pure $ UnknownInputReferencedByRedeemer $ + map (\x -> { index: x.index, txId: x.transaction.id }) + res.unknownOutputReferences 3115 -> do - res :: { missingCostModels :: Array String } <- decodeAeson error.data + res :: { missingCostModels :: Array String } <- decodeAeson errorData pure $ NoCostModelForLanguage res.missingCostModels + -- this would actually fail at decoding error.data but it's good 3999 -> pure $ InternalLedgerTypeConversionError error.message _ -> Left $ TypeMismatch $ "Unknown ogmios error code: " <> show error.code @@ -923,9 +920,12 @@ instance DecodeAeson ScriptFailure where instance DecodeAeson TxEvaluationFailure where decodeAeson aeson = do error :: OgmiosError <- decodeAeson aeson - case error.code of + let code = (unwrap error).code + errorData <- maybe (Left (AtKey "data" MissingValue)) pure + (unwrap error).data + case code of -- ScriptExecutionFailure - 3010 -> flip aesonArray error.data $ + 3010 -> flip aesonArray errorData $ ( \array -> ( ScriptFailures <<< map Array.fromFoldable <<< collectIntoMap <$> traverse parseElem array @@ -1089,7 +1089,7 @@ instance DecodeAeson OgmiosProtocolParameters where pure { memPrice, stepPrice } -- ExUnits instance DecodeOgmios OgmiosProtocolParameters where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson ---------------- CHAIN TIP QUERY RESPONSE & PARSING @@ -1108,7 +1108,7 @@ instance DecodeAeson ChainTipQR where pure $ either CtChainOrigin CtChainPoint $ toEither1 r instance DecodeOgmios ChainTipQR where - decodeOgmios = decodeResult + decodeOgmios = decodeResult decodeAeson -- | A Blake2b 32-byte digest of an era-independent block header, serialized as -- CBOR in base16 @@ -1206,10 +1206,7 @@ instance EncodeAeson AdditionalUtxoSet where encodeScriptRef (NativeScriptRef s) = encodeAeson $ { "language": "native" - , - -- WARN: We pass empty cbor as an argument because we don't have it. - -- We pass the argument as json instead and seemingly ogmios accepts if only json is present. - "cbor": "" + -- NOTE: We omit the cbor argument. , "json": (encodeNativeScript s) } encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV1))) = diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 962c79aa1..c6169e713 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -897,15 +897,15 @@ instance DecodeAeson BlockfrostEvaluateTx where unwrapBlockfrostEvaluateTx :: BlockfrostEvaluateTx -> Either Aeson TxEvaluationR unwrapBlockfrostEvaluateTx (BlockfrostEvaluateTx ei) = ei --- +-- -- TxEvaluationR parsing --- +-- -- | Wrapper for Aeson parsing. --- +-- -- Blockfrost returns on evaluateTx endpoint an ogmios response from the older Ogmios v5.6! -- Ogmios backed parses against Ogmios v6, here we parse using the previous code for Ogmios. --- +-- -- Note: TxEvaluationFailure as part of BlockfrostTxEvaluation doesn't parse with it's DecodeAeson instance. newtype BlockfrostTxEvaluationR = BlockfrostTxEvaluationR TxEvaluationR @@ -1040,7 +1040,7 @@ decodeBlockfrostTxEvaluationFailure = aesonObject $ runReaderT cases ValidatorFailed { error, traces } -> pure $ Ogmios.ValidatorFailed { error, traces } UnknownInputReferencedByRedeemer txin -> pure $ - Ogmios.UnknownInputReferencedByRedeemer txin + Ogmios.UnknownInputReferencedByRedeemer [ txin ] NonScriptInputReferencedByRedeemer txin -> pure $ Ogmios.NonScriptInputReferencedByRedeemer txin IllFormedExecutionBudget mexu -> pure $ diff --git a/test/Fixtures.purs b/test/Fixtures.purs index c3ae2481d..3f19d97e5 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -1444,17 +1444,17 @@ ogmiosEvaluateTxValidRespFixture = ogmiosEvaluateTxInvalidPointerFormatFixture :: Effect Aeson ogmiosEvaluateTxInvalidPointerFormatFixture = readJsonFixtureFile - "test/Fixtures/ogmiosEvaluateTxInvalidPointerFormatFixture.json" + "test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json" ogmiosEvaluateTxFailIncompatibleEraFixture :: Effect Aeson ogmiosEvaluateTxFailIncompatibleEraFixture = readJsonFixtureFile - "test/Fixtures/ogmiosEvaluateTxFailIncompatibleEraFixture.json" + "test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json" ogmiosEvaluateTxFailScriptErrorsFixture :: Effect Aeson ogmiosEvaluateTxFailScriptErrorsFixture = readJsonFixtureFile - "test/Fixtures/ogmiosEvaluateTxFailScriptErrorsFixture.json" + "test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json" redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer diff --git a/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json b/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json index feec59ebf..fdf9ca16e 100644 --- a/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxFailIncompatibleEraFixture.json @@ -1 +1 @@ -{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3000,"message":"Trying to evaluate a transaction from an old era (prior to Alonzo).","data":{"incompatibleEra":"shelley"}},"id":null} \ No newline at end of file +{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3000,"message":"Trying to evaluate a transaction from an old era (prior to Alonzo).","data":{"incompatibleEra":"shelley"}},"id":"some id blabla"} diff --git a/test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json similarity index 98% rename from test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json rename to test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json index 83ce449e0..ead071bbe 100644 --- a/test/Fixtures/OgmiosEvaluateTxFailScriptErrors.json +++ b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json @@ -1 +1 @@ -{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3010,"message":"Some scripts of the transactions terminated with error(s).","data":[{"validator":"certificate:11","error":{"code":3117,"message":"The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.","data":{"unknownOutputReferences":[{"transaction":{"id":"731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180"},"index":1}]}}},{"validator":"certificate:15","error":{"code":3011,"message":"An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.","data":{"missingScripts":["mint:11"]}}},{"validator":"withdrawal:16","error":{"code":3111,"message":"Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.","data":{"missingDatums":["342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f"]}}}]},"id":"mK9IYY6GandR"} \ No newline at end of file +{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3010,"message":"Some scripts of the transactions terminated with error(s).","data":[{"validator":"certificate:11","error":{"code":3117,"message":"The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.","data":{"unknownOutputReferences":[{"transaction":{"id":"731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180"},"index":1}]}}},{"validator":"certificate:15","error":{"code":3011,"message":"An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.","data":{"missingScripts":["mint:11"]}}},{"validator":"withdrawal:16","error":{"code":3111,"message":"Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.","data":{"missingDatums":["342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f"]}}}]},"id":"mK9IYY6GandR"} diff --git a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json index 2e1d7c9fe..57a1e3507 100644 --- a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json @@ -15,7 +15,7 @@ "memory": 4926587050210136942, "cpu": 2982577810151428748 } - }, + }, { "validator": "withdrawal:8", "budget": { diff --git a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json index d6400b312..dd82d93ad 100644 --- a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json @@ -15,13 +15,13 @@ "memory": 4926587050210136942, "cpu": 2982577810151428748 } - }, + }, { - "validator": "withdrawal:8", + "validator": "withdrawal:0", "budget": { "memory": 3603965291794951667, "cpu": 937555587227912939 - } + } } ], "id": "kuOpGfqeiHbY" diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index a9e63a1bf..32ae92f63 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -10,7 +10,7 @@ import Aeson as Aeson import Control.Monad.Error.Class (liftEither) import Control.Monad.Trans.Class (lift) import Control.Parallel (parTraverse) -import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, decodeOgmiosResponse) +import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, decodeOgmios) import Ctl.Internal.QueryM.Ogmios as O import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, elem, groupAllBy, nubBy) @@ -107,7 +107,7 @@ suite = group "Ogmios Aeson tests" do handle _ = liftEither $ bimap (error <<< ((bn <> "\n ") <> _) <<< show) (const unit) - (decodeOgmiosResponse aeson :: _ a) + (decodeOgmios aeson :: _ a) case query of "queryNetwork/tip" -> handle (Proxy :: _ O.ChainTipQR) "queryLedgerState/epoch" -> handle (Proxy :: _ O.CurrentEpoch) diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index 6b5c3c898..c05fceb21 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -5,8 +5,8 @@ import Prelude import Aeson (JsonDecodeError(TypeMismatch)) import Contract.Numeric.Natural (Natural, fromBigInt') import Ctl.Internal.QueryM.JsonRpc2 - ( OgmiosDecodeError(DecodingError) - , decodeOgmiosResponse + ( OgmiosDecodeError(ResultDecodingError) + , decodeOgmios ) import Ctl.Internal.QueryM.Ogmios ( ExecutionUnits @@ -16,10 +16,10 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationResult(TxEvaluationResult) ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Cert, Mint)) +import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Cert, Reward)) import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) -import Data.Map (fromFoldable) as Map +import Data.Map as Map import Data.Maybe (fromJust) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) @@ -40,24 +40,25 @@ suite = do group "Decoding EvaluateTx response" do test "Successfully decodes a valid response" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect ogmiosEvaluateTxValidRespFixture + decodeOgmios <$> liftEffect ogmiosEvaluateTxValidRespFixture txEvalR `shouldSatisfy` case _ of - Right (TxEvaluationR (Right (TxEvaluationResult map))) -> map == - Map.fromFoldable ogmiosEvaluateTxValidRespDecoded + Right (TxEvaluationR (Right (TxEvaluationResult map))) -> + Map.toUnfoldable map == + ogmiosEvaluateTxValidRespDecoded _ -> false test "Fails to decode a response with invalid redeemer pointer format" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect + decodeOgmios <$> liftEffect ogmiosEvaluateTxInvalidPointerFormatFixture txEvalR `shouldSatisfy` case _ of - Left (DecodingError (TypeMismatch _)) -> true + Left (ResultDecodingError (TypeMismatch _)) -> true _ -> false test "Successfully decodes a failed execution response (Incompatible era)" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect + decodeOgmios <$> liftEffect ogmiosEvaluateTxFailIncompatibleEraFixture txEvalR `shouldSatisfy` case _ of Right (TxEvaluationR (Left (UnparsedError _))) -> true @@ -65,15 +66,15 @@ suite = do test "Successfully decodes a failed execution response (Script errors)" do txEvalR :: Either OgmiosDecodeError TxEvaluationR <- - decodeOgmiosResponse <$> liftEffect + decodeOgmios <$> liftEffect ogmiosEvaluateTxFailScriptErrorsFixture txEvalR `shouldSatisfy` case _ of Right (TxEvaluationR (Left (ScriptFailures _))) -> true _ -> false ogmiosEvaluateTxValidRespDecoded :: Array (RedeemerPointer /\ ExecutionUnits) -ogmiosEvaluateTxValidRespDecoded = - [ { redeemerTag: Mint, redeemerIndex: zero } +ogmiosEvaluateTxValidRespDecoded = Map.toUnfoldable $ Map.fromFoldable + [ { redeemerTag: Cert, redeemerIndex: one + one + one } /\ { memory: naturalLiteral "4926587050210136942" , steps: naturalLiteral "2982577810151428748" @@ -83,12 +84,12 @@ ogmiosEvaluateTxValidRespDecoded = { memory: naturalLiteral "2766916028110716146" , steps: naturalLiteral "6325731070934221229" } - , { redeemerTag: Cert, redeemerIndex: one + one + one } + , { redeemerTag: Reward, redeemerIndex: zero } /\ - { memory: naturalLiteral "4926587050210136942" - , steps: naturalLiteral "2982577810151428748" + { memory: naturalLiteral "3603965291794951667" + , steps: naturalLiteral "937555587227912939" } ] naturalLiteral :: String -> Natural -naturalLiteral x = fromBigInt' $ unsafePartial $ fromJust $ BigInt.fromString x \ No newline at end of file +naturalLiteral x = fromBigInt' $ unsafePartial $ fromJust $ BigInt.fromString x diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index f7976068a..d8c001f3c 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -32,7 +32,7 @@ import Ctl.Internal.ServerConfig (ServerConfig, mkWsUrl) import Data.Either (Either(Left, Right)) import Data.Log.Level (LogLevel(Trace, Debug)) import Data.Map as Map -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.String.Common (replace) import Data.String.Pattern (Pattern(Pattern), Replacement(Replacement)) import Data.Traversable (for_, traverse_) @@ -96,9 +96,8 @@ derive instance Newtype AesonResponse _ instance Show AesonResponse where show = show <<< unwrap --- We decode and save the responses exactly. instance DecodeOgmios AesonResponse where - decodeOgmios = pure <<< AesonResponse <<< encodeAeson + decodeOgmios = pure <<< wrap mkQueryWithArgs' :: forall a. EncodeAeson a => String -> a -> Query mkQueryWithArgs' method a = Query diff --git a/test/QueryM/AffInterface.purs b/test/QueryM/AffInterface.purs index 93af890c5..0403920f9 100644 --- a/test/QueryM/AffInterface.purs +++ b/test/QueryM/AffInterface.purs @@ -39,7 +39,8 @@ suite = do void $ throwError $ error $ "Unexpected success in testSubmitTxFailure" Left error -> do - (Pattern "Server responded with `fault`" `indexOf` show error) + (Pattern "Ogmios responded with error: " `indexOf` show error) + -- Error: (TypeMismatch "Expected error code in a range [3000, 3999]") `shouldSatisfy` isJust testGetChainTip :: QueryM Unit From b58f25624de79a16c5aa844068149943292ac067 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 10 Nov 2023 20:49:34 +0100 Subject: [PATCH 408/478] Fix next mempool tx response decoding --- src/Contract/Backend/Ogmios/Mempool.purs | 6 ++-- src/Internal/QueryM.purs | 4 +-- src/Internal/QueryM/JsonRpc2.purs | 9 +++--- src/Internal/QueryM/Ogmios.purs | 35 +++++++++++++++--------- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index 6f9248764..55bc13f3d 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -16,7 +16,6 @@ import Contract.Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) -import Ctl.Internal.Base64 (decodeBase64) import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Deserialization.Transaction (deserializeTransaction) @@ -33,6 +32,7 @@ import Ctl.Internal.QueryM.Ogmios , MempoolTransaction(MempoolTransaction) , TxHash ) as Ogmios +import Ctl.Internal.Types.ByteArray (hexToByteArray) import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array as Array import Data.List (List(Cons)) @@ -61,7 +61,7 @@ mempoolSnapshotNextTx mempoolAcquired = do mbTx <- wrapQueryM $ QueryM.mempoolSnapshotNextTx mempoolAcquired for mbTx \(Ogmios.MempoolTransaction { raw }) -> do byteArray <- liftMaybe (error "Failed to decode transaction") - $ decodeBase64 raw + $ hexToByteArray raw liftMaybe (error "Failed to decode tx") $ hush $ deserializeTransaction @@ -77,7 +77,7 @@ mempoolSnapshotSizeAndCapacity = wrapQueryM <<< -- | Release the connection to the Local TX Monitor. releaseMempool :: Ogmios.MempoolSnapshotAcquired -> Contract Unit -releaseMempool = void <<< wrapQueryM <<< QueryM.releaseMempool +releaseMempool = wrapQueryM <<< QueryM.releaseMempool -- | A bracket-style function for working with mempool snapshots - ensures -- | release in the presence of exceptions diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index b86afe368..2c986e870 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -430,9 +430,9 @@ mempoolSnapshotSizeAndCapacity ms = releaseMempool :: Ogmios.MempoolSnapshotAcquired - -> QueryM ReleasedMempool + -> QueryM Unit releaseMempool ms = - mkOgmiosRequest + unit <$ mkOgmiosRequest (Ogmios.releaseMempoolCall ms) _.releaseMempool unit diff --git a/src/Internal/QueryM/JsonRpc2.purs b/src/Internal/QueryM/JsonRpc2.purs index 737416c8a..de5454d8d 100644 --- a/src/Internal/QueryM/JsonRpc2.purs +++ b/src/Internal/QueryM/JsonRpc2.purs @@ -31,6 +31,7 @@ import Aeson , encodeAeson , getField , getFieldOptional + , printJsonDecodeError , stringifyAeson ) import Ctl.Internal.QueryM.UniqueId (ListenerId, uniqueId) @@ -38,7 +39,7 @@ import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right)) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Just), maybe) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import Data.These (These(That, Both), theseLeft, theseRight) import Data.Traversable (sequence) @@ -157,11 +158,11 @@ instance Show OgmiosDecodeError where pprintOgmiosDecodeError :: OgmiosDecodeError -> String pprintOgmiosDecodeError (ErrorResponse err) = "Ogmios responded with error: " <> - maybe "" (stringifyAeson <<< encodeAeson <<< unwrap) err + maybe "" pprintOgmiosError err pprintOgmiosDecodeError (ResultDecodingError err) = - "Failed to parse the result: " <> show err + "Failed to parse the result: " <> printJsonDecodeError err pprintOgmiosDecodeError (InvalidResponse err) = - "Ogmios response was not of the right format: " <> show err + "Ogmios response was not of the right format: " <> printJsonDecodeError err ogmiosDecodeErrorToError :: OgmiosDecodeError -> Error ogmiosDecodeErrorToError err = error $ pprintOgmiosDecodeError err diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index f9fc562e2..426e9b351 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -82,6 +82,7 @@ import Aeson , Aeson , JsonDecodeError(AtKey, TypeMismatch, UnexpectedValue, MissingValue) , caseAesonArray + , caseAesonNull , caseAesonObject , caseAesonString , decodeAeson @@ -388,24 +389,25 @@ instance DecodeOgmios MempoolSizeAndCapacity where newtype MempoolTransaction = MempoolTransaction { id :: OgmiosTxId - , raw :: String + , raw :: String -- hex encoded transaction cbor } derive instance Generic MempoolTransaction _ derive instance Newtype MempoolTransaction _ -instance Show MempoolTransaction where - show = genericShow - -instance DecodeAeson MempoolTransaction where +instance DecodeAeson MaybeMempoolTransaction where decodeAeson aeson = do - { transaction: tx } - :: { transaction :: - { id :: String - , cbor :: String - } - } <- decodeAeson aeson - pure $ MempoolTransaction { id: tx.id, raw: tx.cbor } + { transaction: tx } :: { transaction :: Aeson } <- decodeAeson aeson + res <- + ( do + tx' :: { id :: String, cbor :: String } <- decodeAeson tx + pure $ Just $ MempoolTransaction { id: tx'.id, raw: tx'.cbor } + ) <|> + ( do + aesonNull tx + pure Nothing + ) + pure $ MaybeMempoolTransaction $ res newtype MaybeMempoolTransaction = MaybeMempoolTransaction (Maybe MempoolTransaction) @@ -413,7 +415,7 @@ newtype MaybeMempoolTransaction = MaybeMempoolTransaction derive instance Newtype MaybeMempoolTransaction _ instance DecodeOgmios MaybeMempoolTransaction where - decodeOgmios = decodeResult (map wrap <<< decodeAeson) + decodeOgmios = decodeResult decodeAeson data ReleasedMempool = ReleasedMempool @@ -1257,3 +1259,10 @@ aesonString -> Aeson -> Either JsonDecodeError a aesonString = caseAesonString (Left (TypeMismatch "Expected String")) + +-- Helper that decodes a null +aesonNull + :: forall (a :: Type) + . Aeson + -> Either JsonDecodeError Unit +aesonNull = caseAesonNull (Left (TypeMismatch "Expected Null")) pure From c2ddcc8607600dba6cfd171d5008603335d8f9a6 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Fri, 10 Nov 2023 20:52:20 +0100 Subject: [PATCH 409/478] Remove unneeded Base64 module Was needed to decode ogmios response for `nextTx` with mempool tx, which is now encoded as Base16. --- src/Internal/Base64.js | 13 --------- src/Internal/Base64.purs | 57 ---------------------------------------- test/Base64.purs | 26 ------------------ test/Unit.purs | 2 -- 4 files changed, 98 deletions(-) delete mode 100644 src/Internal/Base64.js delete mode 100644 src/Internal/Base64.purs delete mode 100644 test/Base64.purs diff --git a/src/Internal/Base64.js b/src/Internal/Base64.js deleted file mode 100644 index 5bd33d96a..000000000 --- a/src/Internal/Base64.js +++ /dev/null @@ -1,13 +0,0 @@ -const base64 = require("base64-js"); - -exports.fromByteArray = base64.fromByteArray; - -exports.toByteArray = base64.toByteArray; - -exports._decodeBase64 = maybe => str => { - try { - return maybe.just(base64.toByteArray(str)); - } catch (_) { - return maybe.nothing; - } -}; diff --git a/src/Internal/Base64.purs b/src/Internal/Base64.purs deleted file mode 100644 index 241169839..000000000 --- a/src/Internal/Base64.purs +++ /dev/null @@ -1,57 +0,0 @@ -module Ctl.Internal.Base64 - ( Base64String - , mkBase64String - , unBase64String - , toByteArray - , fromByteArray - , decodeBase64 - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - ) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Types.ByteArray (ByteArray) -import Data.Either (Either(Left)) -import Data.Maybe (Maybe, maybe) -import Test.QuickCheck (class Arbitrary, arbitrary) - -newtype Base64String = Base64String String - -derive newtype instance Eq Base64String -derive newtype instance Ord Base64String - -instance Show Base64String where - show str = "(fromByteArray " <> show (toByteArray str) <> ")" - -instance DecodeAeson Base64String where - decodeAeson json = do - decodeAeson json >>= mkBase64String >>> - maybe (Left $ TypeMismatch "Base64String") pure - -derive newtype instance EncodeAeson Base64String - --- | Wraps a `String` into `Base64String` if it is valid. -mkBase64String :: String -> Maybe Base64String -mkBase64String str = decodeBase64 str $> Base64String str - -unBase64String :: Base64String -> String -unBase64String (Base64String str) = str - -foreign import toByteArray :: Base64String -> ByteArray - -foreign import fromByteArray :: ByteArray -> Base64String - -foreign import _decodeBase64 :: MaybeFfiHelper -> String -> Maybe ByteArray - -decodeBase64 :: String -> Maybe ByteArray -decodeBase64 = _decodeBase64 maybeFfiHelper - -instance Arbitrary Base64String where - arbitrary = do - fromByteArray <$> arbitrary diff --git a/test/Base64.purs b/test/Base64.purs deleted file mode 100644 index 4100ba884..000000000 --- a/test/Base64.purs +++ /dev/null @@ -1,26 +0,0 @@ -module Test.Ctl.Base64 (suite) where - -import Prelude - -import Ctl.Internal.Base64 - ( fromByteArray - , mkBase64String - , toByteArray - , unBase64String - ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Maybe (Maybe(Just)) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Mote (group, test) -import Test.QuickCheck (quickCheck, (===)) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "Base64" do - test "toByteArray . fromByteArray = id" $ liftEffect do - quickCheck \bytes -> - toByteArray (fromByteArray bytes) === bytes - test "mkBase64String <<< unBase64String = Just" $ liftEffect do - quickCheck \base64Str -> - mkBase64String (unBase64String base64Str) === Just base64Str diff --git a/test/Unit.purs b/test/Unit.purs index bdc9e415d..a1b7daf91 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -12,7 +12,6 @@ import Effect.Aff (Aff, cancelWith, effectCanceler, launchAff) import Effect.Class (liftEffect) import Mote.Monad (mapTest) import Test.Ctl.ApplyArgs as ApplyArgs -import Test.Ctl.Base64 as Base64 import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.ByteArray as ByteArray @@ -59,7 +58,6 @@ testPlan = do ApplyArgs.suite Ipv6.suite NativeScript.suite - Base64.suite Bip32.suite ByteArray.suite Cip25.suite From d692410ca2518bb389689c0ee712c36603366c01 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sat, 11 Nov 2023 17:34:05 +0100 Subject: [PATCH 410/478] Update nix ogmios fixtures --- flake.nix | 15 +++- src/Internal/QueryM/Ogmios.purs | 6 +- test/Ogmios/Aeson.purs | 125 ++++++++++++++++++++++---------- 3 files changed, 100 insertions(+), 46 deletions(-) diff --git a/flake.nix b/flake.nix index e8d81c302..b59797a37 100644 --- a/flake.nix +++ b/flake.nix @@ -125,11 +125,20 @@ function on_file () { local path=$1 - local parent="$(basename "$(dirname "$path")")" - if command=$(pcregrep -o1 -o2 -o3 'Query\[(.*)\]|(EvaluateTx)|(SubmitTx)' <<< "$path") + match_A=$(pcregrep -o1 'QueryLedgerState([a-zA-Z]+)\/' <<< "$path") + match_B=$(pcregrep -o1 '([a-zA-Z]+)Response' <<< "$path") + command="" + if [ ! -z $match_A ] + then + command="QueryLedgerState-$match_A" + elif [ ! -z $match_B ] + then + command="$match_B" + fi + if [ ! -z $command ] then echo "$path" - json=$(jq -c .result "$path") + json=$(cat "$path") md5=($(md5sum <<< "$json")) printf "%s" "$json" > "ogmios/$command-$md5.json" fi diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 426e9b351..c0c36bf33 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -395,6 +395,9 @@ newtype MempoolTransaction = MempoolTransaction derive instance Generic MempoolTransaction _ derive instance Newtype MempoolTransaction _ +newtype MaybeMempoolTransaction = MaybeMempoolTransaction + (Maybe MempoolTransaction) + instance DecodeAeson MaybeMempoolTransaction where decodeAeson aeson = do { transaction: tx } :: { transaction :: Aeson } <- decodeAeson aeson @@ -409,9 +412,6 @@ instance DecodeAeson MaybeMempoolTransaction where ) pure $ MaybeMempoolTransaction $ res -newtype MaybeMempoolTransaction = MaybeMempoolTransaction - (Maybe MempoolTransaction) - derive instance Newtype MaybeMempoolTransaction _ instance DecodeOgmios MaybeMempoolTransaction where diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 32ae92f63..783e027e4 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -5,19 +5,32 @@ module Test.Ctl.Ogmios.Aeson import Prelude -import Aeson (Aeson, printJsonDecodeError) +import Aeson (Aeson, JsonDecodeError, encodeAeson, printJsonDecodeError) import Aeson as Aeson +import Contract.Backend.Ogmios.Mempool (MempoolSizeAndCapacity) import Control.Monad.Error.Class (liftEither) import Control.Monad.Trans.Class (lift) import Control.Parallel (parTraverse) -import Ctl.Internal.QueryM.JsonRpc2 (class DecodeOgmios, decodeOgmios) +import Ctl.Internal.QueryM.JsonRpc2 + ( class DecodeOgmios + , OgmiosDecodeError(ErrorResponse) + , decodeOgmios + ) +import Ctl.Internal.QueryM.Ogmios + ( HasTxR + , SubmitTxR + , TxEvaluationR + , aesonObject + ) import Ctl.Internal.QueryM.Ogmios as O import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) -import Data.Array (catMaybes, elem, groupAllBy, nubBy) +import Data.Array (catMaybes, groupAllBy, nubBy) import Data.Array.NonEmpty (NonEmptyArray, head, length, tail) -import Data.Bifunctor (bimap, lmap) -import Data.Either (hush) +import Data.Bifunctor (lmap) +import Data.Either (Either(Left, Right), hush) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), maybe) +import Data.String (toLower) import Data.String.Regex (match, regex) import Data.String.Regex.Flags (noFlags) import Data.Traversable (for_) @@ -26,6 +39,7 @@ import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) import Effect.Class (liftEffect) import Effect.Exception (throw) +import Foreign.Object (update) as Object import Mote (group, skip, test) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (readTextFile, readdir) @@ -33,20 +47,59 @@ import Node.Path (FilePath, basename, concat) import Node.Process (lookupEnv) import Type.Proxy (Proxy(Proxy)) -supported :: Array String -supported = - [ "queryNetwork/tip" - , "queryNetwork/startTime" - , "queryLedgerState/epoch" - , "queryLedgerState/eraSummaries" - , "queryLedgerState/protocolParameters" - , "queryLedgerState/stakePools" - -- , "queryLedgerState/rewardAccountSummaries" - -- TODO Support plutus:v2 parameters - -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/567 - -- , "currentProtocolParameters-noPlutusV1" +type Check = String -> Aeson -> Aff Unit + +-- These fixtures are tested to decode to given types. +-- Pay attention to update this if fixture filenames change, otherwise tests are going to be ignored. +tested :: Array (String /\ Check) +tested = + [ ("queryNetwork/tip" /\ check (Proxy :: _ O.ChainTipQR)) + , ("queryNetwork/startTime" /\ check (Proxy :: _ O.CurrentEpoch)) + , ("queryLedgerState/epoch" /\ check (Proxy :: _ O.OgmiosSystemStart)) + , ("queryLedgerState/eraSummaries" /\ check (Proxy :: _ O.OgmiosEraSummaries)) + , ( "queryLedgerState/protocolParameters" /\ check + (Proxy :: _ O.OgmiosProtocolParameters) + ) + , ("queryLedgerState/stakePools" /\ check (Proxy :: _ O.PoolParametersR)) + , ( "queryLedgerState/rewardAccountSummaries" /\ check + (Proxy :: _ O.DelegationsAndRewardsR) + ) + , ("evaluateTransaction" /\ check (Proxy :: _ TxEvaluationR)) + , ("submitTransaction" /\ check (Proxy :: _ SubmitTxR)) + , ("hasTransaction" /\ check (Proxy :: _ HasTxR)) + , ("sizeOfMempool" /\ check (Proxy :: _ MempoolSizeAndCapacity)) + -- ignoring because response may lack tx cbor if not run with flag + -- This endpoint is tested with "fetchMempoolTXs" test (Test.Ctl.Plutip.Contract.OgmiosMempool) + -- , ("nextTransaction" /\ (Proxy :: _ MaybeMempoolTransaction )) ] +-- Fixtures from ogmios repo have id set to "null", but we require it as string. +addIdFieldHack :: Aeson -> Either JsonDecodeError Aeson +addIdFieldHack = aesonObject $ + ( pure <<< encodeAeson <<< Object.update + (const $ pure $ encodeAeson "My favourite id") + "id" + ) + +-- Fail if we can't decode positive result +check + :: forall (a :: Type) + . DecodeOgmios a + => Proxy a + -> String + -> Aeson + -> Aff Unit +check _ bn aeson = liftEither $ lmap + (error <<< ((bn <> "\n ") <> _)) + ( do + aeson' <- lmap show (addIdFieldHack aeson) + case decodeOgmios aeson' of + -- we don't decode every error response, that's an expected fail + Left (ErrorResponse (Just _)) -> pure unit + Right (_ :: a) -> pure unit + Left e -> Left $ show e + ) + type Query = String readdir' :: FilePath -> Aff (Array FilePath) @@ -96,31 +149,23 @@ loadFixtures = do suite :: TestPlanM (Aff Unit) Unit suite = group "Ogmios Aeson tests" do groupedFiles <- lift loadFixtures + let + (tested' :: Map.Map String Check) = Map.fromFoldable $ map + (\(q /\ c) -> (toLower q /\ c)) + tested for_ groupedFiles \(query /\ files') -> - (if query `elem` supported then identity else skip) - $ test (query <> " (" <> show (length files') <> ")") - $ - for_ files' \{ aeson, bn } -> do - let - handle :: forall (a :: Type). DecodeOgmios a => Proxy a -> Aff Unit - handle _ = liftEither $ bimap - (error <<< ((bn <> "\n ") <> _) <<< show) - (const unit) - (decodeOgmios aeson :: _ a) - case query of - "queryNetwork/tip" -> handle (Proxy :: _ O.ChainTipQR) - "queryLedgerState/epoch" -> handle (Proxy :: _ O.CurrentEpoch) - "queryNetwork/startTime" -> handle (Proxy :: _ O.OgmiosSystemStart) - "queryLedgerState/eraSummaries" -> handle - (Proxy :: _ O.OgmiosEraSummaries) - "queryLedgerState/protocolParameters" -> handle - (Proxy :: _ O.OgmiosProtocolParameters) - "queryLedgerState/stakePools" -> handle - (Proxy :: _ O.PoolParametersR) - -- "queryLedgerState/rewardAccountSummaries" -> handle - -- (Proxy :: _ O.DelegationsAndRewardsR) - _ -> liftEffect $ throw $ "Unknown case " <> bn + let + query' = toLower query + in + let + test' ch = test (query <> " (" <> show (length files') <> ")") $ for_ + files' + \{ aeson, bn } -> ch bn aeson + in + case Map.lookup query' tested' of + Nothing -> skip $ test' (\_ _ -> pure unit) + Just check' -> test' check' main :: Effect Unit main = launchAff_ do From ad0341bae178818900bd336a0a2a5fe31099e98b Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sat, 11 Nov 2023 18:22:42 +0100 Subject: [PATCH 411/478] New submitTxE --- src/Contract/Backend/Ogmios.purs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index db6811516..fc74f7702 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -1,6 +1,7 @@ -- | Module for backend-specific functions that only work with Ogmios/Kupo backends module Contract.Backend.Ogmios ( getPoolParameters + , submitTxE ) where import Contract.Prelude @@ -9,7 +10,10 @@ import Contract.Monad (Contract) import Contract.Transaction (PoolPubKeyHash) import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.QueryM.Pools as QueryM +import Ctl.Internal.QueryM (submitTxOgmios) as QueryM +import Ctl.Internal.QueryM.Ogmios (SubmitTxR, TxHash) +import Ctl.Internal.QueryM.Pools (getPoolParameters) as QueryM +import Ctl.Internal.Types.CborBytes (CborBytes) -- | **This function can only run with Ogmios backend** -- | @@ -19,3 +23,7 @@ getPoolParameters :: PoolPubKeyHash -> Contract PoolRegistrationParams getPoolParameters = wrapQueryM <<< QueryM.getPoolParameters + +-- | Error returning variant +submitTxE :: TxHash -> CborBytes -> Contract SubmitTxR +submitTxE txhash cbor = wrapQueryM $ QueryM.submitTxOgmios txhash cbor From cfd2ebaf6455f1a366d8df7d2e91be2e8fe4fe81 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sat, 11 Nov 2023 18:29:48 +0100 Subject: [PATCH 412/478] Update CHANGELOG - ogmios update --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc3ab9e19..2f6312a8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [HD wallet support](./doc/key-management.md) with mnemonic seed phrases ([#1498](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1498)) - Ogmios-specific functions for Local TX Monitor Ouroboros Mini-Protocol in `Contract.Backend.Ogmios` ([#1508](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1508/)) - New `mustSendChangeWithDatum` balancer constraint that adds datum to all change outputs ([#1510](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1510/)) +- New `submitTxE`, an error returning variant of `submitTx` ### Changed @@ -91,7 +92,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Do not require light wallet collateral for all interactions ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - Removed re-exports of wallet-related functions from `Contract.Utxos` and `Contract.Address` (use `Contract.Wallet`) ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) - `ownPaymentPubKeysHashes` renamed to `ownPaymentPubKeyHashes`, `ownStakePubKeysHashes` renamed to `ownStakePubKeyHashes` and both moved to `Contract.Wallet` ([#1477](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1477)) -- Ogmios updated to version 6.0.0. As a result types: EvaluationTxR, PoolParametersR, changed. +- Types changed: `TxEvaluationFailure`, `PoolParametersR`, due to ogmios update ([#1532](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1532)). +- Updated versions of `ctl-runtime` services: Ogmios to 6.0.0, Blockfrost to v1.7.0. ### Fixed From 81658db706bfa5ca3caa24df58f0595538514b9b Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sat, 11 Nov 2023 18:56:05 +0100 Subject: [PATCH 413/478] Fix typo --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index b59797a37..d644f16fa 100644 --- a/flake.nix +++ b/flake.nix @@ -498,7 +498,7 @@ system = "x86_64-linux"; modules = [ inputs.cardano-node.nixosModules.cardano-node - inputs.ogmios.nixosModules.ogmios + inputs.ogmios-nixos.nixosModules.ogmios inputs.kupo-nixos.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; From 29181abb877c74ceaa58ce42a2cdaecb244dc848 Mon Sep 17 00:00:00 2001 From: zmrocze Date: Sat, 11 Nov 2023 19:55:26 +0100 Subject: [PATCH 414/478] Fix import --- src/Internal/Service/Blockfrost.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 6316ebc14..f8ea286a9 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -138,9 +138,9 @@ import Ctl.Internal.Deserialization.PlutusData (deserializeData) import Ctl.Internal.Deserialization.Transaction ( convertGeneralTransactionMetadata ) -import Ctl.Internal.QueryM.Ogmios (AdditionalUtxoSet, TxEvaluationR) import Ctl.Internal.QueryM.Ogmios - ( ExecutionUnits + ( AdditionalUtxoSet + , ExecutionUnits , OgmiosDatum , OgmiosScript , OgmiosTxIn From 02869ce91023a5c57c836037e84067e4fa90263e Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 13 Nov 2023 14:19:25 +0100 Subject: [PATCH 415/478] Fixes runPursTest setting of `node_modules` --- nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index ae72f1d61..8eaf5fddb 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -314,7 +314,7 @@ let cp -r $src/* . # Provide NPM dependencies to the test suite scripts - ln -sfn $NODE_PATH node_modules + ln -sfn ${nodeModules}/lib/node_modules node_modules # Call the main module and execute the entry point function ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.${psEntryPoint}())' From 9e1fec3745c943df07448ea71cff357818904827 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 13 Nov 2023 23:51:40 +0400 Subject: [PATCH 416/478] Dropped medea-ps dependency --- packages.dhall | 45 ---------------- spago-packages.nix | 60 ---------------------- spago.dhall | 1 - src/Internal/Contract/Monad.purs | 3 +- src/Internal/ProcessConstraints.purs | 5 +- templates/ctl-scaffold/packages.dhall | 46 ----------------- templates/ctl-scaffold/spago-packages.nix | 62 +---------------------- test/Utils.purs | 55 +------------------- 8 files changed, 6 insertions(+), 271 deletions(-) diff --git a/packages.dhall b/packages.dhall index ab77a7438..5c1aa7812 100644 --- a/packages.dhall +++ b/packages.dhall @@ -201,51 +201,6 @@ let additions = , repo = "https://github.com/garyb/purescript-mote" , version = "v1.1.0" } - , medea = - { dependencies = - [ "aff" - , "argonaut" - , "arrays" - , "bifunctors" - , "control" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "foreign-object" - , "free" - , "integers" - , "lists" - , "maybe" - , "mote" - , "naturals" - , "newtype" - , "node-buffer" - , "node-fs-aff" - , "node-path" - , "nonempty" - , "ordered-collections" - , "parsing" - , "partial" - , "prelude" - , "psci-support" - , "quickcheck" - , "quickcheck-combinators" - , "safely" - , "spec" - , "strings" - , "these" - , "transformers" - , "typelevel" - , "tuples" - , "unicode" - , "unordered-collections" - , "unsafe-coerce" - ] - , repo = "https://github.com/juspay/medea-ps.git" - , version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a" - } , purescript-toppokki = { dependencies = [ "prelude" diff --git a/spago-packages.nix b/spago-packages.nix index 465ce6127..ee195a75d 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -509,18 +509,6 @@ let installPhase = "ln -s $src $out"; }; - "freet" = pkgs.stdenv.mkDerivation { - name = "freet"; - version = "v6.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-freet.git"; - rev = "507c2edd9173cda5ad44dd0638133edd69fd9acd"; - sha256 = "0f5bibw604sd9ffmp51b3jppka88r54mh7sdz91zy5b92wgsy5yr"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "functions" = pkgs.stdenv.mkDerivation { name = "functions"; version = "v5.0.0"; @@ -737,18 +725,6 @@ let installPhase = "ln -s $src $out"; }; - "medea" = pkgs.stdenv.mkDerivation { - name = "medea"; - version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - src = pkgs.fetchgit { - url = "https://github.com/juspay/medea-ps.git"; - rev = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - sha256 = "05gnar9l1li0v1vv12kga0sssskfm4f1x9y6smpmqbqg9396pmsq"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "media-types" = pkgs.stdenv.mkDerivation { name = "media-types"; version = "v5.0.0"; @@ -797,18 +773,6 @@ let installPhase = "ln -s $src $out"; }; - "naturals" = pkgs.stdenv.mkDerivation { - name = "naturals"; - version = "v3.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/LiamGoodacre/purescript-naturals.git"; - rev = "53aaa11516cd1bb8429f33032802bf43a5b04644"; - sha256 = "0jaly95g46rbb7xwfv655pgm2bsp11p1iriasa0w79ryv0p488hi"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; version = "v4.0.0"; @@ -1301,18 +1265,6 @@ let installPhase = "ln -s $src $out"; }; - "safely" = pkgs.stdenv.mkDerivation { - name = "safely"; - version = "v4.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/paf31/purescript-safely.git"; - rev = "19f854737e17b4d058e5a1504a960821db36e4ab"; - sha256 = "1mrpz19smjsamz4cci287z89q715chzxna0gpbvdgivlca4z6879"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "sequences" = pkgs.stdenv.mkDerivation { name = "sequences"; version = "v3.0.2"; @@ -1529,18 +1481,6 @@ let installPhase = "ln -s $src $out"; }; - "unordered-collections" = pkgs.stdenv.mkDerivation { - name = "unordered-collections"; - version = "v2.1.4"; - src = pkgs.fetchgit { - url = "https://github.com/fehrenbach/purescript-unordered-collections.git"; - rev = "1be289188cef093520098e318ec910cf3ea5b40d"; - sha256 = "0vgfpdymxvgqf3sh8ji2w2b01w3s294v5mh04046s21qaywdi1jh"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "unsafe-coerce" = pkgs.stdenv.mkDerivation { name = "unsafe-coerce"; version = "v5.0.0"; diff --git a/spago.dhall b/spago.dhall index 605931265..b9d6a81e7 100644 --- a/spago.dhall +++ b/spago.dhall @@ -43,7 +43,6 @@ You can edit this file as you like. , "lists" , "math" , "maybe" - , "medea" , "media-types" , "monad-logger" , "mote" diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index f3a0234b4..360976fd5 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -90,12 +90,11 @@ import Data.Time.Duration (Milliseconds, Seconds) import Data.Traversable (for_, traverse, traverse_) import Effect (Effect) import Effect.Aff (Aff, ParAff, attempt, error, finally, supervise) -import Effect.Aff.Class (liftAff) +import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (Error, throw, try) import Effect.Ref (Ref) import Effect.Ref as Ref -import MedeaPrelude (class MonadAff) import Record.Builder (build, merge) -------------------------------------------------------------------------------- diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index a5f32de4b..623082ecb 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -201,7 +201,7 @@ import Ctl.Internal.Types.TxConstraints , utxoWithScriptRef ) import Data.Array (cons, partition, toUnfoldable, zip) -import Data.Array (singleton, (:)) as Array +import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) @@ -220,7 +220,6 @@ import Effect (Effect) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) -import MedeaPrelude (mapMaybe) import Prelude (join) as Bind -- The constraints don't precisely match those of Plutus: @@ -376,7 +375,7 @@ resumeTimeConstraints constraints = do { no: nonTimeConstraints, yes: timeConstraints } = partition isTimeConstraint constraints - intervals = mapMaybe constraintToInterval timeConstraints + intervals = Array.mapMaybe constraintToInterval timeConstraints newInterval <- foldM mergeIntervals always intervals pure $ cons (MustValidateIn newInterval) nonTimeConstraints where diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index e2b2f8c64..977015b3e 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -186,51 +186,6 @@ let additions = , repo = "https://github.com/garyb/purescript-mote" , version = "v1.1.0" } - , medea = - { dependencies = - [ "aff" - , "argonaut" - , "arrays" - , "bifunctors" - , "control" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "foreign-object" - , "free" - , "integers" - , "lists" - , "maybe" - , "mote" - , "naturals" - , "newtype" - , "node-buffer" - , "node-fs-aff" - , "node-path" - , "nonempty" - , "ordered-collections" - , "parsing" - , "partial" - , "prelude" - , "psci-support" - , "quickcheck" - , "quickcheck-combinators" - , "safely" - , "spec" - , "strings" - , "these" - , "transformers" - , "typelevel" - , "tuples" - , "unicode" - , "unordered-collections" - , "unsafe-coerce" - ] - , repo = "https://github.com/juspay/medea-ps.git" - , version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a" - } , purescript-toppokki = { dependencies = [ "prelude" @@ -300,7 +255,6 @@ let additions = , "lists" , "math" , "maybe" - , "medea" , "media-types" , "monad-logger" , "mote" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index b04ba2623..035340277 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -215,7 +215,7 @@ let src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; - sha256 = "0w2h1a18yf37r4lh7wjb0fnnmbxibqa07vsv3axbg84ljanh8ph2"; + sha256 = "0d3w868ns7ln4mmvjlc6rh5d6mc20ng5mdcp30azx9lyykvncpac"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -521,18 +521,6 @@ let installPhase = "ln -s $src $out"; }; - "freet" = pkgs.stdenv.mkDerivation { - name = "freet"; - version = "v6.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/purescript-contrib/purescript-freet.git"; - rev = "507c2edd9173cda5ad44dd0638133edd69fd9acd"; - sha256 = "0f5bibw604sd9ffmp51b3jppka88r54mh7sdz91zy5b92wgsy5yr"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "functions" = pkgs.stdenv.mkDerivation { name = "functions"; version = "v5.0.0"; @@ -749,18 +737,6 @@ let installPhase = "ln -s $src $out"; }; - "medea" = pkgs.stdenv.mkDerivation { - name = "medea"; - version = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - src = pkgs.fetchgit { - url = "https://github.com/juspay/medea-ps.git"; - rev = "8b215851959aa8bbf33e6708df6bd683c89d1a5a"; - sha256 = "05gnar9l1li0v1vv12kga0sssskfm4f1x9y6smpmqbqg9396pmsq"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "media-types" = pkgs.stdenv.mkDerivation { name = "media-types"; version = "v5.0.0"; @@ -809,18 +785,6 @@ let installPhase = "ln -s $src $out"; }; - "naturals" = pkgs.stdenv.mkDerivation { - name = "naturals"; - version = "v3.0.0"; - src = pkgs.fetchgit { - url = "https://github.com/LiamGoodacre/purescript-naturals.git"; - rev = "53aaa11516cd1bb8429f33032802bf43a5b04644"; - sha256 = "0jaly95g46rbb7xwfv655pgm2bsp11p1iriasa0w79ryv0p488hi"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; version = "v4.0.0"; @@ -1313,18 +1277,6 @@ let installPhase = "ln -s $src $out"; }; - "safely" = pkgs.stdenv.mkDerivation { - name = "safely"; - version = "v4.0.1"; - src = pkgs.fetchgit { - url = "https://github.com/paf31/purescript-safely.git"; - rev = "19f854737e17b4d058e5a1504a960821db36e4ab"; - sha256 = "1mrpz19smjsamz4cci287z89q715chzxna0gpbvdgivlca4z6879"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "sequences" = pkgs.stdenv.mkDerivation { name = "sequences"; version = "v3.0.2"; @@ -1541,18 +1493,6 @@ let installPhase = "ln -s $src $out"; }; - "unordered-collections" = pkgs.stdenv.mkDerivation { - name = "unordered-collections"; - version = "v2.1.4"; - src = pkgs.fetchgit { - url = "https://github.com/fehrenbach/purescript-unordered-collections.git"; - rev = "1be289188cef093520098e318ec910cf3ea5b40d"; - sha256 = "0vgfpdymxvgqf3sh8ji2w2b01w3s294v5mh04046s21qaywdi1jh"; - }; - phases = "installPhase"; - installPhase = "ln -s $src $out"; - }; - "unsafe-coerce" = pkgs.stdenv.mkDerivation { name = "unsafe-coerce"; version = "v5.0.0"; diff --git a/test/Utils.purs b/test/Utils.purs index 01278d474..fe5040630 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -1,6 +1,5 @@ module Test.Ctl.Utils - ( ValidationM(ValidationM) - , aesonRoundTrip + ( aesonRoundTrip , assertTrue , assertTrue_ , errEither @@ -9,7 +8,6 @@ module Test.Ctl.Utils , measure' , measureWithTimeout , readAeson - , runValidationM , toFromAesonTest , toFromAesonTestWith ) where @@ -25,23 +23,10 @@ import Aeson , encodeAeson , parseJsonStringToAeson ) -import Control.Alt (class Alt) -import Control.Alternative (class Alternative) -import Control.Monad.Error.Class - ( class MonadError - , class MonadThrow - , throwError - ) -import Control.Monad.Except.Trans (ExceptT, runExceptT) -import Control.MonadPlus (class MonadPlus) -import Control.MonadZero (class MonadZero) -import Control.Plus (class Plus) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.DateTime.Instant (unInstant) -import Data.Either (Either(Left, Right), either) -import Data.Identity (Identity(Identity)) +import Data.Either (Either(Right), either) import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.Medea (ValidationError(EmptyError)) import Data.Newtype (unwrap, wrap) import Data.Time.Duration (class Duration, Milliseconds, Seconds) import Data.Time.Duration (fromDuration, toDuration) as Duration @@ -56,42 +41,6 @@ import Node.FS.Sync (readTextFile) import Node.Path (FilePath) import Test.Spec.Assertions (shouldEqual) --- this silly thing is needed because Medea's `validate` needs both --- MonadPlus and MonadError, there must be a better way --- or it should be upstreamed to medea-ps as a default -newtype ValidationM a = ValidationM (ExceptT ValidationError Identity a) - -derive newtype instance functorValidationM :: Functor ValidationM -derive newtype instance applyValidationM :: Apply ValidationM -derive newtype instance applicativeValidationM :: Applicative ValidationM -derive newtype instance bindValidationM :: Bind ValidationM -derive newtype instance monadValidationM :: Monad ValidationM -derive newtype instance monadThrowValidationM :: - MonadThrow ValidationError ValidationM - -derive newtype instance monadErrorValidationM :: - MonadError ValidationError ValidationM - --- note: MonadZero is being deprecated -derive newtype instance monadZeroValidationM :: MonadZero ValidationM -derive newtype instance monadPlusValidationM :: MonadPlus ValidationM -instance altValidationM :: Alt ValidationM where - alt (ValidationM first) (ValidationM second) = case runExceptT first of - (Identity (Right a)) -> pure a - (Identity (Left _)) -> case runExceptT second of - (Identity (Right a)) -> pure a - (Identity (Left e)) -> throwError e - -instance plusValidationM :: Plus ValidationM where - empty = throwError EmptyError - -instance alternativeValidationM :: Alternative ValidationM - -runValidationM :: forall (a :: Type). ValidationM a -> Either ValidationError a -runValidationM (ValidationM etvia) = do - let (Identity eva) = runExceptT etvia - eva - measure :: forall (m :: Type -> Type) (a :: Type). MonadEffect m => m a -> m a measure = measure' (Nothing :: Maybe Seconds) From 018406c3ebfcffd90ce04aab3ea9c1479ab7f318 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 15 Nov 2023 19:08:57 +0400 Subject: [PATCH 417/478] Update CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bebecc77f..ce971e14f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,9 +86,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed +- **[IMPORTANT]** Ogmios has been updated and it must be started with `--include-transaction-cbor`. CTL relies on CBOR variants being available in the responses. +- **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - `scriptCurrencySymbol` no longer returns `Maybe` ([#1538](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1538) -- **[IMPORTANT]** It is no more recommended to use `utxosAt` to get UTxOs at light wallet addresses. It may be a source of application bugs in some cases due to how wallets operate. Please see *Synchronization and wallet UTxO locking* section [here](./doc/query-layers.md) ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Slot to/from POSIXTime conversion functions now live outside of `Effect` ([#1490](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1490)) - All uses of `utxosAt` call have been replaced with `getWalletUtxos` in the balancer ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)) - Naming changes in `Contract.Test.Assert` for consistency with other functions ([#1440](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1440)): From 908927efe7e16a8d3fca5236fd7dfca531cefe3d Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 21 Nov 2023 21:03:26 +0100 Subject: [PATCH 418/478] Update `easy-purscript-nix` nix flake input --- flake.lock | 7 +++---- flake.nix | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index a190b7bca..bb53f8091 100644 --- a/flake.lock +++ b/flake.lock @@ -2269,17 +2269,16 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1679861376, - "narHash": "sha256-LLqaLPJNiap2U8I77K5XVPGJA/Be30Z8lyGOyYXmBlc=", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 85c24f2f5..ad96479b1 100644 --- a/flake.nix +++ b/flake.nix @@ -63,7 +63,7 @@ flake = false; }; easy-purescript-nix = { - url = "github:justinwoo/easy-purescript-nix/0c10ff170461aed0c336f5c21ed0f430c2c3574b"; + url = "github:justinwoo/easy-purescript-nix"; flake = false; }; From 4f28c778be3b200a46b1eb4352569ce952c96863 Mon Sep 17 00:00:00 2001 From: Hercules CI Effects Date: Wed, 22 Nov 2023 10:56:13 +0000 Subject: [PATCH 419/478] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'CHaP': 'github:input-output-hk/cardano-haskell-packages/0f233c529212e0bacff8b7ba6eb9f39aa799ef0f' (2023-09-15) → 'github:input-output-hk/cardano-haskell-packages/eaf713ef8029332b9e4e23685fa157f26086da8b' (2023-11-22) • Updated input 'blockfrost/nixpkgs': 'github:NixOS/nixpkgs/19969392ddb1182c46bd2dd3f183472a4f8cc904' (2023-09-15) → 'github:NixOS/nixpkgs/d449a456ba7d81038fc9ec9141eae7ee3aaf2982' (2023-06-22) • Updated input 'cardano-configurations': 'github:input-output-hk/cardano-configurations/65ef979cf69f420efca0a7aaf0412a610bc48097' (2023-09-06) → 'github:input-output-hk/cardano-configurations/bd40a1ee99782196a70e8fa084a572c276d1d297' (2023-11-17) • Updated input 'cardano-node/em': 'github:deepfire/em/af69bb5c2ac2161434d8fea45f920f8f359587ce' (2023-05-25) → 'github:deepfire/em/302cdf6d654fb18baff0213bdfa41a653774585a' (2023-05-22) • Updated input 'cardano-node/nix2container': 'github:nlewo/nix2container/ab381a7d714ebf96a83882264245dbd34f0a7ec8' (2023-07-09) → 'github:nlewo/nix2container/6800fff45afecc7e47c334d14cf2b2f4f25601a0' (2022-12-17) • Updated input 'cardano-node/nix2container/nixpkgs': 'github:NixOS/nixpkgs/111ca8e0378e88d9decaa1c6dd7597f35d8bc67f' (2023-02-28) → 'github:NixOS/nixpkgs/fc909087cc3386955f21b4665731dbdaceefb1d8' (2022-06-09) • Updated input 'cardano-node/ops-lib': 'github:input-output-hk/ops-lib/4a8752ac856e0b0052ea49c8cfc38f9f425c79bf' (2023-09-20) → 'github:input-output-hk/ops-lib/5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d' (2023-01-31) • Updated input 'easy-purescript-nix': 'github:justinwoo/easy-purescript-nix/5dcea83eecb56241ed72e3631d47e87bb11e45b9' (2023-07-21) → 'github:justinwoo/easy-purescript-nix/d5fe5f4b210a0e4bac42ae0c159596a49c5eb016' (2023-10-06) • Updated input 'flake-compat': 'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17) → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04) • Updated input 'hackage-nix': 'github:input-output-hk/hackage.nix/e3b58bcdc9d0b67a9e9d475a939ec66556167642' (2023-09-15) → 'github:input-output-hk/hackage.nix/2674c27b8de693e83776083ed5fdf95e54be6463' (2023-11-22) • Updated input 'haskell-nix': 'github:input-output-hk/haskell.nix/ef09c9687d2f66bd8f5e226acaaf3f85af9b24cc' (2023-09-15) → 'github:input-output-hk/haskell.nix/fc060cf2934f7f206a4340ef86f5764b2f95737d' (2023-11-22) • Removed input 'haskell-nix/ghc980' • Added input 'haskell-nix/ghc98X': 'git+https://gitlab.haskell.org/ghc/ghc?ref=ghc-9.8&rev=443e870d977b1ab6fc05f47a9a17bc49296adbd6' (2023-10-07) • Updated input 'haskell-nix/ghc99': 'git+https://gitlab.haskell.org/hamishmack/ghc?ref=hkm/bump-Cabal&rev=b2bddd0b8214ac1db6239cc25f7c0aabeb2ebb70' (2023-09-06) → 'git+https://gitlab.haskell.org/ghc/ghc?ref=refs/heads/master&rev=f383a242c76f90bcca8a4d7ee001dcb49c172a9a' (2023-10-11) • Added input 'haskell-nix/hls-2.3': 'github:haskell/haskell-language-server/458ccdb55c9ea22cd5d13ec3051aaefb295321be' (2023-09-28) • Added input 'haskell-nix/hls-2.4': 'github:haskell/haskell-language-server/362fdd1293efb4b82410b676ab1273479f6d17ee' (2023-10-10) • Updated input 'haskell-nix/nixpkgs-2305': 'github:NixOS/nixpkgs/b81af66deb21f73a70c67e5ea189568af53b1e8c' (2023-07-30) → 'github:NixOS/nixpkgs/715d72e967ec1dd5ecc71290ee072bcaf5181ed6' (2023-09-22) • Updated input 'haskell-nix/nixpkgs-unstable': 'github:NixOS/nixpkgs/3acb5c4264c490e7714d503c7166a3fde0c51324' (2023-07-30) → 'github:NixOS/nixpkgs/e12483116b3b51a185a33a272bf351e357ba9a99' (2023-09-21) • Updated input 'haskell-nix/stackage': 'github:input-output-hk/stackage.nix/d75be51a420f2bc976e7af0b2a52271842fc0e10' (2023-09-15) → 'github:input-output-hk/stackage.nix/9c2015334cc77837b8454b3b10ef4f711a256f6f' (2023-11-20) • Updated input 'iohk-nix': 'github:input-output-hk/iohk-nix/7d738e59d276336d1e02447e27b0373164d3bc88' (2023-09-06) → 'github:input-output-hk/iohk-nix/73dc2bb45af6f20cfe1d962f1334eed5e84ae764' (2023-11-03) --- flake.lock | 150 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 93 insertions(+), 57 deletions(-) diff --git a/flake.lock b/flake.lock index de9755567..d31de6460 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1694768913, - "narHash": "sha256-c+C/6gcZCD8TcX+08WhLudOEO0QQu6GXdy1GO6ZA190=", + "lastModified": 1700639964, + "narHash": "sha256-iQ48z5eqSHP8d7B8BBJtnXkVPIKPvdWc0GhIgy4j8cc=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "0f233c529212e0bacff8b7ba6eb9f39aa799ef0f", + "rev": "eaf713ef8029332b9e4e23685fa157f26086da8b", "type": "github" }, "original": { @@ -1269,11 +1269,11 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "lastModified": 1700184336, + "narHash": "sha256-YhGAINYsk5qmHNOzoaB3vfItytsuADAA6XrFsfOOHQ8=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "rev": "bd40a1ee99782196a70e8fa084a572c276d1d297", "type": "github" }, "original": { @@ -2269,11 +2269,11 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1689933391, - "narHash": "sha256-jUuy2OzmxegEn0KT3u1uf87eGGA33+of9HodIqS3PLY=", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "5dcea83eecb56241ed72e3631d47e87bb11e45b9", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { @@ -2285,11 +2285,11 @@ "em": { "flake": false, "locked": { - "lastModified": 1685015066, - "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", "owner": "deepfire", "repo": "em", - "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { @@ -2542,11 +2542,11 @@ "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -3410,14 +3410,14 @@ "type": "github" } }, - "ghc980": { + "ghc98X": { "flake": false, "locked": { - "lastModified": 1692910316, - "narHash": "sha256-Qv8I3GzzIIN32RTEKI38BW5nO1f7j6Xm+dDeDUyYZWo=", + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", "ref": "ghc-9.8", - "rev": "249aa8193e4c5c1ee46ce29b39d2fffa57de7904", - "revCount": 61566, + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -3432,14 +3432,14 @@ "ghc99": { "flake": false, "locked": { - "lastModified": 1693974777, - "narHash": "sha256-r+uFw44X9XVPdDtxylfBuFL+l+5q5cX+vDVT7SCTHB8=", - "ref": "hkm/bump-Cabal", - "rev": "b2bddd0b8214ac1db6239cc25f7c0aabeb2ebb70", - "revCount": 61879, + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, "submodules": true, "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/ghc" + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { "submodules": true, @@ -3485,11 +3485,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1694737374, - "narHash": "sha256-JCnrqgKHhv5Jc7mu1TBAvQG483oHhKICdkb+2ywxwPE=", + "lastModified": 1700612632, + "narHash": "sha256-UzG6TDIano8KutKie9wI5yvvN3CfUfWOSBgDtuDa0L0=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "e3b58bcdc9d0b67a9e9d475a939ec66556167642", + "rev": "2674c27b8de693e83776083ed5fdf95e54be6463", "type": "github" }, "original": { @@ -3694,7 +3694,7 @@ "cardano-shell": "cardano-shell_6", "flake-compat": "flake-compat_12", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc980": "ghc980", + "ghc98X": "ghc98X", "ghc99": "ghc99", "hackage": [ "hackage-nix" @@ -3702,6 +3702,8 @@ "hls-1.10": "hls-1.10_2", "hls-2.0": "hls-2.0", "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", "hpc-coveralls": "hpc-coveralls_6", "hydra": "hydra_8", "iserv-proxy": "iserv-proxy_2", @@ -3719,11 +3721,11 @@ "stackage": "stackage_6" }, "locked": { - "lastModified": 1694773367, - "narHash": "sha256-bDIQ9FRE+jc5CN65QfLTk0JgjKJgl5fAEISV0X5XkKU=", + "lastModified": 1700638396, + "narHash": "sha256-vQy1p94QFz8Lo+x2zZLb2gmNGtm2CUWk9j/IkuETs1s=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "ef09c9687d2f66bd8f5e226acaaf3f85af9b24cc", + "rev": "fc060cf2934f7f206a4340ef86f5764b2f95737d", "type": "github" }, "original": { @@ -3964,6 +3966,40 @@ "type": "github" } }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -4613,11 +4649,11 @@ "sodium": "sodium_2" }, "locked": { - "lastModified": 1693968598, - "narHash": "sha256-2wFadXHMgNYrF7N6jndfp3Ywm2G0r+QTPifrlzugkjo=", + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "7d738e59d276336d1e02447e27b0373164d3bc88", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", "type": "github" }, "original": { @@ -5344,11 +5380,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1688922987, - "narHash": "sha256-RnQwrCD5anqWfyDAVbfFIeU+Ha6cwt5QcIwIkaGRzQw=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "ab381a7d714ebf96a83882264245dbd34f0a7ec8", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5878,11 +5914,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694778746, - "narHash": "sha256-6T+tR0Ik/7hzYkVKJ32PqghuGwVZzLbicUZFcyC8Eus=", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19969392ddb1182c46bd2dd3f183472a4f8cc904", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { @@ -6310,11 +6346,11 @@ }, "nixpkgs-2305": { "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { @@ -6666,11 +6702,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { @@ -7197,11 +7233,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1677612629, - "narHash": "sha256-yC+9LfhfwOd5sXFW8TLnDmqVMNYiHXYPGy9BbdpRqfU=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "111ca8e0378e88d9decaa1c6dd7597f35d8bc67f", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { @@ -8144,11 +8180,11 @@ "ops-lib": { "flake": false, "locked": { - "lastModified": 1695172761, - "narHash": "sha256-n10icfGCYA/PTzZhZrC12i8ZQCEOplD15iTHsbbkX9E=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "4a8752ac856e0b0052ea49c8cfc38f9f425c79bf", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { @@ -8829,11 +8865,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1694736555, - "narHash": "sha256-fur/l4VfU9z4sexgFdwjHdM1eO8cVjwNhGG77O6dbM8=", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "d75be51a420f2bc976e7af0b2a52271842fc0e10", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { From 98de298ea00e7f9c6ff2fb77130cabbe53fd3673 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Wed, 22 Nov 2023 11:41:10 +0100 Subject: [PATCH 420/478] Add Hercules CI `flake-update` effect --- flake.lock | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++- flake.nix | 18 ++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index a190b7bca..d051da0c8 100644 --- a/flake.lock +++ b/flake.lock @@ -2752,6 +2752,26 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, "flake-utils": { "locked": { "lastModified": 1667395993, @@ -3899,6 +3919,25 @@ "type": "github" } }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_70" + }, + "locked": { + "lastModified": 1699381651, + "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0bd99f5ab7ec7a74c11238bd02bb29e709c14328", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, "hls-1.10": { "flake": false, "locked": { @@ -5559,7 +5598,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_70", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -7758,6 +7797,22 @@ } }, "nixpkgs_70": { + "locked": { + "lastModified": 1697723726, + "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_71": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8438,6 +8493,7 @@ "flake-compat": "flake-compat_11", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", + "hercules-ci-effects": "hercules-ci-effects", "iohk-nix": "iohk-nix_2", "kupo": "kupo", "kupo-nixos": "kupo-nixos", diff --git a/flake.nix b/flake.nix index 85c24f2f5..d938a37dc 100644 --- a/flake.nix +++ b/flake.nix @@ -81,6 +81,8 @@ cardano-node.follows = "cardano-node"; }; }; + + hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects"; }; outputs = @@ -511,6 +513,20 @@ }; }; - herculesCI.ciSystems = [ "x86_64-linux" ]; + herculesCI = inputs.hercules-ci-effects.lib.mkHerculesCI { inherit inputs; } { + hercules-ci.flake-update = { + enable = true; + updateBranch = "updated-flake-lock"; + createPullRequest = true; + autoMergeMethod = null; + when = { + minute = 00; + hour = 12; + dayOfWeek = "Sun"; + }; + }; + + herculesCI.ciSystems = [ "x86_64-linux" ]; + }; }; } From 4eebbd49c1478e043aa077caf57b47189da60255 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 21 Nov 2023 21:03:26 +0100 Subject: [PATCH 421/478] Update `easy-purscript-nix` nix flake input --- flake.lock | 7 +++---- flake.nix | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index d051da0c8..9c976bfd2 100644 --- a/flake.lock +++ b/flake.lock @@ -2269,17 +2269,16 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1679861376, - "narHash": "sha256-LLqaLPJNiap2U8I77K5XVPGJA/Be30Z8lyGOyYXmBlc=", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", "type": "github" } }, diff --git a/flake.nix b/flake.nix index d938a37dc..821ca51db 100644 --- a/flake.nix +++ b/flake.nix @@ -63,7 +63,7 @@ flake = false; }; easy-purescript-nix = { - url = "github:justinwoo/easy-purescript-nix/0c10ff170461aed0c336f5c21ed0f430c2c3574b"; + url = "github:justinwoo/easy-purescript-nix"; flake = false; }; From a0469ebf4339ee6d678c2e1271c3e7ed158353ac Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 24 Nov 2023 14:21:19 +0400 Subject: [PATCH 422/478] Fix merge --- src/Internal/Deserialization/Transaction.js | 4 ++++ src/Internal/QueryM.purs | 1 - src/Internal/QueryM/Ogmios.purs | 1 - test/Ogmios/EvaluateTx.purs | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index ddeb9881f..57faa3572 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -135,6 +135,10 @@ export function _unpackMint(containerhelper) { return containerhelper.unpackKeyIndexed; } +export function _unpackMintAssets(containerhelper) { + return containerhelper.unpackKeyIndexed; +} + export function _convertCert(certConvHelper) { return cert => { switch (cert.kind()) { diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 0b0e314d7..79137872d 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -78,7 +78,6 @@ import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.JsWebSocket ( JsWebSocket diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index e467c0001..b9a0b0a70 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -213,7 +213,6 @@ import Foreign.Object (Object) import Foreign.Object as Object import JS.BigInt (BigInt) import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index c05fceb21..3047dc4d9 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -17,13 +17,13 @@ import Ctl.Internal.QueryM.Ogmios ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Cert, Reward)) -import Data.BigInt as BigInt import Data.Either (Either(Left, Right)) import Data.Map as Map import Data.Maybe (fromJust) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) +import JS.BigInt as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures From bf06ab93be2b9fa4ebfeaa2a17e5e3906128887a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 27 Nov 2023 17:23:11 +0400 Subject: [PATCH 423/478] Fix redeemerHash --- Makefile | 2 +- src/Internal/Hashing.purs | 3 ++- src/Internal/Types/Redeemer.purs | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c0d17da31..e835f6612 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ check-whitespace: check-format: check-explicit-exports check-examples-imports check-whitespace @purs-tidy check ${ps-sources} @nixpkgs-fmt --check ${nix-sources} - @prettier --loglevel warn -c ${js-sources} + @prettier --log-level warn -c ${js-sources} @eslint --quiet ${js-sources} format: diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index c1542e3ea..2d75443a1 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -4,14 +4,15 @@ module Ctl.Internal.Hashing , blake2b256Hash , blake2b256HashHex , datumHash + , hashPlutusData , md5HashHex , plutusScriptHash + , scriptRefHash , sha256Hash , sha256HashHex , sha3_256Hash , sha3_256HashHex , transactionHash - , scriptRefHash ) where import Prelude diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 55b75c275..786f8836c 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -8,6 +8,7 @@ module Ctl.Internal.Types.Redeemer import Prelude import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.Hashing (hashPlutusData) import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.ToData (class ToData, toData) @@ -49,4 +50,5 @@ instance Show RedeemerHash where -- | This is a duplicate of `datumHash`. redeemerHash :: Redeemer -> RedeemerHash redeemerHash = - wrap <<< unwrap <<< toBytes <<< convertPlutusData <<< unwrap + wrap <<< unwrap <<< toBytes <<< hashPlutusData <<< convertPlutusData <<< + unwrap From 8a5d5cd8f6cf1d6ed8ba8bf8c2c6a601963aa7a2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 27 Nov 2023 17:25:35 +0400 Subject: [PATCH 424/478] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce971e14f..2ee00e2cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,6 +138,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - A problem with collateral selection not respecting `mustNotSpendUtxosWithOutRefs` ([#1509](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1509)) - A problem with too many change UTxOs being generated ([#1530](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1530)) - A problem where tx evaluation with additional utxos failed with an Ogmios `AdditionalUtxoOverlap` exception if some additional utxos got confirmed in the meantime ([#1537](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1537)) +- `Contract.PlutusData.redeemerHash` definition ([#1565](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1565)) ### Removed From f127c53815cec9465b183afa0410e57b956a4f6c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 30 Nov 2023 23:36:00 +0400 Subject: [PATCH 425/478] Add error messages for ClientError and ServiceError --- src/Internal/Plutip/Server.purs | 3 ++- src/Internal/Service/Error.purs | 26 ++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index c74aacf64..d5f0bc091 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -58,6 +58,7 @@ import Ctl.Internal.Plutip.Utils (tmpdir) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) ) +import Ctl.Internal.Service.Error (pprintClientError) import Ctl.Internal.Test.ContractTest ( ContractTest(ContractTest) , ContractTestPlan(ContractTestPlan) @@ -466,7 +467,7 @@ startPlutipCluster cfg keysToGenerate = do (Left <<< ClientHttpError) \{ body } -> lmap (ClientDecodeJsonError body) $ (decodeAeson <=< parseJsonStringToAeson) body - either (liftEffect <<< throw <<< show) pure res >>= + either (liftEffect <<< throw <<< pprintClientError) pure res >>= case _ of ClusterStartupFailure reason -> do liftEffect $ throw $ diff --git a/src/Internal/Service/Error.purs b/src/Internal/Service/Error.purs index bf6a6be7a..ccfe6b41e 100644 --- a/src/Internal/Service/Error.purs +++ b/src/Internal/Service/Error.purs @@ -11,6 +11,8 @@ module Ctl.Internal.Service.Error ( ServiceBlockfrostError , ServiceOtherError ) + , pprintClientError + , pprintServiceError ) where import Prelude @@ -19,8 +21,9 @@ import Aeson (class DecodeAeson, JsonDecodeError, getField) import Affjax (Error, printError) as Affjax import Affjax.StatusCode (StatusCode) as Affjax import Ctl.Internal.Service.Helpers (aesonObject) +import Data.Argonaut.Decode.Error (printJsonDecodeError) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) -------------------------------------------------------------------------------- @@ -58,7 +61,7 @@ instance Show ClientError where <> ")" show (ClientHttpResponseError statusCode err) = "(ClientHttpResponseError " - <> show statusCode + <> show (unwrap statusCode) <> " " <> show err <> ")" @@ -75,6 +78,19 @@ instance Show ClientError where <> err <> ")" +pprintClientError :: ClientError -> String +pprintClientError = case _ of + ClientHttpError error -> "HTTP error: " <> Affjax.printError error + ClientHttpResponseError code serviceError -> + "Server responded with HTTP error code " <> show (unwrap code) <> " - " <> + pprintServiceError serviceError + ClientDecodeJsonError error jsonError -> "Failed to decode the response: " + <> error + <> " - " + <> printJsonDecodeError jsonError + ClientEncodingError error -> "Failed to encode the request: " <> error + ClientOtherError error -> "Error: " <> error + -------------------------------------------------------------------------------- -- ServiceError -------------------------------------------------------------------------------- @@ -108,3 +124,9 @@ instance DecodeAeson BlockfrostError where error <- getField obj "error" message <- getField obj "message" pure $ BlockfrostError { statusCode, error, message } + +pprintServiceError :: ServiceError -> String +pprintServiceError = case _ of + ServiceBlockfrostError (BlockfrostError { statusCode, error, message }) -> + "Blockfrost error (" <> show statusCode <> "): " <> error <> ": " <> message + ServiceOtherError error -> "Service error: " <> error From 8c4722fe6a2f311d7055aebc8e687ebfe02403c2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 30 Nov 2023 23:38:37 +0400 Subject: [PATCH 426/478] WIP: prepare for v6 --- CHANGELOG.md | 47 +- src/Internal/Plutip/Server.purs | 2 +- templates/ctl-scaffold/flake.lock | 13253 +++++++------------- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 5 +- templates/ctl-scaffold/spago-packages.nix | 6 +- templates/ctl-scaffold/spago.dhall | 1 - 7 files changed, 4284 insertions(+), 9032 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ee00e2cb..27e10d9c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,42 +12,47 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Changed](#changed) - [Fixed](#fixed) - [Removed](#removed) -- [[v5.0.0]](#v500) +- [[v6.0.0]](#v600) - [Added](#added-1) - [Changed](#changed-1) - - [Removed](#removed-1) - [Fixed](#fixed-1) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-2) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed-1) +- [[v5.0.0]](#v500) - [Added](#added-2) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-3) - [Changed](#changed-2) - [Removed](#removed-2) + - [Fixed](#fixed-2) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-3) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-3) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-4) - [Changed](#changed-3) - [Removed](#removed-3) - [Fixed](#fixed-4) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-5) - [Changed](#changed-4) - [Removed](#removed-4) - [Fixed](#fixed-5) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-6) - - [Removed](#removed-5) - [Changed](#changed-5) + - [Removed](#removed-5) - [Fixed](#fixed-6) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-7) + - [Removed](#removed-6) + - [Changed](#changed-6) - [Fixed](#fixed-7) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-8) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-9) - [[1.0.0] - 2022-06-10](#100---2022-06-10) @@ -56,6 +61,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +### Changed + +### Fixed + +### Removed + +## [v6.0.0] + +### Added + - `mkUnbalancedTxE`, `balanceTxE` and `balanceTxWithConstraintsE` as non-throwing versions of `mkUnbalancedTx`, `balanceTx` and `balanceTxWithConstraints` ([#1545](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1545) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index d5f0bc091..e28f555ef 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -57,8 +57,8 @@ import Ctl.Internal.Plutip.Types import Ctl.Internal.Plutip.Utils (tmpdir) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) + , pprintClientError ) -import Ctl.Internal.Service.Error (pprintClientError) import Ctl.Internal.Test.ContractTest ( ContractTest(ContractTest) , ContractTestPlan(ContractTestPlan) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f56ef71a9..ccdd01152 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1678160279, - "narHash": "sha256-IKbD0uqteVoo4KRcYh/QrLQ/HQJXwgCQS2Mq7grhSdM=", + "lastModified": 1694768913, + "narHash": "sha256-c+C/6gcZCD8TcX+08WhLudOEO0QQu6GXdy1GO6ZA190=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e20bffc8ac331810efa671a1bb49932595fa21f6", + "rev": "0f233c529212e0bacff8b7ba6eb9f39aa799ef0f", "type": "github" }, "original": { @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1669917887, - "narHash": "sha256-9bsEaFh2lb26dZNUL+P4/LIzkTZH5NC7n9SprKzB/2A=", + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "85510200dd0dc758d72bc1ada11ff5855e5d46b7", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", "type": "github" }, "original": { @@ -37,11 +37,11 @@ "CHaP_3": { "flake": false, "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", + "lastModified": 1695160702, + "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", + "rev": "9932690af3713ef034c928850252eb1b88450ee6", "type": "github" }, "original": { @@ -54,28 +54,11 @@ "CHaP_4": { "flake": false, "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - } - }, - "CHaP_5": { - "flake": false, - "locked": { - "lastModified": 1672829743, - "narHash": "sha256-lM3s0UQDxfipHbEFhmW2d5QcmKIPVsLT2ai6RnHAP84=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "551630b2c90ed9107079ab402534ed3b56db6f04", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", "type": "github" }, "original": { @@ -101,134 +84,6 @@ "type": "github" } }, - "HTTP_10": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_11": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_12": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_13": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_14": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_15": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_16": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_17": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -325,41 +180,9 @@ "type": "github" } }, - "HTTP_8": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_9": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1641576265, @@ -377,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1641404293, @@ -396,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_5" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -415,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_13", - "nixpkgs": "nixpkgs_34" + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -434,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -530,7 +353,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_33" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -600,7 +423,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_28" + "nixpkgs": "nixpkgs_35" }, "locked": { "lastModified": 1646360966, @@ -716,24 +539,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank", + "blank": "blank_2", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_4", - "hydra": "hydra_2", - "n2c": "n2c", - "nix": "nix_4", - "nixpkgs": "nixpkgs_22", + "hydra": "hydra_3", + "n2c": "n2c_2", + "nix": "nix_5", + "nixpkgs": "nixpkgs_29", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std", + "std": "std_2", "terranix": "terranix_2", - "utils": "utils_10" + "utils": "utils_12" }, "locked": { "lastModified": 1661790449, @@ -819,20 +642,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_2", + "blank": "blank_3", "deploy": "deploy", "fenix": "fenix_2", - "hydra": "hydra", - "nix": "nix", - "nixpkgs": "nixpkgs_8", - "nixpkgs-unstable": "nixpkgs-unstable", + "hydra": "hydra_2", + "nix": "nix_2", + "nixpkgs": "nixpkgs_15", + "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib", + "ops-lib": "ops-lib_2", "ragenix": "ragenix", "terranix": "terranix", - "utils": "utils_5", + "utils": "utils_7", "vulnix": "vulnix" }, "locked": { @@ -853,20 +676,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy_3", "fenix": "fenix_6", - "hydra": "hydra_3", - "nix": "nix_8", - "nixpkgs": "nixpkgs_37", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "hydra": "hydra_4", + "nix": "nix_9", + "nixpkgs": "nixpkgs_44", + "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_4", "ragenix": "ragenix_4", "terranix": "terranix_3", - "utils": "utils_19", + "utils": "utils_21", "vulnix": "vulnix_2" }, "locked": { @@ -958,52 +781,56 @@ "type": "github" } }, - "blank_6": { + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "blockfrost", + "ref": "v1.7.0", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "blank_7": { + "blst": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "blockfrost": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "blst_2": { + "flake": false, "locked": { - "lastModified": 1684305087, - "narHash": "sha256-8MvK2AxG3bGWkxWutsCWRk9MYxf/FdQu/DkAvemjqHM=", - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -1040,14 +867,14 @@ "type": "github" } }, - "cabal-32_10": { + "cabal-32_2": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1057,7 +884,7 @@ "type": "github" } }, - "cabal-32_11": { + "cabal-32_3": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1074,7 +901,7 @@ "type": "github" } }, - "cabal-32_12": { + "cabal-32_4": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1091,14 +918,14 @@ "type": "github" } }, - "cabal-32_13": { + "cabal-32_5": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1108,14 +935,14 @@ "type": "github" } }, - "cabal-32_14": { + "cabal-32_6": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1125,14 +952,14 @@ "type": "github" } }, - "cabal-32_15": { + "cabal-32_7": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1142,7064 +969,2754 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_17": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_2": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_3": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_4": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_5": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_6": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_7": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_8": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_9": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_10": { + "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_11": { + "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_12": { + "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_13": { - "flake": false, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_23", + "ragenix": "ragenix_2" + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_14": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_15": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": [ + "ctl", + "cardano-node", + "tullia" + ] + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_16": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "cabal-34_17": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "cabal-34_2": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cabal-34_3": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "cabal-34_4": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_5": { - "flake": false, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake", + "flake-compat": "flake-compat", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "cabal-34_6": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "cabal-34_7": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-34_8": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-34_9": { + "cardano-shell_3": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_10": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_11": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_12": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_13": { - "flake": false, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_2", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_14": { - "flake": false, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_9", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_3", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_63", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_3", + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "cabal-36_15": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_8", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_8", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_39", + "poetry2nix": "poetry2nix", + "utils": "utils_16" }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_2": { - "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "cabal-36_3": { - "flake": false, + "ctl": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_11", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ctl", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1701092404, + "narHash": "sha256-QSOEnY3gybUa/BUUlHXCyCGX1IlWmrwN0E8ckPr+fpE=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "457532a04ae7c42cffbe85f0131033e5a87ca50f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "457532a04ae7c42cffbe85f0131033e5a87ca50f", "type": "github" } }, - "cabal-36_4": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "cabal-36_7": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_2" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-36_8": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-36_9": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_4" + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "capsules": { + "db-sync": { "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_16", - "ragenix": "ragenix_2" + "cardano-world": "cardano-world", + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_10", + "haskellNix": "haskellNix_3", + "iohkNix": "iohkNix_3", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_23" }, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "devshell-capsules", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "capsules_2": { + "deploy": { "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_45", - "ragenix": "ragenix_5" + "fenix": "fenix", + "flake-compat": "flake-compat_4", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_3" }, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "devshell-capsules", + "repo": "deploy-rs", "type": "github" } }, - "cardano-addresses": { - "flake": false, - "locked": { - "lastModified": 1664466771, - "narHash": "sha256-m8oidcV9LWU0S+NBw4wH1JdKZVict1EbKBZ6kfdEEf4=", - "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", - "type": "github" - } - }, - "cardano-configurations": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_9" + }, "locked": { - "lastModified": 1671845278, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "36a75a920de312519c3a9086061daccb997f9cd0", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "deploy-rs", "type": "github" } }, - "cardano-configurations_2": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_6", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_17" + }, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "deploy-rs", "type": "github" } }, - "cardano-configurations_3": { - "flake": false, + "devshell": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-explorer-app": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-graphql": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_65" - }, + "devshell_12": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_67" - }, + "devshell_13": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_68" - }, + "devshell_14": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_4": { + "devshell_15": { "inputs": { - "nixpkgs": "nixpkgs_73" + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_5": { + "devshell_16": { "inputs": { - "nixpkgs": "nixpkgs_75" + "flake-utils": "flake-utils_31", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_6": { - "inputs": { - "nixpkgs": "nixpkgs_76" - }, + "devshell_2": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node": { - "flake": false, + "devshell_3": { "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", - "type": "github" - }, + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_5", - "haskellNix": "haskellNix_5", - "iohkNix": "iohkNix_5", - "membench": "membench_2", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_22" - }, + "devshell_4": { "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_9", - "haskellNix": "haskellNix_9", - "iohkNix": "iohkNix_9", - "membench": "membench_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_27" - }, + "devshell_5": { "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_2": { - "inputs": { - "CHaP": "CHaP_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "cardano-node-workbench": [ - "ctl", - "ogmios", - "blank" - ], - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_9", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nixTools": "nixTools", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_25" - }, + "devshell_6": { "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_3": { + "devshell_7": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_7", - "flake-compat": "flake-compat_14", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_7", - "hostNixpkgs": [ + "flake-utils": [ "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" ], - "iohkNix": "iohkNix_7", - "nixTools": "nixTools_2", "nixpkgs": [ "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_30" - }, - "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", - "type": "github" - } - }, - "cardano-node_4": { - "flake": false, - "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", - "type": "github" + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", - "type": "github" - } - }, - "cardano-shell": { - "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_10": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "devshell_8": { + "inputs": { + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_11": { - "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_12": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_13": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "dmerge": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "tullia", + "std", + "yants" + ] }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_14": { - "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_15": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_16": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_17": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_2": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_3": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_4": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_5": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_6": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_7": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_8": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_9": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-wallet": { + "dmerge_2": { "inputs": { - "customConfig": "customConfig", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_20", - "haskellNix": "haskellNix", - "hostNixpkgs": [ + "nixlib": [ "ctl", "db-sync", "cardano-world", - "cardano-wallet", + "bitte", + "std", "nixpkgs" ], - "iohkNix": "iohkNix", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", - "type": "github" - } - }, - "cardano-wallet_2": { - "flake": false, - "locked": { - "lastModified": 1671029634, - "narHash": "sha256-lz3bi711qORionkcfduC+AXGP6Ii+uWiVHRmRZmvfb8=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", - "type": "github" - } - }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "ctl", - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_6", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_2", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_56", - "nixpkgs-haskell": [ + "yants": [ "ctl", "db-sync", "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_2", - "tullia": "tullia" - }, - "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-world", - "type": "github" - } - }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_7", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_7", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_32", - "poetry2nix": "poetry2nix", - "utils": "utils_14" - }, - "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cicero", - "type": "github" - } - }, - "ctl": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ctl", - "ogmios-nixos", - "cardano-node" - ], - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_8", - "haskell-nix": "haskell-nix_3", - "iohk-nix": [ - "ctl", - "plutip", - "iohk-nix" - ], - "iohk-nix-environments": "iohk-nix-environments", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ], - "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip", - "plutip-nixpkgs": [ - "ctl", - "plutip", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1687338750, - "narHash": "sha256-TF1m9/Sepv4VGJe1Wp4FglXTCsyGUblrJZYebZFBfDQ=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", - "type": "github" - }, - "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "167bc59308d00be43c01706e03f8c0e7993b6d69", - "type": "github" - } - }, - "customConfig": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_10": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_2": { - "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" - }, - "original": { - "path": "./custom-config", - "type": "path" - } - }, - "customConfig_3": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_4": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_6": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_7": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_8": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_9": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants" - }, - "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, - "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_3" - }, - "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_2", - "flake-compat": "flake-compat_7", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_21" - }, - "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", - "type": "github" - } - }, - "deploy": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "deploy_2": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_7" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "deploy_3": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_15" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "devshell": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_10": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_12": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_13": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_14": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_15": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_16": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_17": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_2": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_3": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_4": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_5": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_7": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_29" - }, - "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_8": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_9": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_3": { - "inputs": { - "nixlib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "driver": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_6", - "nix": "nix_6", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_11" - }, - "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "type": "github" - } - }, - "easy-purescript-nix": { - "flake": false, - "locked": { - "lastModified": 1666686938, - "narHash": "sha256-/UOLRdnEhIOcxcm5ouOipOiSgHRzJde0ccAx4xB1dnU=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", - "type": "github" - }, - "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "da7acb2662961fd355f0a01a25bd32bf33577fa8", - "type": "github" - } - }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_47", - "pre-commit-hooks": "pre-commit-hooks" - }, - "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "ema", - "type": "github" - } - }, - "ema_2": { - "flake": false, - "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", - "type": "github" - } - }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_50", - "tailwind-haskell": "tailwind-haskell" - }, - "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "emanote", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs_6", - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_2" - }, - "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_19", - "rust-analyzer-src": "rust-analyzer-src_3" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, - "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_35", - "rust-analyzer-src": "rust-analyzer-src_5" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, - "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_11": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_12": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_13": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_14": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_15": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_16": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_17": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_18": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_19": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_6": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_7": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_8": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_9": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs": "nixpkgs_49" - }, - "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_10": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_11": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_12": { - "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_13": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_14": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_15": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_16": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_17": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_18": { - "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_19": { - "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", - "type": "github" - }, - "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_20": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_21": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_22": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_23": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_24": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_25": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_26": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_27": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_28": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_29": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_30": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_31": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_32": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_33": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_34": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_35": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_36": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_37": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_38": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_39": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_40": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_41": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_42": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_43": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_44": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_45": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_46": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flakeCompat": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "follower": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_7", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_12" - }, - "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_10": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_11": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_12": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_13": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_14": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_15": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_16": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_17": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_2": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_3": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_4": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_5": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_6": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_7": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_8": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_9": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_70", - "utils": "utils_26" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_78", - "utils": "utils_31" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_12": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_13": { - "flake": false, - "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_14": { - "flake": false, - "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_3": { - "flake": false, - "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_4": { - "flake": false, - "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_5": { - "flake": false, - "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_7": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_8": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_9": { - "flake": false, - "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-unstable": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_22", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" - }, - "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "ctl", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1674575951, - "narHash": "sha256-m1uLB0tMV3nO3O//09gNGmlxlnfwMgAQnM+MliVhofU=", - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "rev": "1eaffea8eee8bc446fbc869288dab9a08f742c06", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "nix-tools": "nix-tools_6", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", - "type": "github" - } - }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_10", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" - }, - "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_14", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_12", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16", - "tullia": "tullia_3" - }, - "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_7": { - "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_17", - "flake-utils": "flake-utils_46", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "hackage": "hackage_15", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_13", - "nix-tools": "nix-tools_14", - "nixpkgs": [ - "ctl", - "plutip", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_17" - }, - "locked": { - "lastModified": 1653486569, - "narHash": "sha256-342b0LPX6kaBuEX8KZV40FwCCFre1lCtjdTQIDEt9kw=", - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "rev": "220f8a9cd166e726aea62843bdafa7ecded3375c", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_21", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_4", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_10": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cardano-shell": "cardano-shell_15", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "hackage": "hackage_13", - "hpc-coveralls": "hpc-coveralls_15", - "nix-tools": "nix-tools_13", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" - }, - "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_30", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ctl", - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_7", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_8", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_9", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_7": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_38", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_11", - "nix-tools": "nix-tools_10", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_8": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_39", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "hackage": "hackage_11", - "hpc-coveralls": "hpc-coveralls_13", - "nix-tools": "nix-tools_11", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_9": { - "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_40", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "hackage": "hackage_12", - "hpc-coveralls": "hpc-coveralls_14", - "nix-tools": "nix-tools_12", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_14" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_12": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_13": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_14": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_15": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_17": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_3": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_4": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_5": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_6": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_7": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_8": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_9": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" + "bitte", + "std", + "yants" + ] }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hw-aeson": { - "flake": false, "locked": { - "lastModified": 1660218478, - "narHash": "sha256-t4QLmGf5ytzjS0ynn6xON61J+fvBF8vf/+zsBzmw/rM=", - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "hydra": { + "dmerge_3": { "inputs": { - "nix": [ + "nixlib": [ "ctl", "db-sync", "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" + "std", + "nixpkgs" ], - "nixpkgs": [ + "yants": [ "ctl", "db-sync", "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" + "std", + "yants" ] }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "hydra_10": { + "driver": { "inputs": { - "nix": "nix_17", + "devshell": "devshell_9", + "inclusive": "inclusive_6", + "nix": "nix_7", "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "hydra", - "nix", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "nixpkgs" - ] + ], + "utils": "utils_13" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" } }, - "hydra_11": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "easy-purescript-nix": { + "flake": false, + "locked": { + "lastModified": 1689933391, + "narHash": "sha256-jUuy2OzmxegEn0KT3u1uf87eGGA33+of9HodIqS3PLY=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "5dcea83eecb56241ed72e3631d47e87bb11e45b9", + "type": "github" }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "em": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "owner": "deepfire", + "repo": "em", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "deepfire", + "repo": "em", + "type": "github" } }, - "hydra_12": { + "ema": { "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", + "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "srid", + "repo": "ema", + "type": "github" } }, - "hydra_13": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "ctl", - "plutip", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "ema_2": { + "flake": false, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "srid", + "ref": "multisite", + "repo": "ema", + "type": "github" } }, - "hydra_2": { + "emanote": { "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_57", + "tailwind-haskell": "tailwind-haskell" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "empty-flake": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "hydra_4": { + "fenix": { "inputs": { - "nix": "nix_11", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_13", + "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "hydra_5": { + "fenix_2": { "inputs": { - "nix": "nix_12", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "hydra_6": { + "fenix_3": { "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_26", + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "hydra_7": { + "fenix_4": { "inputs": { - "nix": "nix_14", "nixpkgs": [ "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "hydra_8": { + "fenix_5": { "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "hydra_9": { + "fenix_6": { "inputs": { - "nix": "nix_16", "nixpkgs": [ "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, + "flake-compat": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" + "flake-compat_13": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_15": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, + "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "repo": "flake-compat", "type": "github" } }, - "iogo": { - "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_15", - "utils": "utils_6" - }, + "flake-compat_9": { + "flake": false, "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "iogo_2": { + "flake-parts": { "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_44", - "utils": "utils_20" + "nixpkgs": "nixpkgs_56" }, "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, + "flake-utils": { "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix-environments": { - "inputs": { - "nixpkgs": "nixpkgs_63" - }, + "flake-utils_10": { "locked": { - "lastModified": 1677230996, - "narHash": "sha256-L/PDahK725s1k+sg6MOtVG6sBiKEmgHhRjaequBRbXI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "82e833b60c47bf0f352443879af1766712e9ca6f", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "flake-utils_11": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ] + "flake-utils_12": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ] - }, + "flake-utils_14": { "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_5": { - "flake": false, + "flake-utils_15": { "locked": { - "lastModified": 1672846257, - "narHash": "sha256-khuzjVfyNCVcsV5cHRyyb2OgWLbYLKSJlrVDNmc2Tv4=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "ca3d466ed36011bcc14290c6d36c503eb03eb71b", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "flake-utils_16": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_10": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-utils_17": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, + "flake-utils_18": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ] - }, + "flake-utils_19": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_2": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_20": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-utils_21": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ] - }, + "flake-utils_22": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_23": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_9": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_24": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "flake-utils_25": { "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" }, "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "kupo": { - "flake": false, + "flake-utils_26": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_2", - "kupo": [ - "ctl", - "kupo" - ], - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "flake-utils_27": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src": { - "flake": false, + "flake-utils_28": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "flake-utils_29": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "flake-utils_3": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "flake-utils_30": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "flake-utils_31": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "flake-utils_32": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "flake-utils_33": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "flake-utils_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_17": { - "flake": false, + "flake-utils_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_18": { - "flake": false, + "flake-utils_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_19": { - "flake": false, + "flake-utils_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "flake-utils_8": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_20": { - "flake": false, + "flake-utils_9": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_3": { + "flakeCompat": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "follower": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_7", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "lowdown-src_5": { + "ghc-8.6.5-iohk": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_6": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_7": { + "ghc-8.6.5-iohk_3": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_8": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_9": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "mdbook-kroki-preprocessor": { + "ghc-8.6.5-iohk_6": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "mdbook-kroki-preprocessor_3": { + "ghc980": { "flake": false, "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" + "lastModified": 1692910316, + "narHash": "sha256-Qv8I3GzzIIN32RTEKI38BW5nO1f7j6Xm+dDeDUyYZWo=", + "ref": "ghc-9.8", + "rev": "249aa8193e4c5c1ee46ce29b39d2fffa57de7904", + "revCount": 61566, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "mdbook-kroki-preprocessor_4": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" + "lastModified": 1693974777, + "narHash": "sha256-r+uFw44X9XVPdDtxylfBuFL+l+5q5cX+vDVT7SCTHB8=", + "ref": "hkm/bump-Cabal", + "rev": "b2bddd0b8214ac1db6239cc25f7c0aabeb2ebb70", + "revCount": 61879, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/ghc" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "membench": { + "gomod2nix": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" + "nixpkgs": "nixpkgs_5", + "utils": "utils" }, "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, + "hackage": { + "flake": false, "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, + "hackage-nix": { + "flake": false, "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "lastModified": 1694737374, + "narHash": "sha256-JCnrqgKHhv5Jc7mu1TBAvQG483oHhKICdkb+2ywxwPE=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "repo": "hackage.nix", + "rev": "e3b58bcdc9d0b67a9e9d475a939ec66556167642", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "membench_4": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" - }, + "hackageNix": { + "flake": false, "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_20" - }, + "hackage_2": { + "flake": false, "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" - }, + "hackage_3": { + "flake": false, "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_37", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "hackage_4": { + "flake": false, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "hackage_5": { + "flake": false, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression" - }, + "haskell-flake": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "nix-cache-proxy": { + "haskell-nix": { "inputs": { - "devshell": "devshell_10", - "inclusive": [ + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls_2", + "nix-tools": "nix-tools", + "nixpkgs": [ "ctl", "db-sync", "cardano-world", "bitte-cells", "cicero", - "inclusive" + "haskell-nix", + "nixpkgs-unstable" ], - "nixpkgs": [ + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": [ "ctl", "db-sync", "cardano-world", @@ -8207,2639 +3724,2986 @@ "cicero", "nixpkgs" ], - "utils": "utils_13" - }, - "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "type": "github" - } - }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "repo": "haskell.nix", "type": "github" } }, - "nix-nomad": { + "haskell-nix_2": { "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": [ + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" + "db-sync", + "cardano-world", + "hackage" ], - "gomod2nix": "gomod2nix", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_3", "nixpkgs": [ "ctl", - "ogmios", + "db-sync", + "cardano-world", "haskell-nix", - "tullia", - "nixpkgs" + "nixpkgs-unstable" ], - "nixpkgs-lib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix-nomad_2": { + "haskell-nix_3": { "inputs": { - "flake-compat": "flake-compat_17", - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_12", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "ghc980": "ghc980", + "ghc99": "ghc99", + "hackage": [ + "ctl", + "hackage-nix" ], - "gomod2nix": "gomod2nix_2", + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "iserv-proxy": "iserv-proxy_2", "nixpkgs": [ "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", "nixpkgs" ], - "nixpkgs-lib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1694773367, + "narHash": "sha256-bDIQ9FRE+jc5CN65QfLTk0JgjKJgl5fAEISV0X5XkKU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ef09c9687d2f66bd8f5e226acaaf3f85af9b24cc", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools": { - "flake": false, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" } }, - "nix-tools_10": { - "flake": false, + "haskellNix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": [ + "ctl", + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools_11": { - "flake": false, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools_12": { - "flake": false, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools_13": { + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_14": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_2": { + "hls-2.0": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_3": { + "hls-2.2": { "flake": false, "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_4": { + "hpc-coveralls": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_5": { + "hpc-coveralls_2": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_6": { + "hpc-coveralls_3": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_7": { + "hpc-coveralls_4": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_8": { + "hpc-coveralls_5": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_9": { + "hpc-coveralls_6": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_58" - }, + "hpc-coveralls_7": { + "flake": false, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix2container_2": { + "hydra": { "inputs": { - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_71" + "nix": "nix", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix2container_3": { + "hydra_2": { "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_79" + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nixTools": { - "flake": false, + "hydra_3": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nixTools_2": { - "flake": false, + "hydra_4": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nix_10": { + "hydra_5": { "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_40", - "nixpkgs-regression": "nixpkgs-regression_8" + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_11": { + "hydra_6": { "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_52", - "nixpkgs-regression": "nixpkgs-regression_9" + "nix": "nix_13", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_12": { + "hydra_7": { "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_54", - "nixpkgs-regression": "nixpkgs-regression_10" + "nix": "nix_14", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_13": { + "hydra_8": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" + "nix": "nix_15", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_14": { + "hydra_9": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_62", - "nixpkgs-regression": "nixpkgs-regression_12" + "nix": "nix_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_15": { + "incl": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_64", - "nixpkgs-regression": "nixpkgs-regression_13" + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "nix_16": { + "inclusive": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_14" + "stdlib": "stdlib" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_17": { + "inclusive_10": { "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_15" + "stdlib": "stdlib_10" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_18": { + "inclusive_11": { "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_74", - "nixpkgs-regression": "nixpkgs-regression_16" + "stdlib": "stdlib_11" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_19": { + "inclusive_2": { "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_77", - "nixpkgs-regression": "nixpkgs-regression_17" + "stdlib": "stdlib_2" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_2": { + "inclusive_3": { "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9" + "stdlib": "stdlib_3" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_20": { + "inclusive_4": { "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_81", - "nixpkgs-regression": "nixpkgs-regression_18" + "stdlib": "stdlib_4" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_3": { + "inclusive_5": { "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_11", - "nixpkgs-regression": "nixpkgs-regression_2" + "stdlib": "stdlib_5" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_4": { + "inclusive_6": { "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_21", - "nixpkgs-regression": "nixpkgs-regression_3" + "stdlib": "stdlib_6" }, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_5": { + "inclusive_7": { "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_23", - "nixpkgs-regression": "nixpkgs-regression_4" + "stdlib": "stdlib_7" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_6": { + "inclusive_8": { "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" + "stdlib": "stdlib_8" }, "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_7": { + "inclusive_9": { "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_31", - "nixpkgs-regression": "nixpkgs-regression_6" + "stdlib": "stdlib_9" }, "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_8": { + "iogo": { "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_36", - "nixpkgs-regression": "nixpkgs-regression_7" + "devshell": "devshell_4", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_22", + "utils": "utils_8" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "nix_9": { + "iogo_2": { "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_38" + "devshell": "devshell_14", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_51", + "utils": "utils_22" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "nixago": { + "iohk-nix": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "bitte", - "std", "nixpkgs" ] }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago-exts": { + "iohk-nix_2": { + "inputs": { + "blst": "blst_2", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1693968598, + "narHash": "sha256-2wFadXHMgNYrF7N6jndfp3Ywm2G0r+QTPifrlzugkjo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7d738e59d276336d1e02447e27b0373164d3bc88", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago-exts_2": { + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" } }, - "nixago_2": { + "iohkNix": { "inputs": { - "flake-utils": [ + "blst": "blst", + "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" + "cardano-node", + "nixpkgs" ], - "nixago-exts": "nixago-exts_2", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "std", + "cardano-wallet", "nixpkgs" ] }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago_3": { + "iohkNix_3": { "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", + "db-sync", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", "type": "github" } }, - "nixago_4": { + "kupo-nixos": { "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "kupo": [ "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" + "kupo" ], "nixpkgs": [ "ctl", - "ogmios-nixos", + "kupo-nixos", "haskell-nix", - "tullia", - "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixlib": { - "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" } }, - "nixlib_2": { + "lowdown-src": { + "flake": false, "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixlib_3": { + "lowdown-src_10": { + "flake": false, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs": { + "lowdown-src_11": { + "flake": false, "locked": { - "lastModified": 1676253841, - "narHash": "sha256-jhuI8Mmky8VCD45OoJEuF6HdPLFBwNrHA0ljjZ/zkfw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a45a8916243a7d27acc358f4fc18c4491f3eeca8", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003": { + "lowdown-src_12": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_10": { + "lowdown-src_13": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_11": { + "lowdown-src_14": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_12": { + "lowdown-src_15": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_13": { + "lowdown-src_16": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_14": { + "lowdown-src_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_15": { + "lowdown-src_3": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_16": { + "lowdown-src_4": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_2": { + "lowdown-src_6": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_3": { + "lowdown-src_7": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_4": { + "lowdown-src_8": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_5": { + "lowdown-src_9": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_6": { + "mdbook-kroki-preprocessor": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "nixpkgs-2003_7": { + "mdbook-kroki-preprocessor_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "nixpkgs-2003_8": { + "n2c": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2003_9": { + "n2c_2": { + "inputs": { + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105": { + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" + }, "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_10": { + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_3", + "nixpkgs-regression": "nixpkgs-regression" + }, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_11": { + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_11", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_15" + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", "type": "github" } }, - "nixpkgs-2105_12": { + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_12" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nixpkgs-2105_13": { + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "nixpkgs-2105_14": { + "nix-tools": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_15": { + "nix-tools_2": { + "flake": false, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_16": { + "nix-tools_3": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_17": { + "nix-tools_4": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_2": { + "nix-tools_5": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_3": { + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "lastModified": 1688922987, + "narHash": "sha256-RnQwrCD5anqWfyDAVbfFIeU+Ha6cwt5QcIwIkaGRzQw=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ab381a7d714ebf96a83882264245dbd34f0a7ec8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_4": { + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_5": { + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_6": { + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_45" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_7": { + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_8": { + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_9": { + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111": { + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_10": { + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_69", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_11": { + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_70", + "nixpkgs-regression": "nixpkgs-regression_14" + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_12": { + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_2" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_13": { + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_16" + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_14": { + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_18", + "nixpkgs-regression": "nixpkgs-regression_3" + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_15": { + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_28", + "nixpkgs-regression": "nixpkgs-regression_4" + }, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_16": { + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_17": { + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_37", + "nixpkgs-regression": "nixpkgs-regression_6" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "nixpkgs-2111_2": { + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_38", + "nixpkgs-regression": "nixpkgs-regression_7" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "nixpkgs-2111_3": { + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_8" + }, "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_4": { + "nixago": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_5": { + "nixago-exts": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs-2111_6": { + "nixago-exts_2": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs-2111_7": { + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_8": { + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_9": { + "nixlib": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205": { + "nixlib_2": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205_2": { + "nixlib_3": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "lastModified": 1694778746, + "narHash": "sha256-6T+tR0Ik/7hzYkVKJ32PqghuGwVZzLbicUZFcyC8Eus=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "rev": "19969392ddb1182c46bd2dd3f183472a4f8cc904", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_4": { + "nixpkgs-2003": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs-2003_2": { "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs-2003_3": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-regression": { + "nixpkgs-2003_4": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_10": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_11": { + "nixpkgs-2003_5": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_12": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_13": { + "nixpkgs-2003_6": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_14": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_15": { + "nixpkgs-2003_7": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_17": { + "nixpkgs-2105": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_2": { + "nixpkgs-2105_2": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_3": { + "nixpkgs-2105_3": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_4": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_5": { + "nixpkgs-2105_5": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_6": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_7": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_8": { + "nixpkgs-2111": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_9": { + "nixpkgs-2111_2": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-2111_3": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_10": { + "nixpkgs-2111_4": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_11": { + "nixpkgs-2111_5": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-2111_6": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-2111_7": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_14": { + "nixpkgs-2205": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_15": { + "nixpkgs-2205_2": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_16": { + "nixpkgs-2205_3": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_17": { + "nixpkgs-2211": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_18": { + "nixpkgs-2211_2": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_19": { + "nixpkgs-2305": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs-docker": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs-regression": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs-regression_10": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_5": { + "nixpkgs-regression_13": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs-regression_14": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_7": { + "nixpkgs-regression_2": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_8": { + "nixpkgs-regression_3": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_9": { + "nixpkgs-regression_4": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_10": { + "nixpkgs-regression_5": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_11": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_13": { + "nixpkgs-regression_8": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_14": { + "nixpkgs-regression_9": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { @@ -10849,13 +6713,13 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -10865,161 +6729,165 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_18": { + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_19": { + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_20": { + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_21": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_22": { + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_10": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_11": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_25": { + "nixpkgs_12": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_13": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11035,71 +6903,69 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_14": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_28": { + "nixpkgs_15": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_16": { "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_17": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_30": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11114,58 +6980,75 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_19": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_32": { + "nixpkgs_20": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_21": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_22": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { @@ -11175,7 +7058,23 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_23": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_24": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11191,83 +7090,100 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_25": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_26": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_38": { + "nixpkgs_27": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-20.09-small", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_29": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_40": { + "nixpkgs_30": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11282,7 +7198,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_31": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -11298,7 +7214,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_32": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -11314,7 +7230,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_33": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11330,29 +7246,29 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_34": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_35": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -11362,91 +7278,90 @@ "type": "github" } }, - "nixpkgs_46": { + "nixpkgs_36": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_37": { "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_38": { "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_49": { + "nixpkgs_39": { "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1677612629, + "narHash": "sha256-yC+9LfhfwOd5sXFW8TLnDmqVMNYiHXYPGy9BbdpRqfU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "111ca8e0378e88d9decaa1c6dd7597f35d8bc67f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_50": { + "nixpkgs_40": { "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { @@ -11454,21 +7369,39 @@ "type": "indirect" } }, - "nixpkgs_51": { + "nixpkgs_41": { "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_42": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11483,74 +7416,75 @@ "type": "indirect" } }, - "nixpkgs_53": { + "nixpkgs_44": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_45": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", + "ref": "nixos-20.09-small", "type": "indirect" } }, - "nixpkgs_55": { + "nixpkgs_46": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_47": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_57": { + "nixpkgs_48": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { @@ -11560,38 +7494,39 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_49": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_5": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11607,131 +7542,107 @@ "type": "github" } }, - "nixpkgs_60": { + "nixpkgs_51": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_61": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_52": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_63": { - "locked": { - "lastModified": 1677021523, - "narHash": "sha256-0EhZjJ3rq8ZTTJ6Trrf/9hYtnIry0OsyY2NKoQoOS5Q=", - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "5a5adc2ad7009851d7d0fc26311e42a93b171d2e", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_64": { + "nixpkgs_53": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_54": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_55": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_56": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_57": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { @@ -11739,22 +7650,21 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_58": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_7": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11769,23 +7679,7 @@ "type": "indirect" } }, - "nixpkgs_70": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_71": { + "nixpkgs_6": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11800,37 +7694,22 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_60": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_73": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11845,72 +7724,60 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_62": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_76": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_77": { + "nixpkgs_63": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_78": { + "nixpkgs_64": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_65": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { @@ -11919,29 +7786,29 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_66": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixos-22.05", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs_67": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { @@ -11951,7 +7818,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11966,122 +7833,88 @@ "type": "indirect" } }, - "nixpkgs_9": { + "nixpkgs_69": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "node-process": { - "flake": false, + "nixpkgs_7": { "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "node-process_2": { - "flake": false, + "nixpkgs_70": { "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "node-snapshot": { - "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", - "membench": "membench", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example", - "utils": "utils_24" - }, + "nixpkgs_8": { "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", - "membench": "membench_3", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example_2", - "utils": "utils_29" - }, + "nixpkgs_9": { "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nomad": { "inputs": { - "nix": "nix_2", - "nixpkgs": "nixpkgs_10", - "utils": "utils_2" + "nix": "nix_3", + "nixpkgs": "nixpkgs_17", + "utils": "utils_4" }, "locked": { "lastModified": 1648128770, @@ -12100,11 +7933,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell", + "devshell": "devshell_2", "inclusive": "inclusive", - "nix": "nix_3", - "nixpkgs": "nixpkgs_12", - "utils": "utils_3" + "nix": "nix_4", + "nixpkgs": "nixpkgs_19", + "utils": "utils_5" }, "locked": { "lastModified": 1648029666, @@ -12122,11 +7955,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_4", - "nix": "nix_5", - "nixpkgs": "nixpkgs_24", - "utils": "utils_8" + "nix": "nix_6", + "nixpkgs": "nixpkgs_31", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -12144,11 +7977,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": "inclusive_9", - "nix": "nix_10", - "nixpkgs": "nixpkgs_41", - "utils": "utils_17" + "nix": "nix_11", + "nixpkgs": "nixpkgs_48", + "utils": "utils_19" }, "locked": { "lastModified": 1648029666, @@ -12166,10 +7999,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_13", - "utils": "utils_4" + "nixpkgs": "nixpkgs_20", + "utils": "utils_6" }, "locked": { "lastModified": 1649836589, @@ -12187,10 +8020,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_25", - "utils": "utils_9" + "nixpkgs": "nixpkgs_32", + "utils": "utils_11" }, "locked": { "lastModified": 1658244176, @@ -12208,10 +8041,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_42", - "utils": "utils_18" + "nixpkgs": "nixpkgs_49", + "utils": "utils_20" }, "locked": { "lastModified": 1649836589, @@ -12229,9 +8062,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_9", - "nixpkgs": "nixpkgs_39", - "utils": "utils_16" + "nix": "nix_10", + "nixpkgs": "nixpkgs_46", + "utils": "utils_18" }, "locked": { "lastModified": 1648128770, @@ -12248,6 +8081,21 @@ "type": "github" } }, + "nosys": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, "ogmios": { "flake": false, "locked": { @@ -12267,236 +8115,64 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_4", - "blank": "blank_6", - "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_3", - "flake-compat": "flake-compat_15", - "haskell-nix": "haskell-nix_6", - "iohk-nix": "iohk-nix_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", - "type": "github" - } - }, - "ogmios_2": { - "inputs": { - "CHaP": "CHaP_2", - "blank": "blank_4", + "CHaP": "CHaP_3", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_3", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_13", + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" + ], + "ogmios-src": [ + "ctl", + "ogmios" ] }, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", + "lastModified": 1695289922, + "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" }, "original": { "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_10": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_11": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_12": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_13": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_14": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_15": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_16": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_17": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" } }, - "old-ghc-nix_2": { + "ogmios_2": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1691769233, + "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", "type": "github" }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "original": { + "owner": "CardanoSolutions", + "ref": "v6.0.0", + "repo": "ogmios", "type": "github" } }, - "old-ghc-nix_3": { + "old-ghc-nix": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12513,7 +8189,7 @@ "type": "github" } }, - "old-ghc-nix_4": { + "old-ghc-nix_2": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12530,7 +8206,7 @@ "type": "github" } }, - "old-ghc-nix_5": { + "old-ghc-nix_3": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12547,7 +8223,7 @@ "type": "github" } }, - "old-ghc-nix_6": { + "old-ghc-nix_4": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12564,7 +8240,7 @@ "type": "github" } }, - "old-ghc-nix_7": { + "old-ghc-nix_5": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12581,7 +8257,7 @@ "type": "github" } }, - "old-ghc-nix_8": { + "old-ghc-nix_6": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12598,7 +8274,7 @@ "type": "github" } }, - "old-ghc-nix_9": { + "old-ghc-nix_7": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12618,11 +8294,11 @@ "ops-lib": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "lastModified": 1695172761, + "narHash": "sha256-n10icfGCYA/PTzZhZrC12i8ZQCEOplD15iTHsbbkX9E=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "rev": "4a8752ac856e0b0052ea49c8cfc38f9f425c79bf", "type": "github" }, "original": { @@ -12663,199 +8339,65 @@ "type": "github" } }, - "ouroboros-network": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_2": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_3": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_4": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "ouroboros-network", + "repo": "ops-lib", "type": "github" } }, "plutip": { "inputs": { - "CHaP": "CHaP_5", - "cardano-addresses": "cardano-addresses", - "cardano-node": "cardano-node_4", - "cardano-wallet": "cardano-wallet_2", - "flake-compat": "flake-compat_18", - "haskell-nix": "haskell-nix_7", - "hw-aeson": "hw-aeson", - "iohk-nix": "iohk-nix_5", + "CHaP": "CHaP_4", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_14", + "hackage-nix": [ + "ctl", + "hackage-nix" + ], + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], "nixpkgs": [ "ctl", - "plutip", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" ] }, "locked": { - "lastModified": 1682621645, - "narHash": "sha256-JXvTEmGzLDPfzLJxw+jvtOTR9fyIWlqm5a7IjRLBtGQ=", + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", - "type": "github" - } - }, - "plutus-apps": { - "flake": false, - "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, - "plutus-apps_2": { - "flake": false, - "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, - "plutus-example": { - "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_23" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - } - }, - "plutus-example_2": { - "inputs": { - "customConfig": "customConfig_10", - "haskellNix": "haskellNix_10", - "iohkNix": "iohkNix_10", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_28" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" } }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_12", + "flake-utils": "flake-utils_17", "nixpkgs": [ "ctl", "db-sync", @@ -12882,8 +8424,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_48" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1639823344, @@ -12902,8 +8444,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_14", + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", "rust-overlay": "rust-overlay" }, "locked": { @@ -12923,8 +8465,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_17", + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -12944,8 +8486,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_26", + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -12965,8 +8507,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_14", - "nixpkgs": "nixpkgs_43", + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -12986,8 +8528,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_16", - "nixpkgs": "nixpkgs_46", + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -13007,7 +8549,7 @@ "root": { "inputs": { "ctl": "ctl", - "flake-compat": "flake-compat_19", + "flake-compat": "flake-compat_15", "nixpkgs": [ "ctl", "nixpkgs" @@ -13289,126 +8831,82 @@ "type": "github" } }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_10": { - "flake": false, - "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_11": { - "flake": false, - "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_12": { + "secp256k1": { "flake": false, "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_13": { + "secp256k1_2": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_14": { + "sodium": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_15": { + "sodium_2": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_16": { + "stackage": { "flake": false, "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -13417,14 +8915,14 @@ "type": "github" } }, - "stackage_17": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -13433,7 +8931,7 @@ "type": "github" } }, - "stackage_2": { + "stackage_3": { "flake": false, "locked": { "lastModified": 1655255731, @@ -13449,7 +8947,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_4": { "flake": false, "locked": { "lastModified": 1659402917, @@ -13465,7 +8963,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_5": { "flake": false, "locked": { "lastModified": 1650936094, @@ -13481,14 +8979,14 @@ "type": "github" } }, - "stackage_5": { + "stackage_6": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1694736555, + "narHash": "sha256-fur/l4VfU9z4sexgFdwjHdM1eO8cVjwNhGG77O6dbM8=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "d75be51a420f2bc976e7af0b2a52271842fc0e10", "type": "github" }, "original": { @@ -13497,7 +8995,7 @@ "type": "github" } }, - "stackage_6": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1654219171, @@ -13513,70 +9011,46 @@ "type": "github" } }, - "stackage_7": { - "flake": false, - "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_8": { - "flake": false, - "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_9": { - "flake": false, - "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, "std": { "inputs": { - "devshell": "devshell_6", + "arion": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_5", + "incl": "incl", + "makes": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_27", - "yants": "yants_2" + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", + "yants": "yants" }, "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", "owner": "divnix", "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { @@ -13587,20 +9061,20 @@ }, "std_2": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_7", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_24", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "flake-utils": "flake-utils_13", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_57", - "yants": "yants_4" + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" }, "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", "owner": "divnix", "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { @@ -13612,15 +9086,19 @@ "std_3": { "inputs": { "devshell": "devshell_15", - "nixpkgs": "nixpkgs_60", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", "yants": "yants_5" }, "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", "owner": "divnix", "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { @@ -13631,80 +9109,16 @@ }, "std_4": { "inputs": { - "blank": "blank_5", "devshell": "devshell_16", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_36", - "makes": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_67", "yants": "yants_6" }, "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_5": { - "inputs": { - "blank": "blank_7", - "devshell": "devshell_17", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_44", - "makes": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", - "microvm": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_80", - "yants": "yants_7" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", "owner": "divnix", "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { @@ -13895,8 +9309,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_51" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -13917,7 +9331,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_9", "nixpkgs": [ "ctl", "db-sync", @@ -13992,7 +9406,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_14", "nixpkgs": [ "ctl", "db-sync", @@ -14020,215 +9434,79 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_20", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "capsules", - "bitte", - "blank" - ], - "terranix-examples": "terranix-examples_3" - }, - "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", - "owner": "terranix", - "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", - "type": "github" - }, - "original": { - "owner": "terranix", - "repo": "terranix", - "type": "github" - } - }, - "tullia": { - "inputs": { - "nix2container": "nix2container", - "nixpkgs": "nixpkgs_59", - "std": "std_3" - }, - "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std_4" - }, - "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_3", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_5" - }, - "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "utils": { - "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_10": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_11": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_12": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_13": { + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_3" + }, "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "kreisys", - "repo": "flake-utils", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "utils_14": { + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", + "std": "std" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_15": { + "tullia_2": { + "inputs": { + "nix2container": "nix2container_3", + "nixpkgs": "nixpkgs_66", + "std": "std_4" + }, "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_16": { + "utils": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -14237,7 +9515,7 @@ "type": "github" } }, - "utils_17": { + "utils_10": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14252,7 +9530,7 @@ "type": "github" } }, - "utils_18": { + "utils_11": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14267,7 +9545,7 @@ "type": "github" } }, - "utils_19": { + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14282,22 +9560,22 @@ "type": "github" } }, - "utils_2": { + "utils_13": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_14": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14312,28 +9590,28 @@ "type": "github" } }, - "utils_21": { + "utils_15": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_22": { + "utils_16": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -14342,13 +9620,13 @@ "type": "github" } }, - "utils_23": { + "utils_17": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -14357,13 +9635,13 @@ "type": "github" } }, - "utils_24": { + "utils_18": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -14372,28 +9650,28 @@ "type": "github" } }, - "utils_25": { + "utils_19": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_26": { + "utils_2": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -14402,22 +9680,22 @@ "type": "github" } }, - "utils_27": { + "utils_20": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_28": { + "utils_21": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14432,22 +9710,7 @@ "type": "github" } }, - "utils_29": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_3": { + "utils_22": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14462,13 +9725,13 @@ "type": "github" } }, - "utils_30": { + "utils_23": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14477,13 +9740,13 @@ "type": "github" } }, - "utils_31": { + "utils_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -14494,30 +9757,30 @@ }, "utils_4": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_5": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } @@ -14539,11 +9802,11 @@ }, "utils_7": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14569,15 +9832,15 @@ }, "utils_9": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } @@ -14617,40 +9880,21 @@ } }, "yants": { - "inputs": { - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", - "owner": "divnix", - "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_2": { "inputs": { "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte", + "cardano-node", + "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", "type": "github" }, "original": { @@ -14659,9 +9903,9 @@ "type": "github" } }, - "yants_3": { + "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -14677,12 +9921,13 @@ "type": "github" } }, - "yants_4": { + "yants_3": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -14701,16 +9946,9 @@ "type": "github" } }, - "yants_5": { + "yants_4": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -14726,23 +9964,22 @@ "type": "github" } }, - "yants_6": { + "yants_5": { "inputs": { "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", + "db-sync", + "cardano-world", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { @@ -14751,23 +9988,23 @@ "type": "github" } }, - "yants_7": { + "yants_6": { "inputs": { "nixpkgs": [ "ctl", - "ogmios-nixos", - "haskell-nix", + "db-sync", + "cardano-world", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c29c1de8f..aed17eb96 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; + rev = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 977015b3e..c6324b5c0 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -284,6 +284,7 @@ let additions = , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" + , "random" , "rationals" , "record" , "refs" @@ -303,11 +304,11 @@ let additions = , "unfoldable" , "untagged-union" , "variant" - , "web-storage" , "web-html" + , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "167bc59308d00be43c01706e03f8c0e7993b6d69" + , version = "457532a04ae7c42cffbe85f0131033e5a87ca50f" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 035340277..764fcce08 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "167bc59308d00be43c01706e03f8c0e7993b6d69"; + version = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "167bc59308d00be43c01706e03f8c0e7993b6d69"; - sha256 = "0d3w868ns7ln4mmvjlc6rh5d6mc20ng5mdcp30azx9lyykvncpac"; + rev = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; + sha256 = "14byzvx9072gs06vr6jni7a9f8f8q9sr850mzhdbbjg0infq88s1"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 38fe179f5..d56a902bc 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -15,7 +15,6 @@ You can edit this file as you like. , "posix-types" , "prelude" , "spec" - , "uint" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "exe/**/*.purs", "test/**/*.purs" ] From 545770efce253ac700a9ecc39ec055ab3198c2d6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 4 Dec 2023 17:33:30 +0400 Subject: [PATCH 427/478] Fixup the webpack config --- templates/ctl-scaffold/webpack.config.js | 5 ++++- webpack.config.js | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/templates/ctl-scaffold/webpack.config.js b/templates/ctl-scaffold/webpack.config.js index ae6edde65..13532959c 100644 --- a/templates/ctl-scaffold/webpack.config.js +++ b/templates/ctl-scaffold/webpack.config.js @@ -86,7 +86,9 @@ module.exports = { new webpack.DefinePlugin({ BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, }), - new NodePolyfillPlugin(), + new NodePolyfillPlugin({ + excludeAliases: ["console"], + }), new webpack.LoaderOptionsPlugin({ debug: true, }), @@ -97,6 +99,7 @@ module.exports = { }), new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], + process: "process/browser.js", }), // ContextReplacementPlugin is used just to suppress a webpack warning: // "Critical dependency: the request of a dependency is an expression" diff --git a/webpack.config.js b/webpack.config.js index 9c19e798c..8bcb2d30a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -89,7 +89,9 @@ module.exports = { new webpack.DefinePlugin({ BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME }), - new NodePolyfillPlugin(), + new NodePolyfillPlugin({ + excludeAliases: ["console"] + }), new webpack.LoaderOptionsPlugin({ debug: true }), @@ -99,7 +101,8 @@ module.exports = { inject: false // See stackoverflow.com/a/38292765/3067181 }), new webpack.ProvidePlugin({ - Buffer: ["buffer", "Buffer"] + Buffer: ["buffer", "Buffer"], + process: "process/browser.js" }), // ContextReplacementPlugin is used just to suppress a webpack warning: // "Critical dependency: the request of a dependency is an expression" From fffaed0f2ce25cab803511b6c4ed03d860bfd7f8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 25 Nov 2023 18:18:55 +0400 Subject: [PATCH 428/478] Fix formatting, improve unit test speed --- templates/ctl-scaffold/esbuild/bundle.js | 2 +- templates/ctl-scaffold/esbuild/config.js | 2 +- templates/ctl-scaffold/esbuild/serve.js | 2 +- templates/ctl-scaffold/webpack.config.cjs | 2 +- test/Partition.purs | 9 ++++----- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/templates/ctl-scaffold/esbuild/bundle.js b/templates/ctl-scaffold/esbuild/bundle.js index 7ff2cc3a3..91fc9c774 100644 --- a/templates/ctl-scaffold/esbuild/bundle.js +++ b/templates/ctl-scaffold/esbuild/bundle.js @@ -9,5 +9,5 @@ esbuild.build( buildOptions({ entryPoint: process.argv[2], outfile: process.argv[3], - }) + }), ); diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index c1785847a..996ca4335 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -33,7 +33,7 @@ export const buildOptions = ({ entryPoint, outfile }) => { fs: true, os: true, }, - }) + }), ); } diff --git a/templates/ctl-scaffold/esbuild/serve.js b/templates/ctl-scaffold/esbuild/serve.js index ecfc84a91..a6843b499 100644 --- a/templates/ctl-scaffold/esbuild/serve.js +++ b/templates/ctl-scaffold/esbuild/serve.js @@ -11,7 +11,7 @@ const ctx = await esbuild.context( buildOptions({ entryPoint: process.argv[2], outfile: process.argv[3], - }) + }), ); const config = { diff --git a/templates/ctl-scaffold/webpack.config.cjs b/templates/ctl-scaffold/webpack.config.cjs index f492dc070..d5fcdf1c6 100644 --- a/templates/ctl-scaffold/webpack.config.cjs +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -106,7 +106,7 @@ module.exports = env => { config.plugins.push( new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"], - }) + }), ); // Provide NodeJS polyfills config.plugins.push(new NodePolyfillPlugin()); diff --git a/test/Partition.purs b/test/Partition.purs index dfa9e868f..b636be400 100644 --- a/test/Partition.purs +++ b/test/Partition.purs @@ -24,7 +24,7 @@ import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (suchThat) -import Test.Spec.QuickCheck (quickCheck) +import Test.Spec.QuickCheck (quickCheck, quickCheck') suite :: TestPlanM (Aff Unit) Unit suite = @@ -53,13 +53,13 @@ suite = (quickCheck prop_equipartitionBigInt_length) test "prop_equipartitionBigInt_sum" - (quickCheck prop_equipartitionBigInt_sum) + (quickCheck' 10 prop_equipartitionBigInt_sum) test "prop_equipartitionBigInt_order" - (quickCheck prop_equipartitionBigInt_order) + (quickCheck' 10 prop_equipartitionBigInt_order) test "prop_equipartitionBigInt_fair" - (quickCheck prop_equipartitionBigInt_fair) + (quickCheck' 10 prop_equipartitionBigInt_fair) prop_partitionBigInt_pos_weights :: BigInt' -> BigIntNeg -> NonEmptyArray BigIntGeqOne -> Boolean @@ -183,4 +183,3 @@ derive instance Newtype IntGeqOne _ instance Arbitrary IntGeqOne where arbitrary = IntGeqOne <$> suchThat arbitrary (_ >= one) - From 8f246fb1b133f3d0764c391795fcc126e3ae9632 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 4 Dec 2023 19:20:26 +0400 Subject: [PATCH 429/478] Fix links in markdown --- CHANGELOG.md | 6 +++--- doc/babbage-features.md | 4 ++-- doc/cip-25-nfts.md | 2 +- doc/key-management.md | 2 +- doc/query-layers.md | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ee00e2cb..8efec3658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -175,7 +175,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `startPlutipCluster` error message now includes cluster startup failure details. ([#1407](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1407)) - `PlutipTest` is now known as `Contract.Test.ContractTest`. It has been semantically untied from Plutip, because we now have another test runner for tests that rely on particular funds distributions - [Blockfrost](./doc/blockfrost.md). See `Contract.Test.Blockfrost.runContractTestsWithBlockfrost` ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) - `Contract.Staking.getPoolParameters` has been moved to `Contract.Backend.Ogmios.getPoolParameters`. This function only runs with Ogmios backend, because Blockfrost [does not provide](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) all the required values ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) -- Use of [CIP-40](https://cips.cardano.org/cips/cip40/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). +- Use of [CIP-40](https://cips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). - `reindexSpentScriptRedeemers` is no longer in Contract (it's pure) ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) ### Removed @@ -232,7 +232,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed -- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cips/cip9/)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) +- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) - CIP-30 `signData` response handling ([#1289](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1289)) ### Runtime Dependencies @@ -387,7 +387,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Constraint for attaching a reference input to a transaction: `mustReferenceOutput` ([#946](https://github.com/Plutonomicon/cardano-transaction-lib/pull/946)) - `DatumPresence` data type, which tags paying constraints that accept datum, to mark whether the datum should be inline or hashed in the transaction output. ([#931](https://github.com/Plutonomicon/cardano-transaction-lib/pull/931)) - Utility conversion functions `serializeData` and `deserializeData` between `PlutusData` and `CborBytes` to `Contract.PlutusData`. ([#1001](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1001)) -- Added [CIP-30](https://cips.cardano.org/cips/cip30/) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) +- Added [CIP-30](https://cips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) ### Changed diff --git a/doc/babbage-features.md b/doc/babbage-features.md index cd123757a..75a4def9e 100644 --- a/doc/babbage-features.md +++ b/doc/babbage-features.md @@ -14,7 +14,7 @@ This document is a reference/explainer for the new CTL APIs introduced for Babba ## Reference Inputs -[Reference inputs](https://cips.cardano.org/cips/cip31/#referenceinputs) allow looking at an output without spending it in Plutus scripts. +[Reference inputs](https://cips.cardano.org/cip/CIP-0031/#reference-inputs) allow looking at an output without spending it in Plutus scripts. There are two ways to use an input as a reference in the constraints API: @@ -48,6 +48,6 @@ In CTL, alternating between datum storage options can be achieved by specifying ## Collateral Output -[CIP-40](https://cips.cardano.org/cips/cip40/) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. +[CIP-40](https://cips.cardano.org/cip/CIP-0040) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. Collateral output is automatically added to transactions in CTL. To trigger a collateral return, the `mustNotBeValid` constraint should be explicitly specified, otherwise a script error would be detected earlier and the transaction will not be sent. diff --git a/doc/cip-25-nfts.md b/doc/cip-25-nfts.md index 411151231..6c1568891 100644 --- a/doc/cip-25-nfts.md +++ b/doc/cip-25-nfts.md @@ -2,6 +2,6 @@ # CIP-25 NFT Metadata standard -CTL includes [CIP-25](https://cips.cardano.org/cips/cip25/) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. +CTL includes [CIP-25](https://cips.cardano.org/cip/CIP-0025) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. See [`Contract.Metadata`](https://plutonomicon.github.io/cardano-transaction-lib/Contract.Metadata.html#t:Cip25MetadataEntry) module. diff --git a/doc/key-management.md b/doc/key-management.md index b5e0a9000..9f02abd9e 100644 --- a/doc/key-management.md +++ b/doc/key-management.md @@ -11,7 +11,7 @@ # Key Management -The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cips/cip1852/). +The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cip/CIP-1852/). For an address to be built, the user must provide some entropy for private key derivation and a *derivation path*, that specifies a list of cryptographic operations to perform on the "parent" or "root" key to get the "child" private key that can be used for signing. diff --git a/doc/query-layers.md b/doc/query-layers.md index eb21cd990..e89047e50 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -21,7 +21,7 @@ In CTL context, the following query layers can be used, depending on backend cho - [Ogmios](https://ogmios.dev/) ([CTL backend](./runtime.md#ctl-backend)) - [Kupo](https://cardanosolutions.github.io/kupo/) ([CTL backend](./runtime.md#ctl-backend)) - [Blockfrost](https://blockfrost.io/) ([Blockfrost backend](./blockfrost.md)) -- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cips/cip30/) (any backend) +- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cip/CIP-0030) (any backend) ## Wallet/Backend Inconsistency From 2ed4d9b01c149e98ef1c2679609583472e0f0c1d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 4 Dec 2023 19:20:26 +0400 Subject: [PATCH 430/478] Fix links in markdown --- CHANGELOG.md | 6 +++--- doc/babbage-features.md | 4 ++-- doc/cip-25-nfts.md | 2 +- doc/key-management.md | 2 +- doc/query-layers.md | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ee00e2cb..8efec3658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -175,7 +175,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `startPlutipCluster` error message now includes cluster startup failure details. ([#1407](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1407)) - `PlutipTest` is now known as `Contract.Test.ContractTest`. It has been semantically untied from Plutip, because we now have another test runner for tests that rely on particular funds distributions - [Blockfrost](./doc/blockfrost.md). See `Contract.Test.Blockfrost.runContractTestsWithBlockfrost` ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) - `Contract.Staking.getPoolParameters` has been moved to `Contract.Backend.Ogmios.getPoolParameters`. This function only runs with Ogmios backend, because Blockfrost [does not provide](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) all the required values ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) -- Use of [CIP-40](https://cips.cardano.org/cips/cip40/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). +- Use of [CIP-40](https://cips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). - `reindexSpentScriptRedeemers` is no longer in Contract (it's pure) ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) ### Removed @@ -232,7 +232,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed -- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cips/cip9/)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) +- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) - CIP-30 `signData` response handling ([#1289](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1289)) ### Runtime Dependencies @@ -387,7 +387,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Constraint for attaching a reference input to a transaction: `mustReferenceOutput` ([#946](https://github.com/Plutonomicon/cardano-transaction-lib/pull/946)) - `DatumPresence` data type, which tags paying constraints that accept datum, to mark whether the datum should be inline or hashed in the transaction output. ([#931](https://github.com/Plutonomicon/cardano-transaction-lib/pull/931)) - Utility conversion functions `serializeData` and `deserializeData` between `PlutusData` and `CborBytes` to `Contract.PlutusData`. ([#1001](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1001)) -- Added [CIP-30](https://cips.cardano.org/cips/cip30/) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) +- Added [CIP-30](https://cips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) ### Changed diff --git a/doc/babbage-features.md b/doc/babbage-features.md index cd123757a..75a4def9e 100644 --- a/doc/babbage-features.md +++ b/doc/babbage-features.md @@ -14,7 +14,7 @@ This document is a reference/explainer for the new CTL APIs introduced for Babba ## Reference Inputs -[Reference inputs](https://cips.cardano.org/cips/cip31/#referenceinputs) allow looking at an output without spending it in Plutus scripts. +[Reference inputs](https://cips.cardano.org/cip/CIP-0031/#reference-inputs) allow looking at an output without spending it in Plutus scripts. There are two ways to use an input as a reference in the constraints API: @@ -48,6 +48,6 @@ In CTL, alternating between datum storage options can be achieved by specifying ## Collateral Output -[CIP-40](https://cips.cardano.org/cips/cip40/) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. +[CIP-40](https://cips.cardano.org/cip/CIP-0040) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. Collateral output is automatically added to transactions in CTL. To trigger a collateral return, the `mustNotBeValid` constraint should be explicitly specified, otherwise a script error would be detected earlier and the transaction will not be sent. diff --git a/doc/cip-25-nfts.md b/doc/cip-25-nfts.md index 411151231..6c1568891 100644 --- a/doc/cip-25-nfts.md +++ b/doc/cip-25-nfts.md @@ -2,6 +2,6 @@ # CIP-25 NFT Metadata standard -CTL includes [CIP-25](https://cips.cardano.org/cips/cip25/) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. +CTL includes [CIP-25](https://cips.cardano.org/cip/CIP-0025) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. See [`Contract.Metadata`](https://plutonomicon.github.io/cardano-transaction-lib/Contract.Metadata.html#t:Cip25MetadataEntry) module. diff --git a/doc/key-management.md b/doc/key-management.md index b5e0a9000..9f02abd9e 100644 --- a/doc/key-management.md +++ b/doc/key-management.md @@ -11,7 +11,7 @@ # Key Management -The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cips/cip1852/). +The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cip/CIP-1852/). For an address to be built, the user must provide some entropy for private key derivation and a *derivation path*, that specifies a list of cryptographic operations to perform on the "parent" or "root" key to get the "child" private key that can be used for signing. diff --git a/doc/query-layers.md b/doc/query-layers.md index eb21cd990..7c3bb738a 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -21,7 +21,7 @@ In CTL context, the following query layers can be used, depending on backend cho - [Ogmios](https://ogmios.dev/) ([CTL backend](./runtime.md#ctl-backend)) - [Kupo](https://cardanosolutions.github.io/kupo/) ([CTL backend](./runtime.md#ctl-backend)) - [Blockfrost](https://blockfrost.io/) ([Blockfrost backend](./blockfrost.md)) -- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cips/cip30/) (any backend) +- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cip/CIP-0030) (any backend) ## Wallet/Backend Inconsistency @@ -93,7 +93,7 @@ Note that it is possible to set `timeout` to `Seconds infinity`. ### Synchronization and wallet UTxO locking -`Contract.Utxos.utxosAt` function returns a set of UTxOs at a given address by calling Kupo or Blockfrost, depending on the backend. It seems reasonable to assume that if we call `utxosAt` at all wallet's addresses we will get the same set of UTxOs that [CIP-30](https://cips.cardano.org/cips/cip30/) `getUtxos` method would return (eventually). But it is not, in fact, true. +`Contract.Utxos.utxosAt` function returns a set of UTxOs at a given address by calling Kupo or Blockfrost, depending on the backend. It seems reasonable to assume that if we call `utxosAt` at all wallet's addresses we will get the same set of UTxOs that [CIP-30](https://cips.cardano.org/cip/CIP-0030/) `getUtxos` method would return (eventually). But it is not, in fact, true. *UTxO locking* is a wallet feature that allows to hide certain UTxOs from results of CIP-30 calls, making them invisible to dApps. Among the wallets we support, it is currently only present in Eternl: From 46be7345d3e4082314cf735c9f2944ac07758441 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 5 Dec 2023 12:10:52 +0100 Subject: [PATCH 431/478] Fix Arion volumes Latest Arion version has a specific `volumes` option --- nix/runtime.nix | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 9f0ca6d90..46b2d7c2b 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -247,18 +247,17 @@ rec { in { project.name = "ctl-runtime"; - docker-compose.raw = pkgs.lib.recursiveUpdate - { - volumes = { - "${nodeDbVol}" = { }; - "${nodeIpcVol}" = { }; - "${kupoDbVol}" = { }; - } // (if config.blockfrost.enable then { - "${dbSyncStateVol}" = { }; - "${dbSyncTmpVol}" = { }; - } else { }); - } - config.extraDockerCompose; + docker-compose = { + raw = config.extraDockerCompose; + volumes = { + "${nodeDbVol}" = { }; + "${nodeIpcVol}" = { }; + "${kupoDbVol}" = { }; + } // pkgs.lib.optionalAttrs config.blockfrost.enable { + "${dbSyncStateVol}" = { }; + "${dbSyncTmpVol}" = { }; + }; + }; services = pkgs.lib.recursiveUpdate defaultServices config.extraServices; }; From 43d1d895f42eb456603927fbf47edaecc36a84b3 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 5 Dec 2023 12:37:19 +0100 Subject: [PATCH 432/478] Automatically set Cachix cache when using the flake --- flake.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flake.nix b/flake.nix index d644f16fa..593f60703 100644 --- a/flake.nix +++ b/flake.nix @@ -509,4 +509,9 @@ herculesCI.ciSystems = [ "x86_64-linux" ]; }; + + nixConfig = { + extra-substituters = [ "https://plutonomicon.cachix.org" ]; + extra-trusted-public-keys = [ "plutonomicon.cachix.org-1:evUxtNULjCjOipxwAnYhNFeF/lyYU1FeNGaVAnm+QQw=" ]; + }; } From 320660e3e193404167bc83d90e71ac0989fc6bcf Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 5 Dec 2023 14:44:07 +0300 Subject: [PATCH 433/478] Fix markdown link --- doc/query-layers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/query-layers.md b/doc/query-layers.md index 7c3bb738a..2a580fd80 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -36,7 +36,7 @@ Thus, the goal of the developers is to ensure that the set of UTxOs available to CTL tries to be smart when dealing with the issue, and it aims to let the user work with both query layers as if it was one. To achieve this guarantee, CTL follows three simple rules: - **Rule 1** Whenever there is a *wallet operation* the result of which depends on the set of available UTxOs, CTL delays the execution until it reaches a state where *all wallet UTxOs are known to the backend*. These operations are assumed to be `getWalletUtxos`, `getWalletCollateral` and `getWalletBalance`. -- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cips/cip30/) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. +- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cip/CIP-0030) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. - **Rule 3** Whenever CTL is asked to await for *transaction confirmation*, the execution is delayed until the *UTxOs that the transaction creates at wallet addresses* are visible to the wallet. The rules are implemented as 3 callable functions, which we call *synchronization primitives*: From d20db658d7d2fa56632c99add5b955cd81c59417 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 5 Dec 2023 16:01:42 +0400 Subject: [PATCH 434/478] Fix markdown link --- doc/query-layers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/query-layers.md b/doc/query-layers.md index 7c3bb738a..ab4be09f4 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -36,7 +36,7 @@ Thus, the goal of the developers is to ensure that the set of UTxOs available to CTL tries to be smart when dealing with the issue, and it aims to let the user work with both query layers as if it was one. To achieve this guarantee, CTL follows three simple rules: - **Rule 1** Whenever there is a *wallet operation* the result of which depends on the set of available UTxOs, CTL delays the execution until it reaches a state where *all wallet UTxOs are known to the backend*. These operations are assumed to be `getWalletUtxos`, `getWalletCollateral` and `getWalletBalance`. -- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cips/cip30/) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. +- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cip/CIP-0030/) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. - **Rule 3** Whenever CTL is asked to await for *transaction confirmation*, the execution is delayed until the *UTxOs that the transaction creates at wallet addresses* are visible to the wallet. The rules are implemented as 3 callable functions, which we call *synchronization primitives*: From 90086e0858ba705ab3ac7561870113c73278d3ec Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 5 Dec 2023 12:10:52 +0100 Subject: [PATCH 435/478] Fix Arion volumes Latest Arion version has a specific `volumes` option --- nix/runtime.nix | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 9f0ca6d90..46b2d7c2b 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -247,18 +247,17 @@ rec { in { project.name = "ctl-runtime"; - docker-compose.raw = pkgs.lib.recursiveUpdate - { - volumes = { - "${nodeDbVol}" = { }; - "${nodeIpcVol}" = { }; - "${kupoDbVol}" = { }; - } // (if config.blockfrost.enable then { - "${dbSyncStateVol}" = { }; - "${dbSyncTmpVol}" = { }; - } else { }); - } - config.extraDockerCompose; + docker-compose = { + raw = config.extraDockerCompose; + volumes = { + "${nodeDbVol}" = { }; + "${nodeIpcVol}" = { }; + "${kupoDbVol}" = { }; + } // pkgs.lib.optionalAttrs config.blockfrost.enable { + "${dbSyncStateVol}" = { }; + "${dbSyncTmpVol}" = { }; + }; + }; services = pkgs.lib.recursiveUpdate defaultServices config.extraServices; }; From 7cff9f2ef849596dd3ffd80935da194ddbf7455f Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Thu, 7 Dec 2023 12:39:22 +0100 Subject: [PATCH 436/478] Put all `nixConfig` together --- flake.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index 593f60703..48aa83bf7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,11 @@ { description = "cardano-transaction-lib"; - nixConfig.bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; + nixConfig = { + extra-substituters = [ "https://plutonomicon.cachix.org" ]; + extra-trusted-public-keys = [ "plutonomicon.cachix.org-1:evUxtNULjCjOipxwAnYhNFeF/lyYU1FeNGaVAnm+QQw=" ]; + bash-prompt = "\\[\\e[0m\\][\\[\\e[0;2m\\]nix-develop \\[\\e[0;1m\\]CTL@\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; + }; inputs = { nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; @@ -509,9 +513,4 @@ herculesCI.ciSystems = [ "x86_64-linux" ]; }; - - nixConfig = { - extra-substituters = [ "https://plutonomicon.cachix.org" ]; - extra-trusted-public-keys = [ "plutonomicon.cachix.org-1:evUxtNULjCjOipxwAnYhNFeF/lyYU1FeNGaVAnm+QQw=" ]; - }; } From 83d9977b188cd1d8b775c2e5763bfe1b7b3140c3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 16:49:31 +0400 Subject: [PATCH 437/478] Adapt formatter for TagSet from monad-logger --- src/Internal/Helpers/Formatter.purs | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/Internal/Helpers/Formatter.purs diff --git a/src/Internal/Helpers/Formatter.purs b/src/Internal/Helpers/Formatter.purs new file mode 100644 index 000000000..27ad19ca2 --- /dev/null +++ b/src/Internal/Helpers/Formatter.purs @@ -0,0 +1,68 @@ +-- | Copy of Data.Log.Formatter, but with `showTags` exported and with +-- | MonadEffect use removed (it was only used to format JSDate, the +-- | side-effects of this operation is something we can ignore) +module Ctl.Internal.Helpers.Formatter + ( showTags + ) where + +import Prelude + +import Ansi.Codes (Color(Yellow)) +import Ansi.Output (bold, foreground, withGraphics) +import Data.Array (concat, cons, singleton) +import Data.JSDate (JSDate, toISOString) +import Data.Log.Tag + ( Tag(StringTag, NumberTag, IntTag, BooleanTag, JSDateTag, TagSetTag) + , TagSet + ) +import Data.Map (isEmpty, toUnfoldable) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe) +import Data.String (joinWith) +import Data.Tuple (Tuple(Tuple)) +import Effect.Unsafe (unsafePerformEffect) + +showTags :: TagSet -> String +showTags = tagLines >>> case _ of + Nothing -> "" + Just lines -> append "\n" (joinWith "\n" lines) + +tagLines :: TagSet -> Maybe (Array String) +tagLines tags + | isEmpty tags = Nothing + | otherwise = Just $ indentEachLine <$> concat (lineify tags) + +lineify :: TagSet -> Array (Array String) +lineify tags = showField <$> toUnfoldable tags + +showField :: Tuple String Tag -> Array String +showField (Tuple name value) = showTag value $ bold' name <> bold' ": " + +showTag :: Tag -> String -> Array String +showTag (StringTag value) = showBasic value +showTag (IntTag value) = showSpecial $ show value +showTag (NumberTag value) = showSpecial $ show value +showTag (BooleanTag value) = showSpecial $ show value +showTag (TagSetTag value) = showSubTags value +showTag (JSDateTag value) = showJsDate value + +showSubTags :: TagSet -> String -> Array String +showSubTags value label = cons label $ fromMaybe [] (tagLines value) + +showJsDate :: JSDate -> String -> Array String +showJsDate value label = + showSpecial (unsafePerformEffect (toISOString value)) label + +showBasic :: String -> String -> Array String +showBasic value label = singleton $ label <> value + +showSpecial :: String -> String -> Array String +showSpecial = color Yellow >>> showBasic + +indentEachLine :: String -> String +indentEachLine = append " " + +color :: Color -> String -> String +color = foreground >>> withGraphics + +bold' :: String -> String +bold' = withGraphics bold From aa35c7d0e82b46cc141f0bc7ec3a5eb8f33ca33c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 16:50:46 +0400 Subject: [PATCH 438/478] Fix unsafePprintTagSet --- src/Internal/Helpers.purs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 6d438d1f1..98d0357a1 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -39,6 +39,7 @@ import Prelude import Aeson (class EncodeAeson, Aeson, encodeAeson, toString) import Control.Monad.Error.Class (class MonadError, throwError) +import Ctl.Internal.Helpers.Formatter (showTags) import Data.Array (union) import Data.Bifunctor (bimap) import Data.BigInt (BigInt) @@ -49,7 +50,7 @@ import Data.Function (on) import Data.JSDate (now) import Data.List.Lazy as LL import Data.Log.Formatter.Pretty (prettyFormatter) -import Data.Log.Level (LogLevel(Info)) +import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Log.Tag (TagSet) import Data.Map (Map, toUnfoldable) @@ -68,7 +69,6 @@ import Effect (Effect) import Effect.Class (class MonadEffect) import Effect.Class.Console (log) import Effect.Exception (throw) -import Effect.Unsafe (unsafePerformEffect) import Foreign.Object as Obj import Partial.Unsafe (unsafePartial) import Prim.TypeError (class Warn, Text) @@ -78,10 +78,8 @@ bugTrackerLink = "https://github.com/Plutonomicon/cardano-transaction-lib/issues" unsafePprintTagSet :: String -> TagSet -> String -unsafePprintTagSet message tags = unsafePerformEffect do - timestamp <- now - let msg = { level: Info, message, tags, timestamp } - prettyFormatter msg +unsafePprintTagSet message tags = + message <> " " <> showTags tags -- | Throws provided error on `Nothing` fromJustEff :: forall (a :: Type). String -> Maybe a -> Effect a From 1e4ad90ead145eb10e60500745286c518387768d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 16:51:07 +0400 Subject: [PATCH 439/478] Add UtxoMap context to InsufficientCollateralUtxos --- src/Internal/BalanceTx/BalanceTx.purs | 2 +- src/Internal/BalanceTx/Error.purs | 9 +- test/Fixtures.purs | 243 +++++++++++++------------- test/Plutip/Contract.purs | 2 +- 4 files changed, 134 insertions(+), 122 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 474f52259..4a35b809d 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -288,7 +288,7 @@ setTransactionCollateral changeAddr transaction = do utxoMap mbCollateral <- liftEffect $ map Array.fromFoldable <$> selectCollateral coinsPerUtxoUnit maxCollateralInputs utxoMap' - liftEither $ note InsufficientCollateralUtxos mbCollateral + liftEither $ note (InsufficientCollateralUtxos utxoMap') mbCollateral addTxCollateralReturn collateral (addTxCollateral collateral transaction) changeAddr diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 86a83e2d6..746a07d8c 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -30,8 +30,10 @@ import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) , Transaction , TransactionOutput + , UtxoMap , _redeemers , _witnessSet + , pprintUtxoMap ) import Ctl.Internal.Cardano.Types.Value (pprintValue) import Ctl.Internal.Helpers (bugTrackerLink, unsafePprintTagSet) @@ -79,7 +81,7 @@ data BalanceTxError | CouldNotConvertScriptOutputToTxInput | CouldNotGetChangeAddress | CouldNotGetCollateral - | InsufficientCollateralUtxos + | InsufficientCollateralUtxos UtxoMap | CouldNotGetUtxos | CollateralReturnError | CollateralReturnMinAdaValueCalcError CoinsPerUtxoUnit TransactionOutput @@ -100,8 +102,9 @@ explainBalanceTxError = case _ of "Insufficient balance. " <> prettyValue "Expected" (unwrap expected) <> ", " <> prettyValue "actual" (unwrap actual) - InsufficientCollateralUtxos -> - "Could not cover collateral requirements" + InsufficientCollateralUtxos utxos -> + "Could not cover collateral requirements. " <> + unsafePprintTagSet "UTxOs for collateral selection:" (pprintUtxoMap utxos) CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 3f19d97e5..63c929bc9 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -76,6 +76,7 @@ module Test.Ctl.Fixtures , witnessSetFixture3 , witnessSetFixture3Value , witnessSetFixture4 + , utxoMapFixture ) where import Prelude @@ -131,6 +132,7 @@ import Ctl.Internal.Cardano.Types.Transaction , TransactionWitnessSet(TransactionWitnessSet) , TxBody(TxBody) , URL(URL) + , UtxoMap , Vkey(Vkey) , Vkeywitness(Vkeywitness) , mkEd25519Signature @@ -881,127 +883,134 @@ utxoFixture1 = hexToByteArrayUnsafe \583900f33ffa84fdf20a003443a5e2768e12e92db31535dca62088b153df243903103ae70681\ \439b5476fef59f439b8bc86d84bfb2d376fc3f56171a004c4b40" -utxoFixture1' :: TransactionUnspentOutput -utxoFixture1' = - TransactionUnspentOutput - { input: - ( TransactionInput - { index: UInt.fromInt 0 - , transactionId: TransactionHash +input :: TransactionInput +input = TransactionInput + { index: UInt.fromInt 0 + , transactionId: TransactionHash + ( byteArrayFromIntArrayUnsafe + [ 198 + , 181 + , 74 + , 163 + , 1 + , 136 + , 122 + , 243 + , 144 + , 189 + , 52 + , 73 + , 131 + , 62 + , 76 + , 214 + , 111 + , 246 + , 27 + , 94 + , 104 + , 177 + , 247 + , 124 + , 132 + , 168 + , 192 + , 135 + , 59 + , 119 + , 111 + , 249 + ] + ) + } + +output :: TransactionOutput +output = + ( TransactionOutput + { address: baseAddressToAddress $ baseAddress + { network: TestnetId + , paymentCred: keyHashCredential $ unsafePartial $ fromJust + $ ed25519KeyHashFromBytes + $ + byteArrayFromIntArrayUnsafe + [ 243 + , 63 + , 250 + , 132 + , 253 + , 242 + , 10 + , 0 + , 52 + , 67 + , 165 + , 226 + , 118 + , 142 + , 18 + , 233 + , 45 + , 179 + , 21 + , 53 + , 220 + , 166 + , 32 + , 136 + , 177 + , 83 + , 223 + , 36 + ] + , delegationCred: keyHashCredential $ unsafePartial $ fromJust + $ ed25519KeyHashFromBytes + $ ( byteArrayFromIntArrayUnsafe - [ 198 - , 181 - , 74 - , 163 - , 1 - , 136 - , 122 - , 243 - , 144 - , 189 - , 52 - , 73 - , 131 - , 62 - , 76 - , 214 - , 111 - , 246 - , 27 - , 94 - , 104 - , 177 - , 247 - , 124 + [ 57 + , 3 + , 16 + , 58 + , 231 + , 6 + , 129 + , 67 + , 155 + , 84 + , 118 + , 254 + , 245 + , 159 + , 67 + , 155 + , 139 + , 200 + , 109 , 132 - , 168 - , 192 - , 135 - , 59 - , 119 - , 111 - , 249 + , 191 + , 178 + , 211 + , 118 + , 252 + , 63 + , 86 + , 23 ] ) - } - ) - , output: - ( TransactionOutput - { address: baseAddressToAddress $ baseAddress - { network: TestnetId - , paymentCred: keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes - $ - byteArrayFromIntArrayUnsafe - [ 243 - , 63 - , 250 - , 132 - , 253 - , 242 - , 10 - , 0 - , 52 - , 67 - , 165 - , 226 - , 118 - , 142 - , 18 - , 233 - , 45 - , 179 - , 21 - , 53 - , 220 - , 166 - , 32 - , 136 - , 177 - , 83 - , 223 - , 36 - ] - , delegationCred: keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes - $ - ( byteArrayFromIntArrayUnsafe - [ 57 - , 3 - , 16 - , 58 - , 231 - , 6 - , 129 - , 67 - , 155 - , 84 - , 118 - , 254 - , 245 - , 159 - , 67 - , 155 - , 139 - , 200 - , 109 - , 132 - , 191 - , 178 - , 211 - , 118 - , 252 - , 63 - , 86 - , 23 - ] - ) - } - , amount: Value (Coin (BigInt.fromInt 5000000)) mempty - , datum: NoOutputDatum - , scriptRef: Nothing - } - ) + } + , amount: Value (Coin (BigInt.fromInt 5000000)) mempty + , datum: NoOutputDatum + , scriptRef: Nothing + } + ) + +utxoMapFixture :: UtxoMap +utxoMapFixture = Map.singleton input output + +utxoFixture1' :: TransactionUnspentOutput +utxoFixture1' = + TransactionUnspentOutput + { input + , output } witnessSetFixture1 :: ByteArray diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ac1e81372..23bcf1f7b 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -370,7 +370,7 @@ suite = do $ mustUseCollateralUtxos Map.empty ) res `shouldSatisfy` case _ of - Left InsufficientCollateralUtxos -> true + Left (InsufficientCollateralUtxos mp) -> Map.isEmpty mp _ -> false test "Collateral selection: UTxO with lower amount is selected" do From 4f2c958abf1f7840462d606e3c4c1ea1d9f7e6e9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 16:57:25 +0400 Subject: [PATCH 440/478] Rename unsafePprintTagSet to pprintTagSet --- src/Internal/BalanceTx/Error.purs | 6 +++--- src/Internal/Helpers.purs | 6 +++--- src/Internal/ProcessConstraints/Error.purs | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 746a07d8c..4d80194f9 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -36,7 +36,7 @@ import Ctl.Internal.Cardano.Types.Transaction , pprintUtxoMap ) import Ctl.Internal.Cardano.Types.Value (pprintValue) -import Ctl.Internal.Helpers (bugTrackerLink, unsafePprintTagSet) +import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios @@ -104,7 +104,7 @@ explainBalanceTxError = case _ of <> prettyValue "actual" (unwrap actual) InsufficientCollateralUtxos utxos -> "Could not cover collateral requirements. " <> - unsafePprintTagSet "UTxOs for collateral selection:" (pprintUtxoMap utxos) + pprintTagSet "UTxOs for collateral selection:" (pprintUtxoMap utxos) CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" CouldNotGetChangeAddress -> @@ -144,7 +144,7 @@ explainBalanceTxError = case _ of "Could not calculate min ADA for UTxO" where prettyValue :: String -> Value -> String - prettyValue str = fromPlutusValue >>> pprintValue >>> unsafePprintTagSet str + prettyValue str = fromPlutusValue >>> pprintValue >>> pprintTagSet str newtype Actual = Actual Value diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 98d0357a1..362c20895 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -32,7 +32,7 @@ module Ctl.Internal.Helpers , showWithParens , tagProp , uIntToBigInt - , unsafePprintTagSet + , pprintTagSet ) where import Prelude @@ -77,8 +77,8 @@ bugTrackerLink :: String bugTrackerLink = "https://github.com/Plutonomicon/cardano-transaction-lib/issues" -unsafePprintTagSet :: String -> TagSet -> String -unsafePprintTagSet message tags = +pprintTagSet :: String -> TagSet -> String +pprintTagSet message tags = message <> " " <> showTags tags -- | Throws provided error on `Nothing` diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index c6fea10ca..6d81741ae 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -4,7 +4,7 @@ import Prelude import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, getCurrencySymbol) -import Ctl.Internal.Helpers (bugTrackerLink, unsafePprintTagSet) +import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) import Ctl.Internal.Plutus.Types.Transaction ( TransactionOutput , pprintTransactionOutput @@ -111,7 +111,7 @@ explainMkUnbalancedTxError = case _ of "Cannot withdraw rewards from Plutus staking script " <> prettyPlutusScript (unwrap pssv) CannotWithdrawRewardsNativeScript nssv -> - unsafePprintTagSet "Cannot withdraw rewards from native staking script " + pprintTagSet "Cannot withdraw rewards from native staking script " ("NativeScript" `tagSetTag` pprintNativeScript (unwrap nssv)) DatumNotFound (DataHash hash) -> "Datum with hash " <> byteArrayToHex hash <> " not found." @@ -141,10 +141,10 @@ explainMkUnbalancedTxError = case _ of ValidatorHashNotFound vh -> "Cannot find validator hash: " <> rawBytesToHex (scriptHashToBytes $ unwrap vh) WrongRefScriptHash msh tout -> case msh of - Nothing -> unsafePprintTagSet "Output is missing a reference script hash" + Nothing -> pprintTagSet "Output is missing a reference script hash" ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) Just missingHash -> - unsafePprintTagSet + pprintTagSet ( "TransactionOutput is missing reference script hash " <> rawBytesToHex (scriptHashToBytes missingHash) ) From cbbab61ca5651df26ed19aec18301faa242b0c8f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 17:01:47 +0400 Subject: [PATCH 441/478] Add `ansi` PS dependency --- spago.dhall | 1 + templates/ctl-scaffold/packages.dhall | 1 + 2 files changed, 2 insertions(+) diff --git a/spago.dhall b/spago.dhall index b9d6a81e7..8a9826ba6 100644 --- a/spago.dhall +++ b/spago.dhall @@ -9,6 +9,7 @@ You can edit this file as you like. , "aff-promise" , "aff-retry" , "affjax" + , "ansi" , "argonaut" , "argonaut-codecs" , "arraybuffer-types" diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 977015b3e..3ac1c8bc2 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -221,6 +221,7 @@ let additions = , "aff-promise" , "aff-retry" , "affjax" + , "ansi" , "argonaut" , "argonaut-codecs" , "arraybuffer-types" From 1d42199ea631ecebafc9ea0151b5a934426680f2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 17:19:54 +0400 Subject: [PATCH 442/478] Add a warning when we filter some collateral utxos --- src/Internal/BalanceTx/BalanceTx.purs | 23 +++++++++++++++---- .../Types/TransactionUnspentOutput.purs | 9 +++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 4a35b809d..e48327d64 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,6 +4,7 @@ module Ctl.Internal.BalanceTx import Prelude +import Contract.Log (logWarn') import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (info) as Logger @@ -92,6 +93,9 @@ import Ctl.Internal.Cardano.Types.Transaction , _witnessSet , pprintUtxoMap ) +import Ctl.Internal.Cardano.Types.TransactionUnspentOutput + ( transactionUnspentOutputsToUtxoMap + ) import Ctl.Internal.Cardano.Types.Value ( AssetClass , Coin(Coin) @@ -115,7 +119,7 @@ import Ctl.Internal.Contract.Wallet , getWalletCollateral , getWalletUtxos ) as Wallet -import Ctl.Internal.Helpers (liftEither, (??)) +import Ctl.Internal.Helpers (liftEither, pprintTagSet, (??)) import Ctl.Internal.Partition (equipartition, partition) import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap) import Ctl.Internal.Serialization.Address (Address) @@ -272,10 +276,19 @@ setTransactionCollateral changeAddr transaction = do let isSpendable = not <<< flip Set.member nonSpendableSet collateral <- case mbCollateralUtxos of - -- if no collateral utxos are specified, use the wallet - Nothing -> Array.filter (isSpendable <<< _.input <<< unwrap) <$> do - liftEitherContract $ note CouldNotGetCollateral <$> - Wallet.getWalletCollateral + -- if no collateral utxos are specified, use the wallet, but filter + -- the unspendable ones + Nothing -> do + let isSpendableUtxo = isSpendable <<< _.input <<< unwrap + { yes: spendableUtxos, no: filteredUtxos } <- + Array.partition isSpendableUtxo <$> do + liftEitherContract $ note CouldNotGetCollateral <$> + Wallet.getWalletCollateral + when (not $ Array.null filteredUtxos) do + logWarn' $ pprintTagSet + "Some of the collateral UTxOs returned by the wallet were marked as non-spendable and ignored" + (pprintUtxoMap (transactionUnspentOutputsToUtxoMap filteredUtxos)) + pure spendableUtxos -- otherwise, get all the utxos, filter out unspendable, and select -- collateral using internal algo, that is also used in KeyWallet Just utxoMap -> do diff --git a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs b/src/Internal/Cardano/Types/TransactionUnspentOutput.purs index 286c779a6..b73ac506a 100644 --- a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs +++ b/src/Internal/Cardano/Types/TransactionUnspentOutput.purs @@ -1,15 +1,18 @@ module Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) + , transactionUnspentOutputsToUtxoMap ) where import Prelude import Aeson (class EncodeAeson) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput) +import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) +import Data.Map as Map import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) +import Data.Tuple (Tuple(Tuple)) newtype TransactionUnspentOutput = TransactionUnspentOutput { input :: TransactionInput @@ -23,3 +26,7 @@ derive newtype instance EncodeAeson TransactionUnspentOutput instance Show TransactionUnspentOutput where show = genericShow + +transactionUnspentOutputsToUtxoMap :: Array TransactionUnspentOutput -> UtxoMap +transactionUnspentOutputsToUtxoMap = Map.fromFoldable <<< map + \(TransactionUnspentOutput { input, output }) -> Tuple input output From 3149cb887ede2e63a2a7e9011d6ed87c579d66c4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 9 Dec 2023 17:30:30 +0400 Subject: [PATCH 443/478] Apply code review suggestions --- doc/balancing.md | 2 +- examples/BalanceTxConstraints.purs | 2 +- src/Internal/BalanceTx/BalanceTx.purs | 3 +-- src/Internal/BalanceTx/Constraints.purs | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/balancing.md b/doc/balancing.md index f8d642f39..961e357a4 100644 --- a/doc/balancing.md +++ b/doc/balancing.md @@ -20,7 +20,7 @@ CTL allows tweaking the default balancer behavior by letting the user impose con - Using arbitrary address as user's own (for transaction balancing): `mustUseUtxosAtAddresses` / `mustUseUtxosAtAddress` - Providing additional UTxOs to use: `mustUseAdditionalUtxos` -- Bypassing wallet's collateral selection and select collateral UTxOs from a given set: `mustUseCollateralUtxos` +- Bypassing wallet's collateral selection and selecting collateral UTxOs from a given set: `mustUseCollateralUtxos` - Overriding change address: `mustSendChangeToAddress` - Preventing certain UTxOs from being spent: `mustNotSpendUtxosWithOutRefs` / `mustNotSpendUtxoWithOutRef` - Distributing token outputs equally between change UTxOs: `mustGenChangeOutsWithMaxTokenQuantity` diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 427984801..d59a3d0a6 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -147,7 +147,7 @@ contract (ContractParams p) = do \{ input, output } -> Tuple input output nonSpendableOref <- - liftedM "Failed to get utxos at Bob's address" + liftedM "Failed to get utxos at Alice's address" (Set.findMin <<< Map.keys <$> utxosAt aliceAddress) mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index e48327d64..b531823e8 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -273,8 +273,7 @@ setTransactionCollateral changeAddr transaction = do mbCollateralUtxos <- asksConstraints _collateralUtxos -- We must filter out UTxOs that are set as non-spendable in the balancer -- constraints - let - isSpendable = not <<< flip Set.member nonSpendableSet + let isSpendable = not <<< flip Set.member nonSpendableSet collateral <- case mbCollateralUtxos of -- if no collateral utxos are specified, use the wallet, but filter -- the unspendable ones diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index 946a50c78..7562a2311 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -181,7 +181,7 @@ mustUseAdditionalUtxos :: UtxoMap -> BalanceTxConstraintsBuilder mustUseAdditionalUtxos = wrap <<< set _additionalUtxos -- | Tells the balancer to select from the provided UTxO set when choosing --- | collateral UTxOs. Disables wallet's collateral selection. +-- | collateral UTxOs, instead of UTxOs provided by the browser wallet. mustUseCollateralUtxos :: UtxoMap -> BalanceTxConstraintsBuilder mustUseCollateralUtxos = wrap <<< set _collateralUtxos <<< Just From a5879fd4da5bc369353363bc10432a8c9153824c Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 11:42:05 +0100 Subject: [PATCH 444/478] Fixes CIP links to https://cips.cardano.org/cip/CIP-... --- doc/babbage-features.md | 8 ++++---- doc/cip-25-nfts.md | 2 +- doc/key-management.md | 2 +- doc/query-layers.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/babbage-features.md b/doc/babbage-features.md index cd123757a..02a32211a 100644 --- a/doc/babbage-features.md +++ b/doc/babbage-features.md @@ -14,7 +14,7 @@ This document is a reference/explainer for the new CTL APIs introduced for Babba ## Reference Inputs -[Reference inputs](https://cips.cardano.org/cips/cip31/#referenceinputs) allow looking at an output without spending it in Plutus scripts. +[Reference inputs](https://cips.cardano.org/cip/CIP-0031#reference-inputs) allow looking at an output without spending it in Plutus scripts. There are two ways to use an input as a reference in the constraints API: @@ -28,7 +28,7 @@ There are two ways to use an input as a reference in the constraints API: ## Reference Scripts -[Reference Scripts](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0033/) allows the use of scripts without attaching them to the transaction (and using a reference instead). +[Reference Scripts](https://cips.cardano.org/cip/CIP-0033) allows the use of scripts without attaching them to the transaction (and using a reference instead). Reference scripts can be utilized in CTL by first creating a reference point for the script to be used later via `mustPayToScriptWithScriptRef` (or its variants). @@ -40,7 +40,7 @@ Then, `mustSpendScriptOutputUsingScriptRef` (or its variants) can be used to use ## Inline Data -[CIP-32](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0032/) introduces the inline data feature that allows storing datum values directly in transaction outputs, instead of just the hashes. +[CIP-32](https://cips.cardano.org/cip/CIP-0032) introduces the inline data feature that allows storing datum values directly in transaction outputs, instead of just the hashes. In CTL, alternating between datum storage options can be achieved by specifying a `DatumPresence` value with constraints that accept it, like `mustPayToPubKeyWithDatum`. @@ -48,6 +48,6 @@ In CTL, alternating between datum storage options can be achieved by specifying ## Collateral Output -[CIP-40](https://cips.cardano.org/cips/cip40/) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. +[CIP-40](https://cips.cardano.org/cip/CIP-0040) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. Collateral output is automatically added to transactions in CTL. To trigger a collateral return, the `mustNotBeValid` constraint should be explicitly specified, otherwise a script error would be detected earlier and the transaction will not be sent. diff --git a/doc/cip-25-nfts.md b/doc/cip-25-nfts.md index 411151231..6c1568891 100644 --- a/doc/cip-25-nfts.md +++ b/doc/cip-25-nfts.md @@ -2,6 +2,6 @@ # CIP-25 NFT Metadata standard -CTL includes [CIP-25](https://cips.cardano.org/cips/cip25/) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. +CTL includes [CIP-25](https://cips.cardano.org/cip/CIP-0025) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. See [`Contract.Metadata`](https://plutonomicon.github.io/cardano-transaction-lib/Contract.Metadata.html#t:Cip25MetadataEntry) module. diff --git a/doc/key-management.md b/doc/key-management.md index b5e0a9000..f4635b65c 100644 --- a/doc/key-management.md +++ b/doc/key-management.md @@ -11,7 +11,7 @@ # Key Management -The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cips/cip1852/). +The process of going from private key menmonic to a set of addresses that the wallet can use is well specified in [CIP-1852](https://cips.cardano.org/cip/CIP-1852). For an address to be built, the user must provide some entropy for private key derivation and a *derivation path*, that specifies a list of cryptographic operations to perform on the "parent" or "root" key to get the "child" private key that can be used for signing. diff --git a/doc/query-layers.md b/doc/query-layers.md index eb21cd990..c714c51e5 100644 --- a/doc/query-layers.md +++ b/doc/query-layers.md @@ -21,7 +21,7 @@ In CTL context, the following query layers can be used, depending on backend cho - [Ogmios](https://ogmios.dev/) ([CTL backend](./runtime.md#ctl-backend)) - [Kupo](https://cardanosolutions.github.io/kupo/) ([CTL backend](./runtime.md#ctl-backend)) - [Blockfrost](https://blockfrost.io/) ([Blockfrost backend](./blockfrost.md)) -- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cips/cip30/) (any backend) +- [CIP-30 light wallet browser extensions](https://cips.cardano.org/cip/CIP-0030) (any backend) ## Wallet/Backend Inconsistency @@ -36,7 +36,7 @@ Thus, the goal of the developers is to ensure that the set of UTxOs available to CTL tries to be smart when dealing with the issue, and it aims to let the user work with both query layers as if it was one. To achieve this guarantee, CTL follows three simple rules: - **Rule 1** Whenever there is a *wallet operation* the result of which depends on the set of available UTxOs, CTL delays the execution until it reaches a state where *all wallet UTxOs are known to the backend*. These operations are assumed to be `getWalletUtxos`, `getWalletCollateral` and `getWalletBalance`. -- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cips/cip30/) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. +- **Rule 2** Whenever there is a transaction *`signTx`* [CIP-30](https://cips.cardano.org/cip/CIP-0030) call, the execution is delayed until all transaction inputs that come from one of the addresses controlled by the wallet *are known to the wallet*. - **Rule 3** Whenever CTL is asked to await for *transaction confirmation*, the execution is delayed until the *UTxOs that the transaction creates at wallet addresses* are visible to the wallet. The rules are implemented as 3 callable functions, which we call *synchronization primitives*: From cfcaa6cfc31ab6564479331e9d7067df0b513b31 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 16:16:44 +0100 Subject: [PATCH 445/478] Trying an upgrade of cardano-node v8.1.1 and pinned cardano-configs --- flake.lock | 1809 ++++++++++++++++++++++++++++++++--------------- flake.nix | 5 +- nix/runtime.nix | 2 +- 3 files changed, 1239 insertions(+), 577 deletions(-) diff --git a/flake.lock b/flake.lock index a4c6aaeb6..a9b6f3b57 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "lastModified": 1696538731, + "narHash": "sha256-oTsPiABmN7mw9hctagxzNcIDtvmyK4EuBzvMD2iXeeQ=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "rev": "4276a203ed968d067b6c31c943b5bae5fc2ec4a2", "type": "github" }, "original": { @@ -182,7 +182,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -200,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -219,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_9", + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1641404293, @@ -238,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_43" }, "locked": { "lastModified": 1641404293, @@ -257,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1641576265, @@ -350,7 +350,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641576265, @@ -418,7 +418,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_37" }, "locked": { "lastModified": 1646360966, @@ -534,22 +534,22 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_3", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", + "fenix": "fenix_5", "hydra": "hydra_3", - "n2c": "n2c_2", + "n2c": "n2c_3", "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "nixpkgs": "nixpkgs_31", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std_2", + "std": "std_3", "terranix": "terranix_2", "utils": "utils_12" }, @@ -629,12 +629,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy", - "fenix": "fenix_2", + "fenix": "fenix_3", "hydra": "hydra_2", "nix": "nix_2", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_17", "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -663,12 +663,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_5", "deploy": "deploy_3", - "fenix": "fenix_6", + "fenix": "fenix_7", "hydra": "hydra_4", "nix": "nix_9", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_46", "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -768,6 +768,21 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1198,7 +1213,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_25", "ragenix": "ragenix_2" }, "locked": { @@ -1219,7 +1234,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_54", "ragenix": "ragenix_5" }, "locked": { @@ -1247,10 +1262,7 @@ "cardano-node", "nixpkgs" ], - "tullia": [ - "cardano-node", - "tullia" - ] + "tullia": "tullia" }, "locked": { "lastModified": 1679408951, @@ -1269,16 +1281,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1700184336, - "narHash": "sha256-YhGAINYsk5qmHNOzoaB3vfItytsuADAA6XrFsfOOHQ8=", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "bd40a1ee99782196a70e8fa084a572c276d1d297", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, @@ -1333,7 +1346,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1642701714, @@ -1358,7 +1371,7 @@ "customConfig": "customConfig", "em": "em", "empty-flake": "empty-flake", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "hackageNix": "hackageNix", "haskellNix": "haskellNix", "hostNixpkgs": [ @@ -1366,32 +1379,27 @@ "nixpkgs" ], "iohkNix": "iohkNix", - "nix2container": "nix2container", + "nix2container": "nix2container_2", "nixpkgs": [ "cardano-node", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", - "std": [ - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", + "std": "std_2", "utils": "utils_2" }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "lastModified": 1696549777, + "narHash": "sha256-ONCnN1fLtYJB9kXDlUbF6nIjTnlqvI7kfppftrOOWAY=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "rev": "f1ce770834bf7150ca29cb647065c9e62d39be1a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.1.1", + "ref": "8.5.0-pre", "repo": "cardano-node", "type": "github" } @@ -1530,8 +1538,8 @@ "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", + "flake-compat": "flake-compat_9", + "flake-utils": "flake-utils_27", "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", @@ -1577,13 +1585,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", + "flake-compat": "flake-compat_10", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_3", + "n2c": "n2c_4", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_65", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1591,7 +1599,7 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_3", + "std": "std_4", "tullia": "tullia_2" }, "locked": { @@ -1612,14 +1620,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_8", + "devshell": "devshell_9", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_41", "poetry2nix": "poetry2nix", "utils": "utils_16" }, @@ -1637,6 +1645,32 @@ "type": "github" } }, + "crane": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_7", + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1682,7 +1716,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_2" + "yants": "yants_3" }, "locked": { "lastModified": 1648237091, @@ -1719,7 +1753,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_4" + "yants": "yants_5" }, "locked": { "lastModified": 1655854240, @@ -1739,7 +1773,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_11", "haskellNix": "haskellNix_3", "iohkNix": "iohkNix_3", "nixpkgs": [ @@ -1766,8 +1800,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", + "fenix": "fenix_2", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1796,8 +1830,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", + "fenix": "fenix_4", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -1824,8 +1858,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", + "fenix": "fenix_6", + "flake-compat": "flake-compat_7", "nixpkgs": [ "db-sync", "cardano-world", @@ -1855,12 +1889,14 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -1881,6 +1917,21 @@ } }, "devshell_10": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1895,7 +1946,7 @@ "type": "github" } }, - "devshell_11": { + "devshell_12": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1910,7 +1961,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1925,7 +1976,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1940,7 +1991,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -1955,7 +2006,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "inputs": { "flake-utils": [ "db-sync", @@ -1984,9 +2035,9 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "inputs": { - "flake-utils": "flake-utils_31", + "flake-utils": "flake-utils_33", "nixpkgs": [ "db-sync", "cardano-world", @@ -2010,6 +2061,29 @@ } }, "devshell_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2024,7 +2098,7 @@ "type": "github" } }, - "devshell_3": { + "devshell_4": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2039,7 +2113,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_5": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2054,7 +2128,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_6": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2069,7 +2143,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_7": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2084,7 +2158,7 @@ "type": "github" } }, - "devshell_7": { + "devshell_8": { "inputs": { "flake-utils": [ "db-sync", @@ -2115,10 +2189,10 @@ "type": "github" } }, - "devshell_8": { + "devshell_9": { "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1644227066, @@ -2134,31 +2208,18 @@ "type": "github" } }, - "devshell_9": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "dmerge": { "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ], "yants": [ "cardano-node", + "cardano-automation", "tullia", "std", "yants" @@ -2179,6 +2240,40 @@ } }, "dmerge_2": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2209,7 +2304,7 @@ "type": "github" } }, - "dmerge_3": { + "dmerge_4": { "inputs": { "nixlib": [ "db-sync", @@ -2240,7 +2335,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_6", "nix": "nix_7", "nixpkgs": [ @@ -2300,9 +2395,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_56", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -2341,7 +2436,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_59", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2375,9 +2470,28 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_10", "rust-analyzer-src": "rust-analyzer-src" }, + "locked": { + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_15", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2392,7 +2506,7 @@ "type": "github" } }, - "fenix_2": { + "fenix_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -2402,7 +2516,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { "lastModified": 1649226351, @@ -2418,10 +2532,10 @@ "type": "github" } }, - "fenix_3": { + "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "nixpkgs": "nixpkgs_28", + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1645165506, @@ -2437,7 +2551,7 @@ "type": "github" } }, - "fenix_4": { + "fenix_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -2445,7 +2559,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_4" + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1660631227, @@ -2461,10 +2575,10 @@ "type": "github" } }, - "fenix_5": { + "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" + "nixpkgs": "nixpkgs_44", + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1645165506, @@ -2480,7 +2594,7 @@ "type": "github" } }, - "fenix_6": { + "fenix_7": { "inputs": { "nixpkgs": [ "db-sync", @@ -2489,7 +2603,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_6" + "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { "lastModified": 1649226351, @@ -2508,21 +2622,36 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { "flake": false, "locked": { "lastModified": 1647532380, @@ -2539,7 +2668,7 @@ "type": "github" } }, - "flake-compat_11": { + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1696426674, @@ -2555,7 +2684,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2572,7 +2701,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2588,7 +2717,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_15": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2607,16 +2736,16 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -2624,15 +2753,16 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -2640,11 +2770,11 @@ "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -2688,11 +2818,11 @@ "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -2704,15 +2834,15 @@ "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -2720,22 +2850,22 @@ "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_56" + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1655570068, @@ -2787,6 +2917,36 @@ } }, "flake-utils_10": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2801,7 +2961,7 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_13": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2816,7 +2976,7 @@ "type": "github" } }, - "flake-utils_12": { + "flake-utils_14": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2831,7 +2991,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_15": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -2846,7 +3006,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_16": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2861,7 +3021,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_17": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2876,7 +3036,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_18": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2891,7 +3051,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_19": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -2906,13 +3066,13 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -2921,7 +3081,7 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_20": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2936,23 +3096,22 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_21": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "flake-utils_20": { + "flake-utils_22": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2967,7 +3126,7 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_23": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2982,7 +3141,7 @@ "type": "github" } }, - "flake-utils_22": { + "flake-utils_24": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2997,7 +3156,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_25": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -3012,7 +3171,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_26": { "locked": { "lastModified": 1652776076, "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", @@ -3028,7 +3187,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_27": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3043,7 +3202,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_28": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3058,7 +3217,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_29": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3073,13 +3232,13 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3088,13 +3247,13 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_30": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3103,13 +3262,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_31": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -3118,7 +3277,7 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_32": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3133,7 +3292,7 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_33": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3148,7 +3307,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_34": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3163,7 +3322,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_35": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3180,26 +3339,27 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3210,11 +3370,11 @@ }, "flake-utils_6": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3225,11 +3385,11 @@ }, "flake-utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -3255,11 +3415,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3286,7 +3446,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -3469,7 +3629,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_2", "utils": "utils" }, "locked": { @@ -3521,11 +3681,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1693182531, + "narHash": "sha256-OejogS2E745biMj8NuUYatN7uoMRsg7giVnRQwfiays=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "rev": "34cd9fe31d210f2ff041f490eaa4029f6b2812c4", "type": "github" }, "original": { @@ -3620,7 +3780,7 @@ "cabal-34": "cabal-34_2", "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_18", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls_2", @@ -3667,7 +3827,7 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", + "flake-utils": "flake-utils_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", @@ -3712,7 +3872,7 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", + "flake-compat": "flake-compat_13", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "ghc98X": "ghc98X", "ghc99": "ghc99", @@ -3720,7 +3880,7 @@ "hackage-nix" ], "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", + "hls-2.0": "hls-2.0_2", "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", @@ -3735,7 +3895,7 @@ "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2305": "nixpkgs-2305_2", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", "stackage": "stackage_6" @@ -3761,7 +3921,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_7", @@ -3801,14 +3961,15 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_4", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", "hackage": [ "cardano-node", "hackageNix" ], "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -3821,16 +3982,17 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1690764022, + "narHash": "sha256-+BFPab4/766AF+jfEAo6l3AZH5Zs1lbba2EVOcGhid0=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "rev": "0f2a6a9dfad636680367c0462dcd50ee64a9bddc", "type": "github" }, "original": { @@ -3846,7 +4008,7 @@ "cabal-34": "cabal-34_3", "cabal-36": "cabal-36_3", "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", + "flake-utils": "flake-utils_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_3", @@ -3886,7 +4048,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_5", @@ -3918,15 +4080,34 @@ "type": "github" } }, - "hercules-ci-effects": { + "haumea": { "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1699381651, - "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", - "owner": "hercules-ci", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_72" + }, + "locked": { + "lastModified": 1699381651, + "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", + "owner": "hercules-ci", "repo": "hercules-ci-effects", "rev": "0bd99f5ab7ec7a74c11238bd02bb29e709c14328", "type": "github" @@ -3988,6 +4169,23 @@ "type": "github" } }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.2": { "flake": false, "locked": { @@ -4397,6 +4595,7 @@ "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -4416,6 +4615,29 @@ "type": "github" } }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -4616,9 +4838,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_24", "utils": "utils_8" }, "locked": { @@ -4637,9 +4859,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_15", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_53", "utils": "utils_22" }, "locked": { @@ -4735,11 +4957,11 @@ "sodium": "sodium" }, "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "lastModified": 1696445248, + "narHash": "sha256-2B/fqwyaRAaHVmkf15tKwkFbL5O46TmMw+Rc2viUPEY=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "rev": "e32040e84180b3c27c0f13587025f6a17a4da520", "type": "github" }, "original": { @@ -4795,11 +5017,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -5163,23 +5385,25 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", "owner": "nlewo", "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", "type": "github" }, "original": { @@ -5190,8 +5414,35 @@ }, "n2c_2": { "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_29" }, "locked": { "lastModified": 1650568002, @@ -5207,10 +5458,10 @@ "type": "github" } }, - "n2c_3": { + "n2c_4": { "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1655533513, @@ -5229,7 +5480,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_6", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -5249,7 +5500,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": [ "db-sync", "cardano-world", @@ -5300,9 +5551,10 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat", "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "nix2container", "flake-utils" @@ -5310,11 +5562,13 @@ "gomod2nix": "gomod2nix", "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ], "nixpkgs-lib": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ] @@ -5415,15 +5669,15 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -5434,15 +5688,15 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5453,8 +5707,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" + "flake-utils": "flake-utils_32", + "nixpkgs": "nixpkgs_67" }, "locked": { "lastModified": 1653427219, @@ -5474,7 +5728,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" + "nixpkgs": "nixpkgs_47" }, "locked": { "lastModified": 1604400356, @@ -5493,7 +5747,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", + "nixpkgs": "nixpkgs_49", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -5513,7 +5767,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_61", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -5534,7 +5788,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_63", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -5555,7 +5809,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_70", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -5576,7 +5830,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -5597,7 +5851,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_73", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -5618,7 +5872,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", + "nixpkgs": "nixpkgs_16", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -5639,7 +5893,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1604400356, @@ -5658,7 +5912,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_20", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -5678,7 +5932,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", + "nixpkgs": "nixpkgs_30", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -5699,7 +5953,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_32", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -5719,7 +5973,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", + "nixpkgs": "nixpkgs_39", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -5740,7 +5994,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", + "nixpkgs": "nixpkgs_40", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -5761,7 +6015,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_45", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -5783,29 +6037,32 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixago-exts": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", "owner": "nix-community", "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { @@ -5845,6 +6102,38 @@ } }, "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -5876,7 +6165,7 @@ "type": "github" } }, - "nixago_3": { + "nixago_4": { "inputs": { "flake-utils": [ "db-sync", @@ -6353,11 +6642,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1685314633, + "narHash": "sha256-8LXBPqTQXl5ofkjpJ18JcbmLJ/lWDoMxtUwiDYv0wro=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "c8a17ce7abc03c50cd072e9e6c9b389c5f61836b", "type": "github" }, "original": { @@ -6384,6 +6673,22 @@ } }, "nixpkgs-2305": { + "locked": { + "lastModified": 1685338297, + "narHash": "sha256-+Aq4O0Jn1W1q927ZHc3Zn6RO7bwQGmb6O8xYoGy0KrM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6287b47dbfabbb8bfbb9b1b53d198ad58a774de4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { "locked": { "lastModified": 1695416179, "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", @@ -6629,11 +6934,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "lastModified": 1685347552, + "narHash": "sha256-9woSppRyUFo26yUffORTzttJ+apOt8MmCv6RxpPNTU4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "f2f1ec390714d303cf84ba086e34e45b450dd8c4", "type": "github" }, "original": { @@ -6772,6 +7077,36 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6787,7 +7122,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_13": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6801,7 +7136,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_14": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6817,7 +7152,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_15": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6833,7 +7168,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_16": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6848,7 +7183,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_17": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -6864,7 +7199,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_18": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -6879,7 +7214,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_19": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -6895,7 +7230,23 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_2": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6910,7 +7261,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_21": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -6926,21 +7277,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_20": { + "nixpkgs_22": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -6956,7 +7293,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_23": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6972,7 +7309,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_24": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -6988,7 +7325,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_25": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7004,7 +7341,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7020,7 +7357,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_27": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7035,7 +7372,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_28": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7051,7 +7388,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_29": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7066,7 +7403,22 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_3": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7081,7 +7433,7 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_31": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7097,23 +7449,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_32": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7128,7 +7464,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_33": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7144,7 +7480,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_34": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7160,7 +7496,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_35": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7176,7 +7512,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_36": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7192,7 +7528,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_37": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7208,7 +7544,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_38": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7224,7 +7560,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_39": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7239,7 +7575,23 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_4": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7254,7 +7606,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_41": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7270,22 +7622,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_42": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7299,7 +7636,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_43": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7315,7 +7652,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_44": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7331,7 +7668,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_45": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7346,7 +7683,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_46": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7362,7 +7699,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_47": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7377,7 +7714,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_48": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7393,7 +7730,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_49": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7408,7 +7745,21 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_5": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7424,7 +7775,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_51": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7440,23 +7791,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7472,7 +7807,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_53": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7488,7 +7823,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_54": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7504,7 +7839,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7520,7 +7855,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_56": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7536,7 +7871,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_57": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7550,7 +7885,7 @@ "type": "indirect" } }, - "nixpkgs_56": { + "nixpkgs_58": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7566,7 +7901,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_59": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7580,7 +7915,23 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_6": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7594,7 +7945,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7609,22 +7960,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_62": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7639,7 +7975,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_63": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7654,7 +7990,7 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_64": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7669,7 +8005,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_65": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7685,7 +8021,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_66": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7701,7 +8037,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_67": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7716,7 +8052,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_68": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -7732,7 +8068,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_69": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -7748,7 +8084,22 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_7": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7763,7 +8114,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_71": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -7779,23 +8130,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_72": { "locked": { "lastModified": 1697723726, "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", @@ -7811,7 +8146,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_73": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7828,38 +8163,39 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nomad": { "inputs": { "nix": "nix_3", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_19", "utils": "utils_4" }, "locked": { @@ -7879,10 +8215,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive", "nix": "nix_4", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_21", "utils": "utils_5" }, "locked": { @@ -7901,10 +8237,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_4", "nix": "nix_6", - "nixpkgs": "nixpkgs_31", + "nixpkgs": "nixpkgs_33", "utils": "utils_10" }, "locked": { @@ -7923,10 +8259,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_9", "nix": "nix_11", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_50", "utils": "utils_19" }, "locked": { @@ -7945,9 +8281,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_4", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_22", "utils": "utils_6" }, "locked": { @@ -7966,9 +8302,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_6", + "devshell": "devshell_7", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_34", "utils": "utils_11" }, "locked": { @@ -7987,9 +8323,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_14", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_51", "utils": "utils_20" }, "locked": { @@ -8009,7 +8345,7 @@ "nomad_2": { "inputs": { "nix": "nix_10", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_48", "utils": "utils_18" }, "locked": { @@ -8029,11 +8365,26 @@ }, "nosys": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", "owner": "divnix", "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { @@ -8062,12 +8413,12 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_5", + "blank": "blank_6", "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_14", "haskell-nix": [ "haskell-nix" ], @@ -8251,48 +8602,218 @@ "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys", + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-node", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "blank" + ], + "std": [ + "cardano-node", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, @@ -8302,7 +8823,7 @@ "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_15", "hackage-nix": [ "hackage-nix" ], @@ -8333,7 +8854,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -8359,8 +8880,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_57" }, "locked": { "lastModified": 1639823344, @@ -8379,9 +8900,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -8400,9 +8921,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -8421,9 +8942,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_14", + "nixpkgs": "nixpkgs_35", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8442,9 +8963,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8463,9 +8984,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -8489,7 +9010,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_12", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", "hercules-ci-effects": "hercules-ci-effects", @@ -8506,6 +9027,23 @@ } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8522,7 +9060,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8539,7 +9077,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8556,7 +9094,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8573,7 +9111,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8590,7 +9128,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8608,6 +9146,37 @@ } }, "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -8642,7 +9211,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -8675,7 +9244,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -8706,7 +9275,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -8739,7 +9308,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -8841,11 +9410,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1690762200, + "narHash": "sha256-UB02izyJREbLmS7+pyJvKF3mDePI6fTasqtg3fltJA0=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "c91713e7ca38abba6a90686df895acda53fd5038", "type": "github" }, "original": { @@ -8954,6 +9523,7 @@ "inputs": { "arion": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" @@ -8961,32 +9531,35 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_3", "incl": "incl", "makes": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "microvm": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_8", - "nosys": "nosys", + "nixpkgs": "nixpkgs_4", + "paisano": "paisano", + "paisano-tui": "paisano-tui", "yants": "yants" }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", "owner": "divnix", "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { @@ -8997,13 +9570,58 @@ }, "std_2": { "inputs": { - "devshell": "devshell_7", + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_6", + "haumea": "haumea", + "incl": "incl_2", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", - "yants": "yants_3" + "nixpkgs": "nixpkgs_9", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "devshell": "devshell_8", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_15", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_36", + "yants": "yants_4" }, "locked": { "lastModified": 1661370377, @@ -9019,15 +9637,15 @@ "type": "github" } }, - "std_3": { + "std_4": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_16", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_31", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_66", + "yants": "yants_6" }, "locked": { "lastModified": 1661367957, @@ -9043,11 +9661,11 @@ "type": "github" } }, - "std_4": { + "std_5": { "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "devshell": "devshell_17", + "nixpkgs": "nixpkgs_69", + "yants": "yants_7" }, "locked": { "lastModified": 1652784712, @@ -9243,10 +9861,25 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1654211622, @@ -9267,7 +9900,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_11", "nixpkgs": [ "db-sync", "cardano-world", @@ -9341,7 +9974,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_16", "nixpkgs": [ "db-sync", "cardano-world", @@ -9368,7 +10001,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_22", "nixpkgs": [ "db-sync", "cardano-world", @@ -9395,16 +10028,20 @@ "tullia": { "inputs": { "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "nixpkgs" + ], "std": "std" }, "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", "owner": "input-output-hk", "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", "type": "github" }, "original": { @@ -9416,8 +10053,8 @@ "tullia_2": { "inputs": { "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" + "nixpkgs": "nixpkgs_68", + "std": "std_5" }, "locked": { "lastModified": 1657811465, @@ -9816,6 +10453,7 @@ "inputs": { "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -9837,7 +10475,30 @@ }, "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1645126146, @@ -9853,7 +10514,7 @@ "type": "github" } }, - "yants_3": { + "yants_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -9877,9 +10538,9 @@ "type": "github" } }, - "yants_4": { + "yants_5": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1645126146, @@ -9895,7 +10556,7 @@ "type": "github" } }, - "yants_5": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -9918,7 +10579,7 @@ "type": "github" } }, - "yants_6": { + "yants_7": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index 1b9aa279d..ee2f6c46f 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; + cardano-node.url = "github:input-output-hk/cardano-node/8.5.0-pre"; ogmios-nixos = { url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; @@ -61,9 +61,10 @@ }; # Repository with network parameters + # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations"; + url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; flake = false; }; easy-purescript-nix = { diff --git a/nix/runtime.nix b/nix/runtime.nix index 46b2d7c2b..c85bcc0e2 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -17,7 +17,7 @@ rec { port = 3001; # the version of the node to use, corresponds to the image version tag, # i.e. `"inputoutput/cardano-node:${tag}"` - tag = "1.35.4"; + tag = "8.1.1"; }; ogmios = { port = 1337; }; postgres = { From 7a6c76302b85d156540d3f2c434e6696e99bc88a Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 17:23:37 +0100 Subject: [PATCH 446/478] Trying out plutip?ref=gergley/version-bump --- flake.lock | 2 +- flake.nix | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index a9b6f3b57..309915c8c 100644 --- a/flake.lock +++ b/flake.lock @@ -8847,8 +8847,8 @@ }, "original": { "owner": "mlabs-haskell", + "ref": "gergely/version-bump", "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" } }, diff --git a/flake.nix b/flake.nix index ee2f6c46f..a97cd6567 100644 --- a/flake.nix +++ b/flake.nix @@ -77,7 +77,8 @@ # Plutip server related inputs plutip = { - url = "github:mlabs-haskell/plutip/1bf0b547cd3689c727586abb8385c008fb2a3d1c"; + url = "github:mlabs-haskell/plutip?ref=gergely/version-bump"; + # TODO(bladyjoker): Why are we overriding inputs here? inputs = { nixpkgs.follows = "nixpkgs"; iohk-nix.follows = "iohk-nix"; From ea6c393f5c7febb60c45b575cef0136e1d0ede66 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 12 Dec 2023 11:21:05 +0100 Subject: [PATCH 447/478] Uses cardano-node 8.1.1 from flake inputs in all places (no dockerhub) --- flake.lock | 1802 +++++++++-------------------- flake.nix | 6 +- nix/runtime.nix | 25 +- plutip-server/cabal.project | 9 +- plutip-server/plutip-server.cabal | 1 + plutip-server/src/Api.hs | 3 +- 6 files changed, 589 insertions(+), 1257 deletions(-) diff --git a/flake.lock b/flake.lock index 309915c8c..58b19d765 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1696538731, - "narHash": "sha256-oTsPiABmN7mw9hctagxzNcIDtvmyK4EuBzvMD2iXeeQ=", + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "4276a203ed968d067b6c31c943b5bae5fc2ec4a2", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", "type": "github" }, "original": { @@ -182,7 +182,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1641576265, @@ -200,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1641404293, @@ -219,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_9", - "nixpkgs": "nixpkgs_14" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -238,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_43" + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -257,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -350,7 +350,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_42" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -418,7 +418,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_37" + "nixpkgs": "nixpkgs_35" }, "locked": { "lastModified": 1646360966, @@ -534,22 +534,22 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_3", + "blank": "blank_2", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_5", + "fenix": "fenix_4", "hydra": "hydra_3", - "n2c": "n2c_3", + "n2c": "n2c_2", "nix": "nix_5", - "nixpkgs": "nixpkgs_31", + "nixpkgs": "nixpkgs_29", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std_3", + "std": "std_2", "terranix": "terranix_2", "utils": "utils_12" }, @@ -629,12 +629,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_4", + "blank": "blank_3", "deploy": "deploy", - "fenix": "fenix_3", + "fenix": "fenix_2", "hydra": "hydra_2", "nix": "nix_2", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_15", "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -663,12 +663,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_5", + "blank": "blank_4", "deploy": "deploy_3", - "fenix": "fenix_7", + "fenix": "fenix_6", "hydra": "hydra_4", "nix": "nix_9", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_44", "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -768,21 +768,6 @@ "type": "github" } }, - "blank_6": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1213,7 +1198,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_25", + "nixpkgs": "nixpkgs_23", "ragenix": "ragenix_2" }, "locked": { @@ -1234,7 +1219,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_54", + "nixpkgs": "nixpkgs_52", "ragenix": "ragenix_5" }, "locked": { @@ -1262,7 +1247,10 @@ "cardano-node", "nixpkgs" ], - "tullia": "tullia" + "tullia": [ + "cardano-node", + "tullia" + ] }, "locked": { "lastModified": 1679408951, @@ -1346,7 +1334,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1642701714, @@ -1371,7 +1359,7 @@ "customConfig": "customConfig", "em": "em", "empty-flake": "empty-flake", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat", "hackageNix": "hackageNix", "haskellNix": "haskellNix", "hostNixpkgs": [ @@ -1379,27 +1367,32 @@ "nixpkgs" ], "iohkNix": "iohkNix", - "nix2container": "nix2container_2", + "nix2container": "nix2container", "nixpkgs": [ "cardano-node", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", - "std": "std_2", + "std": [ + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", "utils": "utils_2" }, "locked": { - "lastModified": 1696549777, - "narHash": "sha256-ONCnN1fLtYJB9kXDlUbF6nIjTnlqvI7kfppftrOOWAY=", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "f1ce770834bf7150ca29cb647065c9e62d39be1a", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.5.0-pre", + "ref": "8.1.1", "repo": "cardano-node", "type": "github" } @@ -1538,8 +1531,8 @@ "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_9", - "flake-utils": "flake-utils_27", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", @@ -1585,13 +1578,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_9", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_4", + "n2c": "n2c_3", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_65", + "nixpkgs": "nixpkgs_63", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1599,7 +1592,7 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_4", + "std": "std_3", "tullia": "tullia_2" }, "locked": { @@ -1620,14 +1613,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_9", + "devshell": "devshell_8", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_41", + "nixpkgs": "nixpkgs_39", "poetry2nix": "poetry2nix", "utils": "utils_16" }, @@ -1645,32 +1638,6 @@ "type": "github" } }, - "crane": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_7", - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1716,7 +1683,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_3" + "yants": "yants_2" }, "locked": { "lastModified": 1648237091, @@ -1753,7 +1720,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_5" + "yants": "yants_4" }, "locked": { "lastModified": 1655854240, @@ -1773,7 +1740,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_3", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_10", "haskellNix": "haskellNix_3", "iohkNix": "iohkNix_3", "nixpkgs": [ @@ -1800,8 +1767,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix_2", - "flake-compat": "flake-compat_5", + "fenix": "fenix", + "flake-compat": "flake-compat_4", "nixpkgs": [ "db-sync", "cardano-world", @@ -1830,8 +1797,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_4", - "flake-compat": "flake-compat_6", + "fenix": "fenix_3", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1858,8 +1825,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_6", - "flake-compat": "flake-compat_7", + "fenix": "fenix_5", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -1889,14 +1856,12 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -1917,21 +1882,6 @@ } }, "devshell_10": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1946,7 +1896,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1961,7 +1911,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_12": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1976,7 +1926,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_13": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1991,7 +1941,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_14": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2006,7 +1956,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_15": { "inputs": { "flake-utils": [ "db-sync", @@ -2035,9 +1985,9 @@ "type": "github" } }, - "devshell_17": { + "devshell_16": { "inputs": { - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_31", "nixpkgs": [ "db-sync", "cardano-world", @@ -2061,29 +2011,6 @@ } }, "devshell_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_3": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2098,7 +2025,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_3": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2113,7 +2040,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_4": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2128,7 +2055,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_5": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2143,7 +2070,7 @@ "type": "github" } }, - "devshell_7": { + "devshell_6": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2158,7 +2085,7 @@ "type": "github" } }, - "devshell_8": { + "devshell_7": { "inputs": { "flake-utils": [ "db-sync", @@ -2189,10 +2116,10 @@ "type": "github" } }, - "devshell_9": { + "devshell_8": { "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_38" + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" }, "locked": { "lastModified": 1644227066, @@ -2208,18 +2135,31 @@ "type": "github" } }, + "devshell_9": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "dmerge": { "inputs": { "nixlib": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ], "yants": [ "cardano-node", - "cardano-automation", "tullia", "std", "yants" @@ -2240,40 +2180,6 @@ } }, "dmerge_2": { - "inputs": { - "haumea": [ - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", - "type": "github" - }, - "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", - "type": "github" - } - }, - "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2304,7 +2210,7 @@ "type": "github" } }, - "dmerge_4": { + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2335,7 +2241,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_9", "inclusive": "inclusive_6", "nix": "nix_7", "nixpkgs": [ @@ -2395,9 +2301,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_56", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -2436,7 +2342,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_57", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2470,28 +2376,9 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_13", "rust-analyzer-src": "rust-analyzer-src" }, - "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_15", - "rust-analyzer-src": "rust-analyzer-src_2" - }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2506,7 +2393,7 @@ "type": "github" } }, - "fenix_3": { + "fenix_2": { "inputs": { "nixpkgs": [ "db-sync", @@ -2516,7 +2403,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_3" + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { "lastModified": 1649226351, @@ -2532,10 +2419,10 @@ "type": "github" } }, - "fenix_4": { + "fenix_3": { "inputs": { - "nixpkgs": "nixpkgs_28", - "rust-analyzer-src": "rust-analyzer-src_4" + "nixpkgs": "nixpkgs_26", + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { "lastModified": 1645165506, @@ -2551,7 +2438,7 @@ "type": "github" } }, - "fenix_5": { + "fenix_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -2559,7 +2446,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_5" + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1660631227, @@ -2575,10 +2462,10 @@ "type": "github" } }, - "fenix_6": { + "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_44", - "rust-analyzer-src": "rust-analyzer-src_6" + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1645165506, @@ -2594,7 +2481,7 @@ "type": "github" } }, - "fenix_7": { + "fenix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -2603,7 +2490,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_7" + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1649226351, @@ -2622,36 +2509,21 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } }, "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_11": { "flake": false, "locked": { "lastModified": 1647532380, @@ -2668,7 +2540,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_11": { "flake": false, "locked": { "lastModified": 1696426674, @@ -2684,7 +2556,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2701,7 +2573,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2717,7 +2589,7 @@ "type": "github" } }, - "flake-compat_15": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2734,23 +2606,6 @@ } }, "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2767,14 +2622,14 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -2783,7 +2638,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2799,7 +2654,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2815,7 +2670,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_6": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2831,7 +2686,7 @@ "type": "github" } }, - "flake-compat_8": { + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1641205782, @@ -2847,7 +2702,7 @@ "type": "github" } }, - "flake-compat_9": { + "flake-compat_8": { "flake": false, "locked": { "lastModified": 1635892615, @@ -2863,9 +2718,25 @@ "type": "github" } }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_58" + "nixpkgs": "nixpkgs_56" }, "locked": { "lastModified": 1655570068, @@ -2917,36 +2788,6 @@ } }, "flake-utils_10": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_11": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_12": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2961,7 +2802,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_11": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2976,7 +2817,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2991,7 +2832,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_13": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -3006,7 +2847,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_14": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -3021,7 +2862,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_15": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3036,7 +2877,7 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_16": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3051,7 +2892,7 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_17": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -3066,13 +2907,13 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_18": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3081,7 +2922,7 @@ "type": "github" } }, - "flake-utils_20": { + "flake-utils_19": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3096,22 +2937,23 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, - "flake-utils_22": { + "flake-utils_20": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -3126,7 +2968,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3141,7 +2983,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_22": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3156,7 +2998,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_23": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -3171,7 +3013,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_24": { "locked": { "lastModified": 1652776076, "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", @@ -3187,7 +3029,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_25": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3202,7 +3044,7 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_26": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3217,7 +3059,7 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_27": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3232,13 +3074,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_28": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3247,13 +3089,13 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_29": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -3262,13 +3104,13 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_3": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3277,7 +3119,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_30": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3292,7 +3134,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_31": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3307,7 +3149,7 @@ "type": "github" } }, - "flake-utils_34": { + "flake-utils_32": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3322,7 +3164,7 @@ "type": "github" } }, - "flake-utils_35": { + "flake-utils_33": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3339,27 +3181,26 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3370,11 +3211,11 @@ }, "flake-utils_6": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3385,11 +3226,11 @@ }, "flake-utils_7": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3415,11 +3256,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -3446,7 +3287,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_10", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -3629,7 +3470,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_5", "utils": "utils" }, "locked": { @@ -3681,11 +3522,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1693182531, - "narHash": "sha256-OejogS2E745biMj8NuUYatN7uoMRsg7giVnRQwfiays=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "34cd9fe31d210f2ff041f490eaa4029f6b2812c4", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { @@ -3780,7 +3621,7 @@ "cabal-34": "cabal-34_2", "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_18", + "flake-utils": "flake-utils_16", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls_2", @@ -3827,7 +3668,7 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_29", + "flake-utils": "flake-utils_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", @@ -3872,7 +3713,7 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_12", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "ghc98X": "ghc98X", "ghc99": "ghc99", @@ -3880,7 +3721,7 @@ "hackage-nix" ], "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", + "hls-2.0": "hls-2.0", "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", @@ -3895,7 +3736,7 @@ "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", "stackage": "stackage_6" @@ -3921,7 +3762,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_33", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_7", @@ -3961,15 +3802,14 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_4", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", "hackage": [ "cardano-node", "hackageNix" ], "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -3982,17 +3822,16 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1690764022, - "narHash": "sha256-+BFPab4/766AF+jfEAo6l3AZH5Zs1lbba2EVOcGhid0=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "0f2a6a9dfad636680367c0462dcd50ee64a9bddc", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { @@ -4008,7 +3847,7 @@ "cabal-34": "cabal-34_3", "cabal-36": "cabal-36_3", "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_28", + "flake-utils": "flake-utils_26", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_3", @@ -4048,7 +3887,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_34", + "flake-utils": "flake-utils_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_5", @@ -4080,29 +3919,10 @@ "type": "github" } }, - "haumea": { + "hercules-ci-effects": { "inputs": { - "nixpkgs": "nixpkgs_8" - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_72" + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1699381651, @@ -4169,23 +3989,6 @@ "type": "github" } }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-2.2": { "flake": false, "locked": { @@ -4595,7 +4398,6 @@ "inputs": { "nixlib": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -4615,29 +4417,6 @@ "type": "github" } }, - "incl_2": { - "inputs": { - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -4838,9 +4617,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_4", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_24", + "nixpkgs": "nixpkgs_22", "utils": "utils_8" }, "locked": { @@ -4859,9 +4638,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_14", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_51", "utils": "utils_22" }, "locked": { @@ -4957,11 +4736,11 @@ "sodium": "sodium" }, "locked": { - "lastModified": 1696445248, - "narHash": "sha256-2B/fqwyaRAaHVmkf15tKwkFbL5O46TmMw+Rc2viUPEY=", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "e32040e84180b3c27c0f13587025f6a17a4da520", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { @@ -5017,11 +4796,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -5385,25 +5164,23 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", "owner": "nlewo", "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { @@ -5414,35 +5191,8 @@ }, "n2c_2": { "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_13", - "nixpkgs": "nixpkgs_29" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1650568002, @@ -5458,10 +5208,10 @@ "type": "github" } }, - "n2c_4": { + "n2c_3": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1655533513, @@ -5480,7 +5230,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_3", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -5500,7 +5250,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_11", "inclusive": [ "db-sync", "cardano-world", @@ -5551,10 +5301,9 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_3", "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "nix2container", "flake-utils" @@ -5562,13 +5311,11 @@ "gomod2nix": "gomod2nix", "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "nixpkgs" ], "nixpkgs-lib": [ "cardano-node", - "cardano-automation", "tullia", "nixpkgs" ] @@ -5669,15 +5416,15 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5688,15 +5435,15 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_7" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -5707,8 +5454,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": "nixpkgs_67" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1653427219, @@ -5728,7 +5475,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_47" + "nixpkgs": "nixpkgs_45" }, "locked": { "lastModified": 1604400356, @@ -5747,7 +5494,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_47", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -5767,7 +5514,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_59", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -5788,7 +5535,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_61", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -5809,7 +5556,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_70", + "nixpkgs": "nixpkgs_68", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -5830,7 +5577,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_69", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -5851,7 +5598,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_73", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -5872,7 +5619,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_14", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -5893,7 +5640,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1604400356, @@ -5912,7 +5659,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_18", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -5932,7 +5679,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_28", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -5953,7 +5700,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_30", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -5973,7 +5720,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_37", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -5994,7 +5741,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_40", + "nixpkgs": "nixpkgs_38", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -6015,7 +5762,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_45", + "nixpkgs": "nixpkgs_43", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -6037,32 +5784,29 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixago-exts": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { @@ -6102,38 +5846,6 @@ } }, "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -6165,7 +5877,7 @@ "type": "github" } }, - "nixago_4": { + "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -6642,11 +6354,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1685314633, - "narHash": "sha256-8LXBPqTQXl5ofkjpJ18JcbmLJ/lWDoMxtUwiDYv0wro=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c8a17ce7abc03c50cd072e9e6c9b389c5f61836b", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { @@ -6673,22 +6385,6 @@ } }, "nixpkgs-2305": { - "locked": { - "lastModified": 1685338297, - "narHash": "sha256-+Aq4O0Jn1W1q927ZHc3Zn6RO7bwQGmb6O8xYoGy0KrM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6287b47dbfabbb8bfbb9b1b53d198ad58a774de4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { "locked": { "lastModified": 1695416179, "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", @@ -6934,11 +6630,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1685347552, - "narHash": "sha256-9woSppRyUFo26yUffORTzttJ+apOt8MmCv6RxpPNTU4=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f2f1ec390714d303cf84ba086e34e45b450dd8c4", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { @@ -7077,36 +6773,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7122,7 +6788,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_11": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7136,7 +6802,7 @@ "type": "indirect" } }, - "nixpkgs_14": { + "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7152,7 +6818,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_13": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7168,7 +6834,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_14": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7183,7 +6849,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_15": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7199,7 +6865,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_16": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7214,7 +6880,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_17": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7230,23 +6896,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7261,7 +6911,7 @@ "type": "indirect" } }, - "nixpkgs_21": { + "nixpkgs_19": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7277,7 +6927,21 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_2": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7293,7 +6957,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_21": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7309,7 +6973,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_22": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7325,7 +6989,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_23": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7341,7 +7005,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_24": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7357,7 +7021,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_25": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7372,7 +7036,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7388,7 +7052,7 @@ "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_27": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7403,22 +7067,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_28": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7433,7 +7082,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_29": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7449,7 +7098,23 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_3": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7464,7 +7129,7 @@ "type": "indirect" } }, - "nixpkgs_33": { + "nixpkgs_31": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7480,7 +7145,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_32": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7496,7 +7161,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_33": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7512,7 +7177,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_34": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7528,7 +7193,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_35": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7544,7 +7209,7 @@ "type": "github" } }, - "nixpkgs_38": { + "nixpkgs_36": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7560,7 +7225,7 @@ "type": "github" } }, - "nixpkgs_39": { + "nixpkgs_37": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7575,23 +7240,7 @@ "type": "indirect" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_38": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7606,7 +7255,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_39": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7622,7 +7271,22 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_4": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7636,7 +7300,7 @@ "type": "indirect" } }, - "nixpkgs_43": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7652,7 +7316,7 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_42": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7668,7 +7332,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7683,7 +7347,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_44": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7699,7 +7363,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_45": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7714,7 +7378,7 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_46": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7730,7 +7394,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_47": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7745,21 +7409,7 @@ "type": "indirect" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_50": { + "nixpkgs_48": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7775,7 +7425,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_49": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7791,7 +7441,23 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_5": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7807,7 +7473,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_51": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7823,7 +7489,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_52": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7839,7 +7505,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_53": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7855,7 +7521,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_54": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7871,7 +7537,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_55": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7885,7 +7551,7 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_56": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7901,7 +7567,7 @@ "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_57": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7915,23 +7581,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_58": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7945,7 +7595,7 @@ "type": "indirect" } }, - "nixpkgs_61": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7960,7 +7610,22 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_6": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7975,7 +7640,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7990,7 +7655,7 @@ "type": "indirect" } }, - "nixpkgs_64": { + "nixpkgs_62": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -8005,7 +7670,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_63": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -8021,7 +7686,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_64": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -8037,7 +7702,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_65": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -8052,7 +7717,7 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_66": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -8068,7 +7733,7 @@ "type": "github" } }, - "nixpkgs_69": { + "nixpkgs_67": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -8084,22 +7749,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8114,7 +7764,7 @@ "type": "indirect" } }, - "nixpkgs_71": { + "nixpkgs_69": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -8130,7 +7780,23 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_7": { + "locked": { + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1697723726, "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", @@ -8146,7 +7812,7 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_71": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8163,39 +7829,38 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nomad": { "inputs": { "nix": "nix_3", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_17", "utils": "utils_4" }, "locked": { @@ -8215,10 +7880,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_2", "inclusive": "inclusive", "nix": "nix_4", - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_19", "utils": "utils_5" }, "locked": { @@ -8237,10 +7902,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_6", + "devshell": "devshell_5", "inclusive": "inclusive_4", "nix": "nix_6", - "nixpkgs": "nixpkgs_33", + "nixpkgs": "nixpkgs_31", "utils": "utils_10" }, "locked": { @@ -8259,10 +7924,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_12", "inclusive": "inclusive_9", "nix": "nix_11", - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_48", "utils": "utils_19" }, "locked": { @@ -8281,9 +7946,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_3", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_20", "utils": "utils_6" }, "locked": { @@ -8302,9 +7967,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_7", + "devshell": "devshell_6", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_34", + "nixpkgs": "nixpkgs_32", "utils": "utils_11" }, "locked": { @@ -8323,9 +7988,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_13", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_49", "utils": "utils_20" }, "locked": { @@ -8345,7 +8010,7 @@ "nomad_2": { "inputs": { "nix": "nix_10", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_46", "utils": "utils_18" }, "locked": { @@ -8365,26 +8030,11 @@ }, "nosys": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", "owner": "divnix", "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_2": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { @@ -8413,12 +8063,12 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_6", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_13", "haskell-nix": [ "haskell-nix" ], @@ -8598,222 +8248,52 @@ "repo": "ops-lib", "type": "github" } - }, - "ops-lib_2": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_3": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_4": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "paisano": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys", - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "core", - "type": "github" - } - }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "actions", - "type": "github" - } - }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-node", - "std" - ] - }, - "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "type": "github" - } - }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-node", - "cardano-automation", - "tullia", - "std" - ] - }, + }, + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "blank" - ], - "std": [ - "cardano-node", - "std" - ] - }, + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "ops-lib_4": { + "flake": false, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, @@ -8823,7 +8303,7 @@ "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_15", + "flake-compat": "flake-compat_14", "hackage-nix": [ "hackage-nix" ], @@ -8854,7 +8334,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_19", + "flake-utils": "flake-utils_17", "nixpkgs": [ "db-sync", "cardano-world", @@ -8880,8 +8360,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_57" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1639823344, @@ -8900,9 +8380,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_23", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", + "rust-overlay": "rust-overlay" }, "locked": { "lastModified": 1641119695, @@ -8921,9 +8401,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1645147603, @@ -8942,9 +8422,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_14", - "nixpkgs": "nixpkgs_35", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1641119695, @@ -8963,9 +8443,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_52", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8984,9 +8464,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55", - "rust-overlay": "rust-overlay_6" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1645147603, @@ -9010,7 +8490,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_12", + "flake-compat": "flake-compat_11", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", "hercules-ci-effects": "hercules-ci-effects", @@ -9027,23 +8507,6 @@ } }, "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9060,7 +8523,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1649178056, @@ -9077,7 +8540,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9094,7 +8557,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1660579619, @@ -9111,7 +8574,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9128,7 +8591,7 @@ "type": "github" } }, - "rust-analyzer-src_7": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1649178056, @@ -9146,37 +8609,6 @@ } }, "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -9211,7 +8643,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -9244,7 +8676,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -9275,7 +8707,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -9308,7 +8740,7 @@ "type": "github" } }, - "rust-overlay_6": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -9410,11 +8842,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1690762200, - "narHash": "sha256-UB02izyJREbLmS7+pyJvKF3mDePI6fTasqtg3fltJA0=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "c91713e7ca38abba6a90686df895acda53fd5038", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -9523,7 +8955,6 @@ "inputs": { "arion": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" @@ -9531,35 +8962,32 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_5", "incl": "incl", "makes": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "microvm": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_4", - "paisano": "paisano", - "paisano-tui": "paisano-tui", + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", "yants": "yants" }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", "owner": "divnix", "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { @@ -9570,58 +8998,13 @@ }, "std_2": { "inputs": { - "arion": [ - "cardano-node", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", + "devshell": "devshell_7", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_6", - "haumea": "haumea", - "incl": "incl_2", - "makes": [ - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_9", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_2" - }, - "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_3": { - "inputs": { - "devshell": "devshell_8", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_13", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_36", - "yants": "yants_4" + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" }, "locked": { "lastModified": 1661370377, @@ -9637,15 +9020,15 @@ "type": "github" } }, - "std_4": { + "std_3": { "inputs": { - "devshell": "devshell_16", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_31", + "devshell": "devshell_15", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_66", - "yants": "yants_6" + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", + "yants": "yants_5" }, "locked": { "lastModified": 1661367957, @@ -9661,11 +9044,11 @@ "type": "github" } }, - "std_5": { + "std_4": { "inputs": { - "devshell": "devshell_17", - "nixpkgs": "nixpkgs_69", - "yants": "yants_7" + "devshell": "devshell_16", + "nixpkgs": "nixpkgs_67", + "yants": "yants_6" }, "locked": { "lastModified": 1652784712, @@ -9861,25 +9244,10 @@ "type": "github" } }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_60" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -9900,7 +9268,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_11", + "flake-utils": "flake-utils_9", "nixpkgs": [ "db-sync", "cardano-world", @@ -9974,7 +9342,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_14", "nixpkgs": [ "db-sync", "cardano-world", @@ -10001,7 +9369,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_22", + "flake-utils": "flake-utils_20", "nixpkgs": [ "db-sync", "cardano-world", @@ -10028,20 +9396,16 @@ "tullia": { "inputs": { "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "nixpkgs" - ], + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", "std": "std" }, "locked": { - "lastModified": 1684859161, - "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", "owner": "input-output-hk", "repo": "tullia", - "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", "type": "github" }, "original": { @@ -10053,8 +9417,8 @@ "tullia_2": { "inputs": { "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_68", - "std": "std_5" + "nixpkgs": "nixpkgs_66", + "std": "std_4" }, "locked": { "lastModified": 1657811465, @@ -10453,7 +9817,6 @@ "inputs": { "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -10475,30 +9838,7 @@ }, "yants_2": { "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", - "owner": "divnix", - "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_3": { - "inputs": { - "nixpkgs": "nixpkgs_27" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -10514,7 +9854,7 @@ "type": "github" } }, - "yants_4": { + "yants_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -10538,9 +9878,9 @@ "type": "github" } }, - "yants_5": { + "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -10556,7 +9896,7 @@ "type": "github" } }, - "yants_6": { + "yants_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -10579,7 +9919,7 @@ "type": "github" } }, - "yants_7": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index a97cd6567..50328367e 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.5.0-pre"; + cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; ogmios-nixos = { url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; @@ -332,8 +332,8 @@ # it (i.e. `nix develop`) default = (psProjectFor (nixpkgsFor system)).devShell; - # This can be used with `nix develop .#hsDevShell - hsDevShell = self.hsFlake.${system}.devShell; + # This can be used with `nix develop .#devPlutipServer` to work with `./plutip-server` + devPlutipServer = ((plutipServerFor system).flake { }).devShell; }); packages = perSystem (system: diff --git a/nix/runtime.nix b/nix/runtime.nix index c85bcc0e2..6920d9c83 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -15,9 +15,6 @@ rec { # to change the values after calling `buildCtlRuntime` node = { port = 3001; - # the version of the node to use, corresponds to the image version tag, - # i.e. `"inputoutput/cardano-node:${tag}"` - tag = "8.1.1"; }; ogmios = { port = 1337; }; postgres = { @@ -98,10 +95,9 @@ rec { nodeSocketPath = "/ipc/node.socket"; bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { - # TODO make this use `cardano-node` from flake inputs cardano-node = { service = { - image = "inputoutput/cardano-node:${node.tag}"; + useHostStore = true; ports = [ (bindPort node.port) ]; volumes = [ "${config.cardano-configurations}/network/${config.network.name}/cardano-node:/config" @@ -110,15 +106,15 @@ rec { "${nodeIpcVol}:/ipc" ]; command = [ - "run" - "--config" - "/config/config.json" - "--database-path" - "/data/db" - "--socket-path" - "${nodeSocketPath}" - "--topology" - "/config/topology.json" + "${pkgs.bash}/bin/sh" + "-c" + '' + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json + '' ]; }; }; @@ -152,7 +148,6 @@ rec { ); }; }; - # TODO make this use `ogmios` from flake inputs ogmios = { service = { useHostStore = true; diff --git a/plutip-server/cabal.project b/plutip-server/cabal.project index 8f005a366..c1a038651 100644 --- a/plutip-server/cabal.project +++ b/plutip-server/cabal.project @@ -12,10 +12,6 @@ repository cardano-haskell-packages -- Align index-states with cardano-wallet index-state: 2023-06-06T00:00:00Z -index-state: - , hackage.haskell.org 2023-06-06T00:00:00Z - , cardano-haskell-packages 2023-06-05T06:39:32Z - packages: ./. tests: true @@ -111,9 +107,8 @@ source-repository-package --sha256: 04q58c82wy6x9nkwqbvcxbv6s61fx08h5kf62sb511aqp08id4bb subdir: generated - source-repository-package type: git location: https://github.com/mlabs-haskell/plutip.git - tag: d060231ebf20383cbdc854a4664fd66a5815aedc - --sha256: 0yydxf1f0mdx2ypnas987bnr7fmz0l1255rid5l9f4ajagd4bfry + tag: 1bf0b547cd3689c727586abb8385c008fb2a3d1c + --sha256: sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU= diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal index da121dc1b..495825b76 100644 --- a/plutip-server/plutip-server.cabal +++ b/plutip-server/plutip-server.cabal @@ -87,6 +87,7 @@ executable plutip-server , wai-cors , wai-logger , warp + , wai-extra other-modules: Api diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs index b3c6fcc93..f3de22776 100644 --- a/plutip-server/src/Api.hs +++ b/plutip-server/src/Api.hs @@ -7,6 +7,7 @@ import Api.Handlers ( import Control.Monad.IO.Class (liftIO) import Control.Monad.Reader (runReaderT) import Data.Kind (Type) +import Network.Wai.Middleware.RequestLogger as Logger import Network.Wai.Middleware.Cors qualified as Cors import Servant ( Application, @@ -42,7 +43,7 @@ type Api = :> Post '[JSON] StopClusterResponse app :: Env -> Application -app = Cors.cors (const $ Just policy) . serve api . appServer +app = Logger.logStdout . Cors.cors (const $ Just policy) . serve api . appServer where policy :: Cors.CorsResourcePolicy policy = From 5c97dcf8cca2e7220fcba7317aaf8ee398191bd3 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 12 Dec 2023 11:42:21 +0100 Subject: [PATCH 448/478] Uses Kupo from flake inputs and fixes cardano-node --- nix/runtime.nix | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 6920d9c83..c03e5bc57 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -96,6 +96,12 @@ rec { bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { cardano-node = { + image.contents = [ + # Note: Required, fixes issue with "Failed to start all.. subscriptions". + # Creates the /etc/services file. + pkgs.iana-etc + pkgs.coreutils + ]; service = { useHostStore = true; ports = [ (bindPort node.port) ]; @@ -109,19 +115,18 @@ rec { "${pkgs.bash}/bin/sh" "-c" '' - ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ - --config /config/config.json \ - --database-path /data/db \ - --socket-path "${nodeSocketPath}" \ - --topology /config/topology.json + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json '' ]; }; }; - # TODO make this use `kupo` from flake inputs kupo = { service = { - image = "cardanosolutions/kupo:${kupo.tag}"; + useHostStore = true; ports = [ (bindPort kupo.port) ]; volumes = [ "${config.cardano-configurations}/network/${config.network.name}:/config" @@ -129,23 +134,18 @@ rec { "${kupoDbVol}:/kupo-db" ]; command = [ - "--node-config" - "/config/cardano-node/config.json" - "--node-socket" - "${nodeSocketPath}" - "--since" - "${kupo.since}" - "--match" - "${"${kupo.match}"}" - "--host" - "0.0.0.0" - "--workdir" - "kupo-db" - ] ++ ( - pkgs.lib.lists.optional kupo.pruneUtxo "--prune-utxo" - ) ++ ( - pkgs.lib.lists.optional kupo.deferDbIndexes "--defer-db-indexes" - ); + "${pkgs.bash}/bin/sh" + "-c" + '' + ${inputs.kupo-nixos.packages.${pkgs.system}.kupo}/bin/kupo \ + --node-config /config/cardano-node/config.json \ + --node-socket "${nodeSocketPath}" \ + --since "${kupo.since}" \ + --match "${kupo.match}" \ + --host "0.0.0.0" \ + --workdir kupo-db ${pkgs.lib.strings.optionalString kupo.pruneUtxo "--prune-utxo"} ${pkgs.lib.strings.optionalString kupo.deferDbIndexes "--defer-db-indexes"} + '' + ]; }; }; ogmios = { From 12e7a1c662a54264aec795957f1492e728380fc7 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 17:23:37 +0100 Subject: [PATCH 449/478] Trying out plutip?ref=gergley/version-bump --- flake.lock | 2 +- flake.nix | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index d31de6460..668220a9e 100644 --- a/flake.lock +++ b/flake.lock @@ -8271,8 +8271,8 @@ }, "original": { "owner": "mlabs-haskell", + "ref": "gergely/version-bump", "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 48aa83bf7..50597fb2d 100644 --- a/flake.nix +++ b/flake.nix @@ -76,7 +76,8 @@ # Plutip server related inputs plutip = { - url = "github:mlabs-haskell/plutip/1bf0b547cd3689c727586abb8385c008fb2a3d1c"; + url = "github:mlabs-haskell/plutip?ref=gergely/version-bump"; + # TODO(bladyjoker): Why are we overriding inputs here? inputs = { nixpkgs.follows = "nixpkgs"; iohk-nix.follows = "iohk-nix"; From 7d9c8f2caeec74c921b7663f736d987b4d8e1960 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 12 Dec 2023 11:21:05 +0100 Subject: [PATCH 450/478] Uses cardano-node 8.1.1 from flake inputs in all places (no dockerhub) --- flake.lock | 73 +++++++++++++++++++------------ flake.nix | 4 +- nix/runtime.nix | 25 +++++------ plutip-server/cabal.project | 9 +--- plutip-server/plutip-server.cabal | 1 + plutip-server/src/Api.hs | 3 +- 6 files changed, 62 insertions(+), 53 deletions(-) diff --git a/flake.lock b/flake.lock index 668220a9e..d4febf83f 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1700639964, - "narHash": "sha256-iQ48z5eqSHP8d7B8BBJtnXkVPIKPvdWc0GhIgy4j8cc=", + "lastModified": 1702290471, + "narHash": "sha256-uivAP05RENSzQDbDjAU3Fbq+AiDDpcNaHAzvOZM1fik=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "eaf713ef8029332b9e4e23685fa157f26086da8b", + "rev": "1ff7483a6d2670c8627de92779a2b92a989293cd", "type": "github" }, "original": { @@ -1269,11 +1269,11 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1700184336, - "narHash": "sha256-YhGAINYsk5qmHNOzoaB3vfItytsuADAA6XrFsfOOHQ8=", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "bd40a1ee99782196a70e8fa084a572c276d1d297", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { @@ -3432,11 +3432,11 @@ "ghc99": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -3485,11 +3485,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1700612632, - "narHash": "sha256-UzG6TDIano8KutKie9wI5yvvN3CfUfWOSBgDtuDa0L0=", + "lastModified": 1702340598, + "narHash": "sha256-CC0HI+6iKPtH+8r/ZfcpW5v/OYvL7zMwpr0xfkXV1zU=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "2674c27b8de693e83776083ed5fdf95e54be6463", + "rev": "24617c569995e38bf3b83b48eec6628a50fdb4fb", "type": "github" }, "original": { @@ -3716,16 +3716,17 @@ "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", "stackage": "stackage_6" }, "locked": { - "lastModified": 1700638396, - "narHash": "sha256-vQy1p94QFz8Lo+x2zZLb2gmNGtm2CUWk9j/IkuETs1s=", + "lastModified": 1702342211, + "narHash": "sha256-cVitlW0guoMsB7oZZt1bJU2XpFN4uQciO/z/ZQBaV7g=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "fc060cf2934f7f206a4340ef86f5764b2f95737d", + "rev": "2a1000b835ea4f8186b79e5926c99a80f9e354fc", "type": "github" }, "original": { @@ -4649,11 +4650,11 @@ "sodium": "sodium_2" }, "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", "type": "github" }, "original": { @@ -6346,11 +6347,11 @@ }, "nixpkgs-2305": { "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { @@ -6360,6 +6361,22 @@ "type": "github" } }, + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-docker": { "locked": { "lastModified": 1652739558, @@ -6702,11 +6719,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "lastModified": 1701336116, + "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", "type": "github" }, "original": { @@ -8865,11 +8882,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "lastModified": 1702339768, + "narHash": "sha256-bqhJHSY5QXnPnfZjRHU0RJjotx9iwUMpDaJVDRuPxic=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "rev": "1a29112fc771bfa37b5f4f6555fe85177b5dd7fe", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 50597fb2d..3719c9475 100644 --- a/flake.nix +++ b/flake.nix @@ -325,8 +325,8 @@ # it (i.e. `nix develop`) default = (psProjectFor (nixpkgsFor system)).devShell; - # This can be used with `nix develop .#hsDevShell - hsDevShell = self.hsFlake.${system}.devShell; + # This can be used with `nix develop .#devPlutipServer` to work with `./plutip-server` + devPlutipServer = ((plutipServerFor system).flake { }).devShell; }); packages = perSystem (system: diff --git a/nix/runtime.nix b/nix/runtime.nix index 9f0ca6d90..5d4f8d760 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -15,9 +15,6 @@ rec { # to change the values after calling `buildCtlRuntime` node = { port = 3001; - # the version of the node to use, corresponds to the image version tag, - # i.e. `"inputoutput/cardano-node:${tag}"` - tag = "1.35.4"; }; ogmios = { port = 1337; }; postgres = { @@ -98,10 +95,9 @@ rec { nodeSocketPath = "/ipc/node.socket"; bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { - # TODO make this use `cardano-node` from flake inputs cardano-node = { service = { - image = "inputoutput/cardano-node:${node.tag}"; + useHostStore = true; ports = [ (bindPort node.port) ]; volumes = [ "${config.cardano-configurations}/network/${config.network.name}/cardano-node:/config" @@ -110,15 +106,15 @@ rec { "${nodeIpcVol}:/ipc" ]; command = [ - "run" - "--config" - "/config/config.json" - "--database-path" - "/data/db" - "--socket-path" - "${nodeSocketPath}" - "--topology" - "/config/topology.json" + "${pkgs.bash}/bin/sh" + "-c" + '' + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json + '' ]; }; }; @@ -152,7 +148,6 @@ rec { ); }; }; - # TODO make this use `ogmios` from flake inputs ogmios = { service = { useHostStore = true; diff --git a/plutip-server/cabal.project b/plutip-server/cabal.project index 8f005a366..c1a038651 100644 --- a/plutip-server/cabal.project +++ b/plutip-server/cabal.project @@ -12,10 +12,6 @@ repository cardano-haskell-packages -- Align index-states with cardano-wallet index-state: 2023-06-06T00:00:00Z -index-state: - , hackage.haskell.org 2023-06-06T00:00:00Z - , cardano-haskell-packages 2023-06-05T06:39:32Z - packages: ./. tests: true @@ -111,9 +107,8 @@ source-repository-package --sha256: 04q58c82wy6x9nkwqbvcxbv6s61fx08h5kf62sb511aqp08id4bb subdir: generated - source-repository-package type: git location: https://github.com/mlabs-haskell/plutip.git - tag: d060231ebf20383cbdc854a4664fd66a5815aedc - --sha256: 0yydxf1f0mdx2ypnas987bnr7fmz0l1255rid5l9f4ajagd4bfry + tag: 1bf0b547cd3689c727586abb8385c008fb2a3d1c + --sha256: sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU= diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal index da121dc1b..495825b76 100644 --- a/plutip-server/plutip-server.cabal +++ b/plutip-server/plutip-server.cabal @@ -87,6 +87,7 @@ executable plutip-server , wai-cors , wai-logger , warp + , wai-extra other-modules: Api diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs index b3c6fcc93..f3de22776 100644 --- a/plutip-server/src/Api.hs +++ b/plutip-server/src/Api.hs @@ -7,6 +7,7 @@ import Api.Handlers ( import Control.Monad.IO.Class (liftIO) import Control.Monad.Reader (runReaderT) import Data.Kind (Type) +import Network.Wai.Middleware.RequestLogger as Logger import Network.Wai.Middleware.Cors qualified as Cors import Servant ( Application, @@ -42,7 +43,7 @@ type Api = :> Post '[JSON] StopClusterResponse app :: Env -> Application -app = Cors.cors (const $ Just policy) . serve api . appServer +app = Logger.logStdout . Cors.cors (const $ Just policy) . serve api . appServer where policy :: Cors.CorsResourcePolicy policy = From 36cf374530cee832f14f4873fd5588f84498f6e6 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 12 Dec 2023 11:42:21 +0100 Subject: [PATCH 451/478] Uses Kupo from flake inputs and fixes cardano-node --- nix/runtime.nix | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 5d4f8d760..1198cf827 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -96,6 +96,12 @@ rec { bindPort = port: "${toString port}:${toString port}"; defaultServices = with config; { cardano-node = { + image.contents = [ + # Note: Required, fixes issue with "Failed to start all.. subscriptions". + # Creates the /etc/services file. + pkgs.iana-etc + pkgs.coreutils + ]; service = { useHostStore = true; ports = [ (bindPort node.port) ]; @@ -109,19 +115,18 @@ rec { "${pkgs.bash}/bin/sh" "-c" '' - ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ - --config /config/config.json \ - --database-path /data/db \ - --socket-path "${nodeSocketPath}" \ - --topology /config/topology.json + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json '' ]; }; }; - # TODO make this use `kupo` from flake inputs kupo = { service = { - image = "cardanosolutions/kupo:${kupo.tag}"; + useHostStore = true; ports = [ (bindPort kupo.port) ]; volumes = [ "${config.cardano-configurations}/network/${config.network.name}:/config" @@ -129,23 +134,18 @@ rec { "${kupoDbVol}:/kupo-db" ]; command = [ - "--node-config" - "/config/cardano-node/config.json" - "--node-socket" - "${nodeSocketPath}" - "--since" - "${kupo.since}" - "--match" - "${"${kupo.match}"}" - "--host" - "0.0.0.0" - "--workdir" - "kupo-db" - ] ++ ( - pkgs.lib.lists.optional kupo.pruneUtxo "--prune-utxo" - ) ++ ( - pkgs.lib.lists.optional kupo.deferDbIndexes "--defer-db-indexes" - ); + "${pkgs.bash}/bin/sh" + "-c" + '' + ${inputs.kupo-nixos.packages.${pkgs.system}.kupo}/bin/kupo \ + --node-config /config/cardano-node/config.json \ + --node-socket "${nodeSocketPath}" \ + --since "${kupo.since}" \ + --match "${kupo.match}" \ + --host "0.0.0.0" \ + --workdir kupo-db ${pkgs.lib.strings.optionalString kupo.pruneUtxo "--prune-utxo"} ${pkgs.lib.strings.optionalString kupo.deferDbIndexes "--defer-db-indexes"} + '' + ]; }; }; ogmios = { From 4808d5891c83c0ac2a2c597885f55686e30c6897 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Tue, 5 Dec 2023 12:10:52 +0100 Subject: [PATCH 452/478] Fix Arion volumes Latest Arion version has a specific `volumes` option --- nix/runtime.nix | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index 1198cf827..c03e5bc57 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -242,18 +242,17 @@ rec { in { project.name = "ctl-runtime"; - docker-compose.raw = pkgs.lib.recursiveUpdate - { - volumes = { - "${nodeDbVol}" = { }; - "${nodeIpcVol}" = { }; - "${kupoDbVol}" = { }; - } // (if config.blockfrost.enable then { - "${dbSyncStateVol}" = { }; - "${dbSyncTmpVol}" = { }; - } else { }); - } - config.extraDockerCompose; + docker-compose = { + raw = config.extraDockerCompose; + volumes = { + "${nodeDbVol}" = { }; + "${nodeIpcVol}" = { }; + "${kupoDbVol}" = { }; + } // pkgs.lib.optionalAttrs config.blockfrost.enable { + "${dbSyncStateVol}" = { }; + "${dbSyncTmpVol}" = { }; + }; + }; services = pkgs.lib.recursiveUpdate defaultServices config.extraServices; }; From 797d4e1da411bc85a825a3657bd13da542d913e6 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 16:16:44 +0100 Subject: [PATCH 453/478] Trying an upgrade of cardano-node v8.1.1 and pinned cardano-configs --- flake.lock | 1819 +++++++++++++++++++++++++++++++++++----------------- flake.nix | 5 +- 2 files changed, 1243 insertions(+), 581 deletions(-) diff --git a/flake.lock b/flake.lock index d4febf83f..44584ccc8 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "lastModified": 1696538731, + "narHash": "sha256-oTsPiABmN7mw9hctagxzNcIDtvmyK4EuBzvMD2iXeeQ=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "rev": "4276a203ed968d067b6c31c943b5bae5fc2ec4a2", "type": "github" }, "original": { @@ -182,7 +182,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -200,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -219,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_9", + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1641404293, @@ -238,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_43" }, "locked": { "lastModified": 1641404293, @@ -257,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1641576265, @@ -350,7 +350,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641576265, @@ -418,7 +418,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_37" }, "locked": { "lastModified": 1646360966, @@ -534,22 +534,22 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_3", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", + "fenix": "fenix_5", "hydra": "hydra_3", - "n2c": "n2c_2", + "n2c": "n2c_3", "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "nixpkgs": "nixpkgs_31", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std_2", + "std": "std_3", "terranix": "terranix_2", "utils": "utils_12" }, @@ -629,12 +629,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy", - "fenix": "fenix_2", + "fenix": "fenix_3", "hydra": "hydra_2", "nix": "nix_2", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_17", "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -663,12 +663,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_5", "deploy": "deploy_3", - "fenix": "fenix_6", + "fenix": "fenix_7", "hydra": "hydra_4", "nix": "nix_9", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_46", "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -768,6 +768,21 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1198,7 +1213,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_25", "ragenix": "ragenix_2" }, "locked": { @@ -1219,7 +1234,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_54", "ragenix": "ragenix_5" }, "locked": { @@ -1247,10 +1262,7 @@ "cardano-node", "nixpkgs" ], - "tullia": [ - "cardano-node", - "tullia" - ] + "tullia": "tullia" }, "locked": { "lastModified": 1679408951, @@ -1269,16 +1281,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, @@ -1333,7 +1346,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1642701714, @@ -1358,7 +1371,7 @@ "customConfig": "customConfig", "em": "em", "empty-flake": "empty-flake", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "hackageNix": "hackageNix", "haskellNix": "haskellNix", "hostNixpkgs": [ @@ -1366,32 +1379,27 @@ "nixpkgs" ], "iohkNix": "iohkNix", - "nix2container": "nix2container", + "nix2container": "nix2container_2", "nixpkgs": [ "cardano-node", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", - "std": [ - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", + "std": "std_2", "utils": "utils_2" }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "lastModified": 1696549777, + "narHash": "sha256-ONCnN1fLtYJB9kXDlUbF6nIjTnlqvI7kfppftrOOWAY=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "rev": "f1ce770834bf7150ca29cb647065c9e62d39be1a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.1.1", + "ref": "8.5.0-pre", "repo": "cardano-node", "type": "github" } @@ -1530,8 +1538,8 @@ "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", + "flake-compat": "flake-compat_9", + "flake-utils": "flake-utils_27", "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", @@ -1577,13 +1585,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", + "flake-compat": "flake-compat_10", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_3", + "n2c": "n2c_4", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_65", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1591,7 +1599,7 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_3", + "std": "std_4", "tullia": "tullia_2" }, "locked": { @@ -1612,14 +1620,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_8", + "devshell": "devshell_9", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_41", "poetry2nix": "poetry2nix", "utils": "utils_16" }, @@ -1637,6 +1645,32 @@ "type": "github" } }, + "crane": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_7", + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1682,7 +1716,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_2" + "yants": "yants_3" }, "locked": { "lastModified": 1648237091, @@ -1719,7 +1753,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_4" + "yants": "yants_5" }, "locked": { "lastModified": 1655854240, @@ -1739,7 +1773,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_11", "haskellNix": "haskellNix_3", "iohkNix": "iohkNix_3", "nixpkgs": [ @@ -1766,8 +1800,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", + "fenix": "fenix_2", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1796,8 +1830,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", + "fenix": "fenix_4", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -1824,8 +1858,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", + "fenix": "fenix_6", + "flake-compat": "flake-compat_7", "nixpkgs": [ "db-sync", "cardano-world", @@ -1855,12 +1889,14 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -1881,6 +1917,21 @@ } }, "devshell_10": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1895,7 +1946,7 @@ "type": "github" } }, - "devshell_11": { + "devshell_12": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1910,7 +1961,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1925,7 +1976,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1940,7 +1991,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -1955,7 +2006,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "inputs": { "flake-utils": [ "db-sync", @@ -1984,9 +2035,9 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "inputs": { - "flake-utils": "flake-utils_31", + "flake-utils": "flake-utils_33", "nixpkgs": [ "db-sync", "cardano-world", @@ -2010,6 +2061,29 @@ } }, "devshell_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2024,7 +2098,7 @@ "type": "github" } }, - "devshell_3": { + "devshell_4": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2039,7 +2113,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_5": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2054,7 +2128,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_6": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2069,7 +2143,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_7": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2084,7 +2158,7 @@ "type": "github" } }, - "devshell_7": { + "devshell_8": { "inputs": { "flake-utils": [ "db-sync", @@ -2115,10 +2189,10 @@ "type": "github" } }, - "devshell_8": { + "devshell_9": { "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1644227066, @@ -2134,31 +2208,18 @@ "type": "github" } }, - "devshell_9": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "dmerge": { "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ], "yants": [ "cardano-node", + "cardano-automation", "tullia", "std", "yants" @@ -2179,6 +2240,40 @@ } }, "dmerge_2": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2209,7 +2304,7 @@ "type": "github" } }, - "dmerge_3": { + "dmerge_4": { "inputs": { "nixlib": [ "db-sync", @@ -2240,7 +2335,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_6", "nix": "nix_7", "nixpkgs": [ @@ -2300,9 +2395,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_56", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -2341,7 +2436,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_59", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2375,9 +2470,28 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_10", "rust-analyzer-src": "rust-analyzer-src" }, + "locked": { + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_15", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2392,7 +2506,7 @@ "type": "github" } }, - "fenix_2": { + "fenix_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -2402,7 +2516,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { "lastModified": 1649226351, @@ -2418,10 +2532,10 @@ "type": "github" } }, - "fenix_3": { + "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "nixpkgs": "nixpkgs_28", + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1645165506, @@ -2437,7 +2551,7 @@ "type": "github" } }, - "fenix_4": { + "fenix_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -2445,7 +2559,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_4" + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1660631227, @@ -2461,10 +2575,10 @@ "type": "github" } }, - "fenix_5": { + "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" + "nixpkgs": "nixpkgs_44", + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1645165506, @@ -2480,7 +2594,7 @@ "type": "github" } }, - "fenix_6": { + "fenix_7": { "inputs": { "nixpkgs": [ "db-sync", @@ -2489,7 +2603,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_6" + "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { "lastModified": 1649226351, @@ -2508,21 +2622,36 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { "flake": false, "locked": { "lastModified": 1647532380, @@ -2539,7 +2668,7 @@ "type": "github" } }, - "flake-compat_11": { + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1696426674, @@ -2555,7 +2684,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2572,7 +2701,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2588,7 +2717,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_15": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2607,16 +2736,16 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -2624,15 +2753,16 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -2640,11 +2770,11 @@ "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -2688,11 +2818,11 @@ "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -2704,15 +2834,15 @@ "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -2720,22 +2850,22 @@ "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_56" + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1655570068, @@ -2767,6 +2897,36 @@ } }, "flake-utils_10": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2781,7 +2941,7 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_13": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2796,7 +2956,7 @@ "type": "github" } }, - "flake-utils_12": { + "flake-utils_14": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2811,7 +2971,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_15": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -2826,7 +2986,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_16": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2841,7 +3001,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_17": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2856,7 +3016,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_18": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2871,7 +3031,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_19": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -2886,13 +3046,13 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -2901,7 +3061,7 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_20": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2916,23 +3076,22 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_21": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "flake-utils_20": { + "flake-utils_22": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2947,7 +3106,7 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_23": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2962,7 +3121,7 @@ "type": "github" } }, - "flake-utils_22": { + "flake-utils_24": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2977,7 +3136,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_25": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -2992,7 +3151,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_26": { "locked": { "lastModified": 1652776076, "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", @@ -3008,7 +3167,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_27": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3023,7 +3182,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_28": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3038,7 +3197,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_29": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3053,13 +3212,13 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3068,13 +3227,13 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_30": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3083,13 +3242,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_31": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -3098,7 +3257,7 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_32": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3113,7 +3272,7 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_33": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3128,7 +3287,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_34": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3143,7 +3302,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_35": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3160,26 +3319,27 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3190,11 +3350,11 @@ }, "flake-utils_6": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3205,11 +3365,11 @@ }, "flake-utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -3235,11 +3395,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3266,7 +3426,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -3449,7 +3609,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_2", "utils": "utils" }, "locked": { @@ -3485,11 +3645,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1702340598, - "narHash": "sha256-CC0HI+6iKPtH+8r/ZfcpW5v/OYvL7zMwpr0xfkXV1zU=", + "lastModified": 1702426969, + "narHash": "sha256-rbhpiqSBFwLxTO4Qx2sJm7BzBQo9MidVWlL9W21HHy4=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "24617c569995e38bf3b83b48eec6628a50fdb4fb", + "rev": "524b4a4d0e06119cd226aa9f5d57986547bd29b4", "type": "github" }, "original": { @@ -3501,11 +3661,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1693182531, + "narHash": "sha256-OejogS2E745biMj8NuUYatN7uoMRsg7giVnRQwfiays=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "rev": "34cd9fe31d210f2ff041f490eaa4029f6b2812c4", "type": "github" }, "original": { @@ -3600,7 +3760,7 @@ "cabal-34": "cabal-34_2", "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_18", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls_2", @@ -3647,7 +3807,7 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", + "flake-utils": "flake-utils_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", @@ -3692,7 +3852,7 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", + "flake-compat": "flake-compat_13", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "ghc98X": "ghc98X", "ghc99": "ghc99", @@ -3700,7 +3860,7 @@ "hackage-nix" ], "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", + "hls-2.0": "hls-2.0_2", "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", @@ -3715,18 +3875,18 @@ "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2305": "nixpkgs-2305_2", "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", "stackage": "stackage_6" }, "locked": { - "lastModified": 1702342211, - "narHash": "sha256-cVitlW0guoMsB7oZZt1bJU2XpFN4uQciO/z/ZQBaV7g=", + "lastModified": 1702428573, + "narHash": "sha256-KpY2FsKQs6vUABgQFjUCqaTPVN5dStNjt0Dxjw7CA9g=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "2a1000b835ea4f8186b79e5926c99a80f9e354fc", + "rev": "78c22a52a0d80d7e29c12f74df871ebb58a0795d", "type": "github" }, "original": { @@ -3742,7 +3902,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_7", @@ -3782,14 +3942,15 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_4", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", "hackage": [ "cardano-node", "hackageNix" ], "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -3802,16 +3963,17 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1690764022, + "narHash": "sha256-+BFPab4/766AF+jfEAo6l3AZH5Zs1lbba2EVOcGhid0=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "rev": "0f2a6a9dfad636680367c0462dcd50ee64a9bddc", "type": "github" }, "original": { @@ -3827,7 +3989,7 @@ "cabal-34": "cabal-34_3", "cabal-36": "cabal-36_3", "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", + "flake-utils": "flake-utils_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_3", @@ -3867,7 +4029,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_5", @@ -3899,10 +4061,29 @@ "type": "github" } }, - "hls-1.10": { - "flake": false, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_8" + }, "locked": { - "lastModified": 1680000865, + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", "owner": "haskell", "repo": "haskell-language-server", @@ -3950,6 +4131,23 @@ "type": "github" } }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.2": { "flake": false, "locked": { @@ -4359,6 +4557,7 @@ "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -4378,6 +4577,29 @@ "type": "github" } }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -4578,9 +4800,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_24", "utils": "utils_8" }, "locked": { @@ -4599,9 +4821,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_15", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_53", "utils": "utils_22" }, "locked": { @@ -4697,11 +4919,11 @@ "sodium": "sodium" }, "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "lastModified": 1696445248, + "narHash": "sha256-2B/fqwyaRAaHVmkf15tKwkFbL5O46TmMw+Rc2viUPEY=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "rev": "e32040e84180b3c27c0f13587025f6a17a4da520", "type": "github" }, "original": { @@ -4757,11 +4979,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -5125,23 +5347,25 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", "owner": "nlewo", "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", "type": "github" }, "original": { @@ -5152,8 +5376,35 @@ }, "n2c_2": { "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_29" }, "locked": { "lastModified": 1650568002, @@ -5169,10 +5420,10 @@ "type": "github" } }, - "n2c_3": { + "n2c_4": { "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1655533513, @@ -5191,7 +5442,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_6", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -5211,7 +5462,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": [ "db-sync", "cardano-world", @@ -5262,9 +5513,10 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat", "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "nix2container", "flake-utils" @@ -5272,11 +5524,13 @@ "gomod2nix": "gomod2nix", "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ], "nixpkgs-lib": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ] @@ -5377,15 +5631,15 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -5396,15 +5650,15 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5415,8 +5669,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" + "flake-utils": "flake-utils_32", + "nixpkgs": "nixpkgs_67" }, "locked": { "lastModified": 1653427219, @@ -5436,7 +5690,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" + "nixpkgs": "nixpkgs_47" }, "locked": { "lastModified": 1604400356, @@ -5455,7 +5709,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", + "nixpkgs": "nixpkgs_49", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -5475,7 +5729,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_61", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -5496,7 +5750,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_63", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -5517,7 +5771,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_70", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -5538,7 +5792,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -5559,7 +5813,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_70", + "nixpkgs": "nixpkgs_72", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -5580,7 +5834,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", + "nixpkgs": "nixpkgs_16", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -5601,7 +5855,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1604400356, @@ -5620,7 +5874,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_20", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -5640,7 +5894,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", + "nixpkgs": "nixpkgs_30", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -5661,7 +5915,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_32", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -5681,7 +5935,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", + "nixpkgs": "nixpkgs_39", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -5702,7 +5956,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", + "nixpkgs": "nixpkgs_40", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -5723,7 +5977,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_45", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -5745,29 +5999,32 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixago-exts": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", "owner": "nix-community", "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { @@ -5807,6 +6064,38 @@ } }, "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -5838,7 +6127,7 @@ "type": "github" } }, - "nixago_3": { + "nixago_4": { "inputs": { "flake-utils": [ "db-sync", @@ -6315,11 +6604,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1685314633, + "narHash": "sha256-8LXBPqTQXl5ofkjpJ18JcbmLJ/lWDoMxtUwiDYv0wro=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "c8a17ce7abc03c50cd072e9e6c9b389c5f61836b", "type": "github" }, "original": { @@ -6346,6 +6635,22 @@ } }, "nixpkgs-2305": { + "locked": { + "lastModified": 1685338297, + "narHash": "sha256-+Aq4O0Jn1W1q927ZHc3Zn6RO7bwQGmb6O8xYoGy0KrM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6287b47dbfabbb8bfbb9b1b53d198ad58a774de4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { "locked": { "lastModified": 1701362232, "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", @@ -6607,11 +6912,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "lastModified": 1685347552, + "narHash": "sha256-9woSppRyUFo26yUffORTzttJ+apOt8MmCv6RxpPNTU4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "f2f1ec390714d303cf84ba086e34e45b450dd8c4", "type": "github" }, "original": { @@ -6750,6 +7055,36 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6765,7 +7100,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_13": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6779,7 +7114,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_14": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6795,7 +7130,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_15": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6811,7 +7146,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_16": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6826,7 +7161,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_17": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -6842,7 +7177,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_18": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -6857,7 +7192,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_19": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -6873,7 +7208,23 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_2": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6888,7 +7239,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_21": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -6904,21 +7255,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_20": { + "nixpkgs_22": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -6934,7 +7271,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_23": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6950,7 +7287,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_24": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -6966,7 +7303,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_25": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -6982,7 +7319,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6998,7 +7335,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_27": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7013,7 +7350,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_28": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7029,7 +7366,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_29": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7044,7 +7381,22 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_3": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7059,7 +7411,7 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_31": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7075,23 +7427,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_32": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7106,7 +7442,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_33": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7122,7 +7458,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_34": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7138,7 +7474,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_35": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7154,7 +7490,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_36": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7170,7 +7506,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_37": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7186,7 +7522,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_38": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7202,7 +7538,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_39": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7217,7 +7553,23 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_4": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7232,7 +7584,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_41": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7248,22 +7600,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_42": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7277,7 +7614,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_43": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7293,7 +7630,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_44": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7309,7 +7646,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_45": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7324,7 +7661,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_46": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7340,7 +7677,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_47": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7355,7 +7692,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_48": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7371,7 +7708,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_49": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7386,7 +7723,21 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_5": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7402,7 +7753,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_51": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7418,23 +7769,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7450,7 +7785,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_53": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7466,7 +7801,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_54": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7482,7 +7817,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7498,7 +7833,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_56": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7514,7 +7849,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_57": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7528,7 +7863,7 @@ "type": "indirect" } }, - "nixpkgs_56": { + "nixpkgs_58": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7544,7 +7879,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_59": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7558,7 +7893,23 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_6": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7572,7 +7923,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7587,22 +7938,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_62": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7617,7 +7953,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_63": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7632,7 +7968,7 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_64": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7647,7 +7983,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_65": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7663,7 +7999,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_66": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7679,7 +8015,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_67": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7694,7 +8030,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_68": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -7710,7 +8046,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_69": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -7726,7 +8062,22 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_7": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7741,7 +8092,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_71": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -7757,23 +8108,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_72": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7790,38 +8125,39 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nomad": { "inputs": { "nix": "nix_3", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_19", "utils": "utils_4" }, "locked": { @@ -7841,10 +8177,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive", "nix": "nix_4", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_21", "utils": "utils_5" }, "locked": { @@ -7863,10 +8199,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_4", "nix": "nix_6", - "nixpkgs": "nixpkgs_31", + "nixpkgs": "nixpkgs_33", "utils": "utils_10" }, "locked": { @@ -7885,10 +8221,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_9", "nix": "nix_11", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_50", "utils": "utils_19" }, "locked": { @@ -7907,9 +8243,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_4", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_22", "utils": "utils_6" }, "locked": { @@ -7928,9 +8264,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_6", + "devshell": "devshell_7", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_34", "utils": "utils_11" }, "locked": { @@ -7949,9 +8285,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_14", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_51", "utils": "utils_20" }, "locked": { @@ -7971,7 +8307,7 @@ "nomad_2": { "inputs": { "nix": "nix_10", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_48", "utils": "utils_18" }, "locked": { @@ -7991,11 +8327,26 @@ }, "nosys": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", "owner": "divnix", "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { @@ -8024,12 +8375,12 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_5", + "blank": "blank_6", "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_14", "haskell-nix": [ "haskell-nix" ], @@ -8213,48 +8564,218 @@ "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys", + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-node", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "blank" + ], + "std": [ + "cardano-node", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, @@ -8264,7 +8785,7 @@ "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_15", "hackage-nix": [ "hackage-nix" ], @@ -8295,7 +8816,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -8321,8 +8842,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_57" }, "locked": { "lastModified": 1639823344, @@ -8341,9 +8862,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -8362,9 +8883,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -8383,9 +8904,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_14", + "nixpkgs": "nixpkgs_35", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8404,9 +8925,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8425,9 +8946,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -8451,7 +8972,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_12", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", @@ -8467,6 +8988,23 @@ } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8483,7 +9021,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8500,7 +9038,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8517,7 +9055,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8534,7 +9072,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8551,7 +9089,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8569,6 +9107,37 @@ } }, "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -8603,7 +9172,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -8636,7 +9205,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -8667,7 +9236,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -8700,7 +9269,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -8802,11 +9371,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1690762200, + "narHash": "sha256-UB02izyJREbLmS7+pyJvKF3mDePI6fTasqtg3fltJA0=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "c91713e7ca38abba6a90686df895acda53fd5038", "type": "github" }, "original": { @@ -8882,11 +9451,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1702339768, - "narHash": "sha256-bqhJHSY5QXnPnfZjRHU0RJjotx9iwUMpDaJVDRuPxic=", + "lastModified": 1702426166, + "narHash": "sha256-j7wjtnR3HjT+OOq4GOWQMG+LufhAmz7CNDTJDW7ouXE=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "1a29112fc771bfa37b5f4f6555fe85177b5dd7fe", + "rev": "8f4b266959e3087825631fb8c7b2ef2f4c915ed9", "type": "github" }, "original": { @@ -8915,6 +9484,7 @@ "inputs": { "arion": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" @@ -8922,32 +9492,35 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_3", "incl": "incl", "makes": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "microvm": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_8", - "nosys": "nosys", + "nixpkgs": "nixpkgs_4", + "paisano": "paisano", + "paisano-tui": "paisano-tui", "yants": "yants" }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", "owner": "divnix", "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { @@ -8958,13 +9531,58 @@ }, "std_2": { "inputs": { - "devshell": "devshell_7", + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_6", + "haumea": "haumea", + "incl": "incl_2", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", - "yants": "yants_3" + "nixpkgs": "nixpkgs_9", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "devshell": "devshell_8", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_15", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_36", + "yants": "yants_4" }, "locked": { "lastModified": 1661370377, @@ -8980,15 +9598,15 @@ "type": "github" } }, - "std_3": { + "std_4": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_16", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_31", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_66", + "yants": "yants_6" }, "locked": { "lastModified": 1661367957, @@ -9004,11 +9622,11 @@ "type": "github" } }, - "std_4": { + "std_5": { "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "devshell": "devshell_17", + "nixpkgs": "nixpkgs_69", + "yants": "yants_7" }, "locked": { "lastModified": 1652784712, @@ -9204,10 +9822,25 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1654211622, @@ -9228,7 +9861,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_11", "nixpkgs": [ "db-sync", "cardano-world", @@ -9302,7 +9935,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_16", "nixpkgs": [ "db-sync", "cardano-world", @@ -9329,7 +9962,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_22", "nixpkgs": [ "db-sync", "cardano-world", @@ -9356,16 +9989,20 @@ "tullia": { "inputs": { "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "nixpkgs" + ], "std": "std" }, "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", "owner": "input-output-hk", "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", "type": "github" }, "original": { @@ -9377,8 +10014,8 @@ "tullia_2": { "inputs": { "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" + "nixpkgs": "nixpkgs_68", + "std": "std_5" }, "locked": { "lastModified": 1657811465, @@ -9777,6 +10414,7 @@ "inputs": { "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -9798,7 +10436,30 @@ }, "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1645126146, @@ -9814,7 +10475,7 @@ "type": "github" } }, - "yants_3": { + "yants_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -9838,9 +10499,9 @@ "type": "github" } }, - "yants_4": { + "yants_5": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1645126146, @@ -9856,7 +10517,7 @@ "type": "github" } }, - "yants_5": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -9879,7 +10540,7 @@ "type": "github" } }, - "yants_6": { + "yants_7": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index 3719c9475..960061f61 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; + cardano-node.url = "github:input-output-hk/cardano-node/8.5.0-pre"; ogmios-nixos = { url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; @@ -61,9 +61,10 @@ }; # Repository with network parameters + # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations"; + url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; flake = false; }; easy-purescript-nix = { From 72ccf4f50e2c5ff92a958882717ff1cf09df0622 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 11 Dec 2023 17:23:37 +0100 Subject: [PATCH 454/478] Trying out plutip?ref=gergley/version-bump From 3af72b14a37ec9a304507a88c357d0060e85177c Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 12 Dec 2023 11:21:05 +0100 Subject: [PATCH 455/478] Uses cardano-node 8.1.1 from flake inputs in all places (no dockerhub) --- flake.lock | 1798 +++++++++++++++-------------------------------- flake.nix | 2 +- nix/runtime.nix | 10 +- 3 files changed, 575 insertions(+), 1235 deletions(-) diff --git a/flake.lock b/flake.lock index 44584ccc8..12559086c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1696538731, - "narHash": "sha256-oTsPiABmN7mw9hctagxzNcIDtvmyK4EuBzvMD2iXeeQ=", + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "4276a203ed968d067b6c31c943b5bae5fc2ec4a2", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", "type": "github" }, "original": { @@ -182,7 +182,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1641576265, @@ -200,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1641404293, @@ -219,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_9", - "nixpkgs": "nixpkgs_14" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -238,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_43" + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -257,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -350,7 +350,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_42" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -418,7 +418,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_37" + "nixpkgs": "nixpkgs_35" }, "locked": { "lastModified": 1646360966, @@ -534,22 +534,22 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_3", + "blank": "blank_2", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_5", + "fenix": "fenix_4", "hydra": "hydra_3", - "n2c": "n2c_3", + "n2c": "n2c_2", "nix": "nix_5", - "nixpkgs": "nixpkgs_31", + "nixpkgs": "nixpkgs_29", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std_3", + "std": "std_2", "terranix": "terranix_2", "utils": "utils_12" }, @@ -629,12 +629,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_4", + "blank": "blank_3", "deploy": "deploy", - "fenix": "fenix_3", + "fenix": "fenix_2", "hydra": "hydra_2", "nix": "nix_2", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_15", "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -663,12 +663,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_5", + "blank": "blank_4", "deploy": "deploy_3", - "fenix": "fenix_7", + "fenix": "fenix_6", "hydra": "hydra_4", "nix": "nix_9", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_44", "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -768,21 +768,6 @@ "type": "github" } }, - "blank_6": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1213,7 +1198,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_25", + "nixpkgs": "nixpkgs_23", "ragenix": "ragenix_2" }, "locked": { @@ -1234,7 +1219,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_54", + "nixpkgs": "nixpkgs_52", "ragenix": "ragenix_5" }, "locked": { @@ -1262,7 +1247,10 @@ "cardano-node", "nixpkgs" ], - "tullia": "tullia" + "tullia": [ + "cardano-node", + "tullia" + ] }, "locked": { "lastModified": 1679408951, @@ -1346,7 +1334,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1642701714, @@ -1371,7 +1359,7 @@ "customConfig": "customConfig", "em": "em", "empty-flake": "empty-flake", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat", "hackageNix": "hackageNix", "haskellNix": "haskellNix", "hostNixpkgs": [ @@ -1379,27 +1367,32 @@ "nixpkgs" ], "iohkNix": "iohkNix", - "nix2container": "nix2container_2", + "nix2container": "nix2container", "nixpkgs": [ "cardano-node", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", - "std": "std_2", + "std": [ + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", "utils": "utils_2" }, "locked": { - "lastModified": 1696549777, - "narHash": "sha256-ONCnN1fLtYJB9kXDlUbF6nIjTnlqvI7kfppftrOOWAY=", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "f1ce770834bf7150ca29cb647065c9e62d39be1a", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.5.0-pre", + "ref": "8.1.1", "repo": "cardano-node", "type": "github" } @@ -1538,8 +1531,8 @@ "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_9", - "flake-utils": "flake-utils_27", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", @@ -1585,13 +1578,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_9", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_4", + "n2c": "n2c_3", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_65", + "nixpkgs": "nixpkgs_63", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1599,7 +1592,7 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_4", + "std": "std_3", "tullia": "tullia_2" }, "locked": { @@ -1620,14 +1613,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_9", + "devshell": "devshell_8", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_41", + "nixpkgs": "nixpkgs_39", "poetry2nix": "poetry2nix", "utils": "utils_16" }, @@ -1645,32 +1638,6 @@ "type": "github" } }, - "crane": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_7", - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1716,7 +1683,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_3" + "yants": "yants_2" }, "locked": { "lastModified": 1648237091, @@ -1753,7 +1720,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_5" + "yants": "yants_4" }, "locked": { "lastModified": 1655854240, @@ -1773,7 +1740,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_3", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_10", "haskellNix": "haskellNix_3", "iohkNix": "iohkNix_3", "nixpkgs": [ @@ -1800,8 +1767,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix_2", - "flake-compat": "flake-compat_5", + "fenix": "fenix", + "flake-compat": "flake-compat_4", "nixpkgs": [ "db-sync", "cardano-world", @@ -1830,8 +1797,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_4", - "flake-compat": "flake-compat_6", + "fenix": "fenix_3", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1858,8 +1825,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_6", - "flake-compat": "flake-compat_7", + "fenix": "fenix_5", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -1889,14 +1856,12 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -1917,21 +1882,6 @@ } }, "devshell_10": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1946,7 +1896,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1961,7 +1911,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_12": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1976,7 +1926,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_13": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1991,7 +1941,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_14": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2006,7 +1956,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_15": { "inputs": { "flake-utils": [ "db-sync", @@ -2035,9 +1985,9 @@ "type": "github" } }, - "devshell_17": { + "devshell_16": { "inputs": { - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_31", "nixpkgs": [ "db-sync", "cardano-world", @@ -2061,29 +2011,6 @@ } }, "devshell_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_3": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2098,7 +2025,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_3": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2113,7 +2040,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_4": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2128,7 +2055,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_5": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2143,7 +2070,7 @@ "type": "github" } }, - "devshell_7": { + "devshell_6": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2158,7 +2085,7 @@ "type": "github" } }, - "devshell_8": { + "devshell_7": { "inputs": { "flake-utils": [ "db-sync", @@ -2189,10 +2116,10 @@ "type": "github" } }, - "devshell_9": { + "devshell_8": { "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_38" + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" }, "locked": { "lastModified": 1644227066, @@ -2208,18 +2135,31 @@ "type": "github" } }, + "devshell_9": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "dmerge": { "inputs": { "nixlib": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ], "yants": [ "cardano-node", - "cardano-automation", "tullia", "std", "yants" @@ -2240,40 +2180,6 @@ } }, "dmerge_2": { - "inputs": { - "haumea": [ - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", - "type": "github" - }, - "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", - "type": "github" - } - }, - "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2304,7 +2210,7 @@ "type": "github" } }, - "dmerge_4": { + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2335,7 +2241,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_9", "inclusive": "inclusive_6", "nix": "nix_7", "nixpkgs": [ @@ -2395,9 +2301,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_56", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -2436,7 +2342,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_57", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2470,28 +2376,9 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_13", "rust-analyzer-src": "rust-analyzer-src" }, - "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_15", - "rust-analyzer-src": "rust-analyzer-src_2" - }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2506,7 +2393,7 @@ "type": "github" } }, - "fenix_3": { + "fenix_2": { "inputs": { "nixpkgs": [ "db-sync", @@ -2516,7 +2403,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_3" + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { "lastModified": 1649226351, @@ -2532,10 +2419,10 @@ "type": "github" } }, - "fenix_4": { + "fenix_3": { "inputs": { - "nixpkgs": "nixpkgs_28", - "rust-analyzer-src": "rust-analyzer-src_4" + "nixpkgs": "nixpkgs_26", + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { "lastModified": 1645165506, @@ -2551,7 +2438,7 @@ "type": "github" } }, - "fenix_5": { + "fenix_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -2559,7 +2446,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_5" + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1660631227, @@ -2575,10 +2462,10 @@ "type": "github" } }, - "fenix_6": { + "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_44", - "rust-analyzer-src": "rust-analyzer-src_6" + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1645165506, @@ -2594,7 +2481,7 @@ "type": "github" } }, - "fenix_7": { + "fenix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -2603,7 +2490,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_7" + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1649226351, @@ -2622,36 +2509,21 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } }, "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_11": { "flake": false, "locked": { "lastModified": 1647532380, @@ -2668,7 +2540,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_11": { "flake": false, "locked": { "lastModified": 1696426674, @@ -2684,7 +2556,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2701,7 +2573,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2717,7 +2589,7 @@ "type": "github" } }, - "flake-compat_15": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2734,23 +2606,6 @@ } }, "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2767,14 +2622,14 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -2783,7 +2638,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2799,7 +2654,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2815,7 +2670,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_6": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2831,7 +2686,7 @@ "type": "github" } }, - "flake-compat_8": { + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1641205782, @@ -2847,7 +2702,7 @@ "type": "github" } }, - "flake-compat_9": { + "flake-compat_8": { "flake": false, "locked": { "lastModified": 1635892615, @@ -2863,9 +2718,25 @@ "type": "github" } }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_58" + "nixpkgs": "nixpkgs_56" }, "locked": { "lastModified": 1655570068, @@ -2897,36 +2768,6 @@ } }, "flake-utils_10": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_11": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_12": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2941,7 +2782,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_11": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2956,7 +2797,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2971,7 +2812,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_13": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -2986,7 +2827,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_14": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -3001,7 +2842,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_15": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3016,7 +2857,7 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_16": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3031,7 +2872,7 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_17": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -3046,13 +2887,13 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_18": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3061,7 +2902,7 @@ "type": "github" } }, - "flake-utils_20": { + "flake-utils_19": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3076,22 +2917,23 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, - "flake-utils_22": { + "flake-utils_20": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -3106,7 +2948,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3121,7 +2963,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_22": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3136,7 +2978,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_23": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -3151,7 +2993,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_24": { "locked": { "lastModified": 1652776076, "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", @@ -3167,7 +3009,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_25": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3182,7 +3024,7 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_26": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3197,7 +3039,7 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_27": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3212,13 +3054,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_28": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3227,13 +3069,13 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_29": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -3242,13 +3084,13 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_3": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3257,7 +3099,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_30": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3272,7 +3114,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_31": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3287,7 +3129,7 @@ "type": "github" } }, - "flake-utils_34": { + "flake-utils_32": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3302,7 +3144,7 @@ "type": "github" } }, - "flake-utils_35": { + "flake-utils_33": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3319,27 +3161,26 @@ }, "flake-utils_4": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3350,11 +3191,11 @@ }, "flake-utils_6": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3365,11 +3206,11 @@ }, "flake-utils_7": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3395,11 +3236,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -3426,7 +3267,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_10", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -3609,7 +3450,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_5", "utils": "utils" }, "locked": { @@ -3661,11 +3502,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1693182531, - "narHash": "sha256-OejogS2E745biMj8NuUYatN7uoMRsg7giVnRQwfiays=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "34cd9fe31d210f2ff041f490eaa4029f6b2812c4", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { @@ -3760,7 +3601,7 @@ "cabal-34": "cabal-34_2", "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_18", + "flake-utils": "flake-utils_16", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls_2", @@ -3807,7 +3648,7 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_29", + "flake-utils": "flake-utils_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", @@ -3852,7 +3693,7 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_12", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "ghc98X": "ghc98X", "ghc99": "ghc99", @@ -3860,7 +3701,7 @@ "hackage-nix" ], "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", + "hls-2.0": "hls-2.0", "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", @@ -3875,7 +3716,7 @@ "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", @@ -3902,7 +3743,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_33", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_7", @@ -3942,15 +3783,14 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_4", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", "hackage": [ "cardano-node", "hackageNix" ], "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -3963,17 +3803,16 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1690764022, - "narHash": "sha256-+BFPab4/766AF+jfEAo6l3AZH5Zs1lbba2EVOcGhid0=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "0f2a6a9dfad636680367c0462dcd50ee64a9bddc", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { @@ -3989,7 +3828,7 @@ "cabal-34": "cabal-34_3", "cabal-36": "cabal-36_3", "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_28", + "flake-utils": "flake-utils_26", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_3", @@ -4029,7 +3868,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_34", + "flake-utils": "flake-utils_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_5", @@ -4061,27 +3900,8 @@ "type": "github" } }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_8" - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, + "hls-1.10": { + "flake": false, "locked": { "lastModified": 1680000865, "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", @@ -4131,23 +3951,6 @@ "type": "github" } }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-2.2": { "flake": false, "locked": { @@ -4557,7 +4360,6 @@ "inputs": { "nixlib": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -4577,29 +4379,6 @@ "type": "github" } }, - "incl_2": { - "inputs": { - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -4800,9 +4579,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_4", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_24", + "nixpkgs": "nixpkgs_22", "utils": "utils_8" }, "locked": { @@ -4821,9 +4600,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_14", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_51", "utils": "utils_22" }, "locked": { @@ -4919,11 +4698,11 @@ "sodium": "sodium" }, "locked": { - "lastModified": 1696445248, - "narHash": "sha256-2B/fqwyaRAaHVmkf15tKwkFbL5O46TmMw+Rc2viUPEY=", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "e32040e84180b3c27c0f13587025f6a17a4da520", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { @@ -4979,11 +4758,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -5347,25 +5126,23 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", "owner": "nlewo", "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { @@ -5376,35 +5153,8 @@ }, "n2c_2": { "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_13", - "nixpkgs": "nixpkgs_29" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1650568002, @@ -5420,10 +5170,10 @@ "type": "github" } }, - "n2c_4": { + "n2c_3": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1655533513, @@ -5442,7 +5192,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_3", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -5462,7 +5212,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_11", "inclusive": [ "db-sync", "cardano-world", @@ -5513,10 +5263,9 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_3", "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "nix2container", "flake-utils" @@ -5524,13 +5273,11 @@ "gomod2nix": "gomod2nix", "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "nixpkgs" ], "nixpkgs-lib": [ "cardano-node", - "cardano-automation", "tullia", "nixpkgs" ] @@ -5631,15 +5378,15 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5650,15 +5397,15 @@ }, "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_7" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -5669,8 +5416,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": "nixpkgs_67" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1653427219, @@ -5690,7 +5437,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_47" + "nixpkgs": "nixpkgs_45" }, "locked": { "lastModified": 1604400356, @@ -5709,7 +5456,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_47", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -5729,7 +5476,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_59", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -5750,7 +5497,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_61", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -5771,7 +5518,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_70", + "nixpkgs": "nixpkgs_68", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -5792,7 +5539,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_69", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -5813,7 +5560,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_70", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -5834,7 +5581,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_14", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -5855,7 +5602,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1604400356, @@ -5874,7 +5621,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_18", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -5894,7 +5641,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_28", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -5915,7 +5662,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_30", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -5935,7 +5682,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_37", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -5956,7 +5703,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_40", + "nixpkgs": "nixpkgs_38", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -5977,7 +5724,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_45", + "nixpkgs": "nixpkgs_43", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -5999,32 +5746,29 @@ "inputs": { "flake-utils": [ "cardano-node", - "cardano-automation", "tullia", "std", "flake-utils" ], "nixago-exts": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { @@ -6064,38 +5808,6 @@ } }, "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -6127,7 +5839,7 @@ "type": "github" } }, - "nixago_4": { + "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -6604,11 +6316,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1685314633, - "narHash": "sha256-8LXBPqTQXl5ofkjpJ18JcbmLJ/lWDoMxtUwiDYv0wro=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c8a17ce7abc03c50cd072e9e6c9b389c5f61836b", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { @@ -6635,22 +6347,6 @@ } }, "nixpkgs-2305": { - "locked": { - "lastModified": 1685338297, - "narHash": "sha256-+Aq4O0Jn1W1q927ZHc3Zn6RO7bwQGmb6O8xYoGy0KrM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6287b47dbfabbb8bfbb9b1b53d198ad58a774de4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { "locked": { "lastModified": 1701362232, "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", @@ -6912,11 +6608,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1685347552, - "narHash": "sha256-9woSppRyUFo26yUffORTzttJ+apOt8MmCv6RxpPNTU4=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f2f1ec390714d303cf84ba086e34e45b450dd8c4", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { @@ -7055,36 +6751,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7100,7 +6766,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_11": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7114,7 +6780,7 @@ "type": "indirect" } }, - "nixpkgs_14": { + "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7130,7 +6796,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_13": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7146,7 +6812,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_14": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7161,7 +6827,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_15": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7177,7 +6843,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_16": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7192,7 +6858,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_17": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7208,23 +6874,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7239,7 +6889,7 @@ "type": "indirect" } }, - "nixpkgs_21": { + "nixpkgs_19": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7255,7 +6905,21 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_2": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7271,7 +6935,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_21": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7287,7 +6951,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_22": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7303,7 +6967,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_23": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7319,7 +6983,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_24": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7335,7 +6999,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_25": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7350,7 +7014,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7366,7 +7030,7 @@ "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_27": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7381,22 +7045,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_28": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7411,7 +7060,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_29": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7427,7 +7076,23 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_3": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7442,7 +7107,7 @@ "type": "indirect" } }, - "nixpkgs_33": { + "nixpkgs_31": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7458,7 +7123,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_32": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7474,7 +7139,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_33": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7490,7 +7155,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_34": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7506,7 +7171,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_35": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7522,7 +7187,7 @@ "type": "github" } }, - "nixpkgs_38": { + "nixpkgs_36": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7538,7 +7203,7 @@ "type": "github" } }, - "nixpkgs_39": { + "nixpkgs_37": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7553,23 +7218,7 @@ "type": "indirect" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_38": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7584,7 +7233,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_39": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7600,7 +7249,22 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_4": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7614,7 +7278,7 @@ "type": "indirect" } }, - "nixpkgs_43": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7630,7 +7294,7 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_42": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7646,7 +7310,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7661,7 +7325,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_44": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7677,7 +7341,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_45": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7692,7 +7356,7 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_46": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7708,7 +7372,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_47": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7723,21 +7387,7 @@ "type": "indirect" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_50": { + "nixpkgs_48": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7753,7 +7403,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_49": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7769,7 +7419,23 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_5": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7785,7 +7451,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_51": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7801,7 +7467,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_52": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7817,7 +7483,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_53": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7833,7 +7499,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_54": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7849,7 +7515,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_55": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7863,7 +7529,7 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_56": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7879,7 +7545,7 @@ "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_57": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7893,23 +7559,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_58": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7923,7 +7573,7 @@ "type": "indirect" } }, - "nixpkgs_61": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7938,7 +7588,22 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_6": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7953,7 +7618,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7968,7 +7633,7 @@ "type": "indirect" } }, - "nixpkgs_64": { + "nixpkgs_62": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7983,7 +7648,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_63": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7999,7 +7664,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_64": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -8015,7 +7680,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_65": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -8030,7 +7695,7 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_66": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -8046,7 +7711,7 @@ "type": "github" } }, - "nixpkgs_69": { + "nixpkgs_67": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -8062,22 +7727,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8092,7 +7742,7 @@ "type": "indirect" } }, - "nixpkgs_71": { + "nixpkgs_69": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -8108,7 +7758,23 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_7": { + "locked": { + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -8125,39 +7791,38 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nomad": { "inputs": { "nix": "nix_3", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_17", "utils": "utils_4" }, "locked": { @@ -8177,10 +7842,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_2", "inclusive": "inclusive", "nix": "nix_4", - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_19", "utils": "utils_5" }, "locked": { @@ -8199,10 +7864,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_6", + "devshell": "devshell_5", "inclusive": "inclusive_4", "nix": "nix_6", - "nixpkgs": "nixpkgs_33", + "nixpkgs": "nixpkgs_31", "utils": "utils_10" }, "locked": { @@ -8221,10 +7886,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_12", "inclusive": "inclusive_9", "nix": "nix_11", - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_48", "utils": "utils_19" }, "locked": { @@ -8243,9 +7908,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_3", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_20", "utils": "utils_6" }, "locked": { @@ -8264,9 +7929,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_7", + "devshell": "devshell_6", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_34", + "nixpkgs": "nixpkgs_32", "utils": "utils_11" }, "locked": { @@ -8285,9 +7950,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_13", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_49", "utils": "utils_20" }, "locked": { @@ -8307,7 +7972,7 @@ "nomad_2": { "inputs": { "nix": "nix_10", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_46", "utils": "utils_18" }, "locked": { @@ -8327,26 +7992,11 @@ }, "nosys": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", "owner": "divnix", "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_2": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { @@ -8375,12 +8025,12 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_6", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_13", "haskell-nix": [ "haskell-nix" ], @@ -8560,222 +8210,52 @@ "repo": "ops-lib", "type": "github" } - }, - "ops-lib_2": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_3": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_4": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "paisano": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys", - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "core", - "type": "github" - } - }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "actions", - "type": "github" - } - }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-node", - "std" - ] - }, - "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "type": "github" - } - }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-node", - "cardano-automation", - "tullia", - "std" - ] - }, + }, + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "blank" - ], - "std": [ - "cardano-node", - "std" - ] - }, + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "ops-lib_4": { + "flake": false, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, @@ -8785,7 +8265,7 @@ "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_15", + "flake-compat": "flake-compat_14", "hackage-nix": [ "hackage-nix" ], @@ -8816,7 +8296,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_19", + "flake-utils": "flake-utils_17", "nixpkgs": [ "db-sync", "cardano-world", @@ -8842,8 +8322,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_57" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1639823344, @@ -8862,9 +8342,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_23", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", + "rust-overlay": "rust-overlay" }, "locked": { "lastModified": 1641119695, @@ -8883,9 +8363,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1645147603, @@ -8904,9 +8384,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_14", - "nixpkgs": "nixpkgs_35", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1641119695, @@ -8925,9 +8405,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_52", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8946,9 +8426,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55", - "rust-overlay": "rust-overlay_6" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1645147603, @@ -8972,7 +8452,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_12", + "flake-compat": "flake-compat_11", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", @@ -8988,23 +8468,6 @@ } }, "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9021,7 +8484,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1649178056, @@ -9038,7 +8501,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9055,7 +8518,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1660579619, @@ -9072,7 +8535,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1645024434, @@ -9089,7 +8552,7 @@ "type": "github" } }, - "rust-analyzer-src_7": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1649178056, @@ -9107,37 +8570,6 @@ } }, "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -9172,7 +8604,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -9205,7 +8637,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -9236,7 +8668,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -9269,7 +8701,7 @@ "type": "github" } }, - "rust-overlay_6": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -9371,11 +8803,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1690762200, - "narHash": "sha256-UB02izyJREbLmS7+pyJvKF3mDePI6fTasqtg3fltJA0=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "c91713e7ca38abba6a90686df895acda53fd5038", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -9484,7 +8916,6 @@ "inputs": { "arion": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" @@ -9492,35 +8923,32 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_5", "incl": "incl", "makes": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "microvm": [ "cardano-node", - "cardano-automation", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_4", - "paisano": "paisano", - "paisano-tui": "paisano-tui", + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", "yants": "yants" }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", "owner": "divnix", "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { @@ -9531,58 +8959,13 @@ }, "std_2": { "inputs": { - "arion": [ - "cardano-node", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", + "devshell": "devshell_7", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_6", - "haumea": "haumea", - "incl": "incl_2", - "makes": [ - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_9", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_2" - }, - "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_3": { - "inputs": { - "devshell": "devshell_8", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_13", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_36", - "yants": "yants_4" + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" }, "locked": { "lastModified": 1661370377, @@ -9598,15 +8981,15 @@ "type": "github" } }, - "std_4": { + "std_3": { "inputs": { - "devshell": "devshell_16", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_31", + "devshell": "devshell_15", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_66", - "yants": "yants_6" + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", + "yants": "yants_5" }, "locked": { "lastModified": 1661367957, @@ -9622,11 +9005,11 @@ "type": "github" } }, - "std_5": { + "std_4": { "inputs": { - "devshell": "devshell_17", - "nixpkgs": "nixpkgs_69", - "yants": "yants_7" + "devshell": "devshell_16", + "nixpkgs": "nixpkgs_67", + "yants": "yants_6" }, "locked": { "lastModified": 1652784712, @@ -9822,25 +9205,10 @@ "type": "github" } }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_60" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -9861,7 +9229,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_11", + "flake-utils": "flake-utils_9", "nixpkgs": [ "db-sync", "cardano-world", @@ -9935,7 +9303,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_14", "nixpkgs": [ "db-sync", "cardano-world", @@ -9962,7 +9330,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_22", + "flake-utils": "flake-utils_20", "nixpkgs": [ "db-sync", "cardano-world", @@ -9989,20 +9357,16 @@ "tullia": { "inputs": { "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "nixpkgs" - ], + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", "std": "std" }, "locked": { - "lastModified": 1684859161, - "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", "owner": "input-output-hk", "repo": "tullia", - "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", "type": "github" }, "original": { @@ -10014,8 +9378,8 @@ "tullia_2": { "inputs": { "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_68", - "std": "std_5" + "nixpkgs": "nixpkgs_66", + "std": "std_4" }, "locked": { "lastModified": 1657811465, @@ -10414,7 +9778,6 @@ "inputs": { "nixpkgs": [ "cardano-node", - "cardano-automation", "tullia", "std", "nixpkgs" @@ -10436,30 +9799,7 @@ }, "yants_2": { "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", - "owner": "divnix", - "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_3": { - "inputs": { - "nixpkgs": "nixpkgs_27" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -10475,7 +9815,7 @@ "type": "github" } }, - "yants_4": { + "yants_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -10499,9 +9839,9 @@ "type": "github" } }, - "yants_5": { + "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -10517,7 +9857,7 @@ "type": "github" } }, - "yants_6": { + "yants_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -10540,7 +9880,7 @@ "type": "github" } }, - "yants_7": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index 960061f61..243218999 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.5.0-pre"; + cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; ogmios-nixos = { url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; diff --git a/nix/runtime.nix b/nix/runtime.nix index c03e5bc57..aaafc2b59 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -115,11 +115,11 @@ rec { "${pkgs.bash}/bin/sh" "-c" '' - ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ - --config /config/config.json \ - --database-path /data/db \ - --socket-path "${nodeSocketPath}" \ - --topology /config/topology.json + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json '' ]; }; From e1da065b5e3cde4989344dc930bf0e906ace32b2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 13:37:49 +0400 Subject: [PATCH 456/478] Fix formatting --- nix/runtime.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nix/runtime.nix b/nix/runtime.nix index aaafc2b59..c03e5bc57 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -115,11 +115,11 @@ rec { "${pkgs.bash}/bin/sh" "-c" '' - ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ - --config /config/config.json \ - --database-path /data/db \ - --socket-path "${nodeSocketPath}" \ - --topology /config/topology.json + ${inputs.cardano-node.packages."${pkgs.system}".cardano-node}/bin/cardano-node run \ + --config /config/config.json \ + --database-path /data/db \ + --socket-path "${nodeSocketPath}" \ + --topology /config/topology.json '' ]; }; From 59e57765d3ea42334f2d82feea00083967e71773 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 13:40:49 +0400 Subject: [PATCH 457/478] Update the template --- templates/ctl-scaffold/flake.lock | 17 +++++++++-------- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index ccdd01152..49a85931c 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1285,16 +1285,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, @@ -1684,17 +1685,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1701092404, - "narHash": "sha256-QSOEnY3gybUa/BUUlHXCyCGX1IlWmrwN0E8ckPr+fpE=", + "lastModified": 1702460269, + "narHash": "sha256-8193n63SchgAKDO/vySKuqdRkXLVbTqbQg+L1q7v6Fw=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "457532a04ae7c42cffbe85f0131033e5a87ca50f", + "rev": "e1da065b5e3cde4989344dc930bf0e906ace32b2", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "457532a04ae7c42cffbe85f0131033e5a87ca50f", + "rev": "e1da065b5e3cde4989344dc930bf0e906ace32b2", "type": "github" } }, @@ -8390,8 +8391,8 @@ }, "original": { "owner": "mlabs-haskell", + "ref": "gergely/version-bump", "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index aed17eb96..71a8845cb 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; + rev = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 76259afa8..d9c404584 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -309,7 +309,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "457532a04ae7c42cffbe85f0131033e5a87ca50f" + , version = "e1da065b5e3cde4989344dc930bf0e906ace32b2" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 764fcce08..2b91a477d 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; + version = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "457532a04ae7c42cffbe85f0131033e5a87ca50f"; - sha256 = "14byzvx9072gs06vr6jni7a9f8f8q9sr850mzhdbbjg0infq88s1"; + rev = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; + sha256 = "0p78xypdd2qg8adklvfmfa8m39xsi8jbzgrk5001hwnjmngpfpzk"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From d67c493a1afd63bf078eb9f343f173008c6ee820 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 20:41:05 +0400 Subject: [PATCH 458/478] Remove duplicate logging --- plutip-server/plutip-server.cabal | 1 - plutip-server/src/Api.hs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal index 495825b76..da121dc1b 100644 --- a/plutip-server/plutip-server.cabal +++ b/plutip-server/plutip-server.cabal @@ -87,7 +87,6 @@ executable plutip-server , wai-cors , wai-logger , warp - , wai-extra other-modules: Api diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs index f3de22776..b3c6fcc93 100644 --- a/plutip-server/src/Api.hs +++ b/plutip-server/src/Api.hs @@ -7,7 +7,6 @@ import Api.Handlers ( import Control.Monad.IO.Class (liftIO) import Control.Monad.Reader (runReaderT) import Data.Kind (Type) -import Network.Wai.Middleware.RequestLogger as Logger import Network.Wai.Middleware.Cors qualified as Cors import Servant ( Application, @@ -43,7 +42,7 @@ type Api = :> Post '[JSON] StopClusterResponse app :: Env -> Application -app = Logger.logStdout . Cors.cors (const $ Just policy) . serve api . appServer +app = Cors.cors (const $ Just policy) . serve api . appServer where policy :: Cors.CorsResourcePolicy policy = From f0f47e3092e66e446370f842f1eed41e86ffc4d5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 20:56:04 +0400 Subject: [PATCH 459/478] Update the revision in template --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 49a85931c..9cbb8ca33 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1685,17 +1685,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1702460269, - "narHash": "sha256-8193n63SchgAKDO/vySKuqdRkXLVbTqbQg+L1q7v6Fw=", + "lastModified": 1702485665, + "narHash": "sha256-saVgRUz2fCVNtZbDwYoBgM7149Kc2ck9Pz9aTTA3f8M=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "e1da065b5e3cde4989344dc930bf0e906ace32b2", + "rev": "d67c493a1afd63bf078eb9f343f173008c6ee820", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "e1da065b5e3cde4989344dc930bf0e906ace32b2", + "rev": "d67c493a1afd63bf078eb9f343f173008c6ee820", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 71a8845cb..2d666fa09 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; + rev = "d67c493a1afd63bf078eb9f343f173008c6ee820"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d9c404584..cdf91012d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -309,7 +309,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "e1da065b5e3cde4989344dc930bf0e906ace32b2" + , version = "d67c493a1afd63bf078eb9f343f173008c6ee820" } , noble-secp256k1 = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 2b91a477d..3c2783b4b 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -211,11 +211,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; + version = "d67c493a1afd63bf078eb9f343f173008c6ee820"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "e1da065b5e3cde4989344dc930bf0e906ace32b2"; - sha256 = "0p78xypdd2qg8adklvfmfa8m39xsi8jbzgrk5001hwnjmngpfpzk"; + rev = "d67c493a1afd63bf078eb9f343f173008c6ee820"; + sha256 = "1hvz6wq4sniz7wywkncwsbizbkl0065c3hwnnm6jaz7n9i2n19di"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 774c005ae9ebd228e9b6c31a636b3470d11064dd Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 22:53:08 +0400 Subject: [PATCH 460/478] Remove duplicate logging from plutip --- plutip-server/plutip-server.cabal | 1 - plutip-server/src/Api.hs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal index 495825b76..da121dc1b 100644 --- a/plutip-server/plutip-server.cabal +++ b/plutip-server/plutip-server.cabal @@ -87,7 +87,6 @@ executable plutip-server , wai-cors , wai-logger , warp - , wai-extra other-modules: Api diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs index f3de22776..b3c6fcc93 100644 --- a/plutip-server/src/Api.hs +++ b/plutip-server/src/Api.hs @@ -7,7 +7,6 @@ import Api.Handlers ( import Control.Monad.IO.Class (liftIO) import Control.Monad.Reader (runReaderT) import Data.Kind (Type) -import Network.Wai.Middleware.RequestLogger as Logger import Network.Wai.Middleware.Cors qualified as Cors import Servant ( Application, @@ -43,7 +42,7 @@ type Api = :> Post '[JSON] StopClusterResponse app :: Env -> Application -app = Logger.logStdout . Cors.cors (const $ Just policy) . serve api . appServer +app = Cors.cors (const $ Just policy) . serve api . appServer where policy :: Cors.CorsResourcePolicy policy = From 7f43c004f2e64d481d4bf891f860ce8b6bb68480 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 13 Dec 2023 23:17:30 +0400 Subject: [PATCH 461/478] Update the template --- templates/ctl-scaffold/flake.lock | 13288 +++++++------------- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- 4 files changed, 4323 insertions(+), 8975 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 4d2832a53..e4fbc9170 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1678160279, - "narHash": "sha256-IKbD0uqteVoo4KRcYh/QrLQ/HQJXwgCQS2Mq7grhSdM=", + "lastModified": 1702290471, + "narHash": "sha256-uivAP05RENSzQDbDjAU3Fbq+AiDDpcNaHAzvOZM1fik=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e20bffc8ac331810efa671a1bb49932595fa21f6", + "rev": "1ff7483a6d2670c8627de92779a2b92a989293cd", "type": "github" }, "original": { @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1669917887, - "narHash": "sha256-9bsEaFh2lb26dZNUL+P4/LIzkTZH5NC7n9SprKzB/2A=", + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "85510200dd0dc758d72bc1ada11ff5855e5d46b7", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", "type": "github" }, "original": { @@ -37,11 +37,11 @@ "CHaP_3": { "flake": false, "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", + "lastModified": 1695160702, + "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", + "rev": "9932690af3713ef034c928850252eb1b88450ee6", "type": "github" }, "original": { @@ -54,28 +54,11 @@ "CHaP_4": { "flake": false, "locked": { - "lastModified": 1666726035, - "narHash": "sha256-EBodp9DJb8Z+aVbuezVwLJ9Q9XIJUXFd/n2skay3FeU=", + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "b074321c4c8cbf2c3789436ab11eaa43e1c441a7", - "type": "github" - } - }, - "CHaP_5": { - "flake": false, - "locked": { - "lastModified": 1672829743, - "narHash": "sha256-lM3s0UQDxfipHbEFhmW2d5QcmKIPVsLT2ai6RnHAP84=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "551630b2c90ed9107079ab402534ed3b56db6f04", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", "type": "github" }, "original": { @@ -101,134 +84,6 @@ "type": "github" } }, - "HTTP_10": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_11": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_12": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_13": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_14": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_15": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_16": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_17": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -325,41 +180,9 @@ "type": "github" } }, - "HTTP_8": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_9": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1641576265, @@ -377,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1641404293, @@ -396,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_5" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -415,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_13", - "nixpkgs": "nixpkgs_34" + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -434,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -530,7 +353,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_33" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -600,7 +423,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_28" + "nixpkgs": "nixpkgs_35" }, "locked": { "lastModified": 1646360966, @@ -716,24 +539,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank", + "blank": "blank_2", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_4", - "hydra": "hydra_2", - "n2c": "n2c", - "nix": "nix_4", - "nixpkgs": "nixpkgs_22", + "hydra": "hydra_3", + "n2c": "n2c_2", + "nix": "nix_5", + "nixpkgs": "nixpkgs_29", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std", + "std": "std_2", "terranix": "terranix_2", - "utils": "utils_10" + "utils": "utils_12" }, "locked": { "lastModified": 1661790449, @@ -819,20 +642,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_2", + "blank": "blank_3", "deploy": "deploy", "fenix": "fenix_2", - "hydra": "hydra", - "nix": "nix", - "nixpkgs": "nixpkgs_8", - "nixpkgs-unstable": "nixpkgs-unstable", + "hydra": "hydra_2", + "nix": "nix_2", + "nixpkgs": "nixpkgs_15", + "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib", + "ops-lib": "ops-lib_2", "ragenix": "ragenix", "terranix": "terranix", - "utils": "utils_5", + "utils": "utils_7", "vulnix": "vulnix" }, "locked": { @@ -853,20 +676,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy_3", "fenix": "fenix_6", - "hydra": "hydra_3", - "nix": "nix_8", - "nixpkgs": "nixpkgs_37", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "hydra": "hydra_4", + "nix": "nix_9", + "nixpkgs": "nixpkgs_44", + "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_4", "ragenix": "ragenix_4", "terranix": "terranix_3", - "utils": "utils_19", + "utils": "utils_21", "vulnix": "vulnix_2" }, "locked": { @@ -958,52 +781,56 @@ "type": "github" } }, - "blank_6": { + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "blockfrost", + "ref": "v1.7.0", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "blank_7": { + "blst": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "blockfrost": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "blst_2": { + "flake": false, "locked": { - "lastModified": 1684305087, - "narHash": "sha256-8MvK2AxG3bGWkxWutsCWRk9MYxf/FdQu/DkAvemjqHM=", - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "113ddfc2dbea9beba3a428aa274965237f31b858", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -1040,14 +867,14 @@ "type": "github" } }, - "cabal-32_10": { + "cabal-32_2": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1057,7 +884,7 @@ "type": "github" } }, - "cabal-32_11": { + "cabal-32_3": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1074,7 +901,7 @@ "type": "github" } }, - "cabal-32_12": { + "cabal-32_4": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1091,14 +918,14 @@ "type": "github" } }, - "cabal-32_13": { + "cabal-32_5": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1108,14 +935,14 @@ "type": "github" } }, - "cabal-32_14": { + "cabal-32_6": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1125,14 +952,14 @@ "type": "github" } }, - "cabal-32_15": { + "cabal-32_7": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -1142,9704 +969,5836 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_17": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_2": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_3": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_4": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_5": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_6": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_7": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_8": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_9": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_10": { + "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_11": { + "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_12": { + "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_13": { - "flake": false, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_23", + "ragenix": "ragenix_2" + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_14": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_15": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": [ + "ctl", + "cardano-node", + "tullia" + ] + }, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_16": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, - "cabal-34_17": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "cabal-34_2": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cabal-34_3": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "cabal-34_4": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_5": { - "flake": false, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake", + "flake-compat": "flake-compat", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_2" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "cabal-34_6": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "cabal-34_7": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-34_8": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-34_9": { + "cardano-shell_3": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", - "owner": "haskell", - "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_10": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_11": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_12": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_13": { - "flake": false, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_2", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_14": { - "flake": false, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_9", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_3", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_63", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_3", + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "cabal-36_15": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_8", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_8", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_39", + "poetry2nix": "poetry2nix", + "utils": "utils_16" }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_2": { - "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "cabal-36_3": { - "flake": false, + "ctl": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_11", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_3", + "hercules-ci-effects": "hercules-ci-effects", + "iohk-nix": "iohk-nix_2", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ctl", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1702493588, + "narHash": "sha256-Thdyj43WqEUiI1QAOIh250zTLtV7fT7aU4bTdIGsfhA=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "774c005ae9ebd228e9b6c31a636b3470d11064dd", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "774c005ae9ebd228e9b6c31a636b3470d11064dd", "type": "github" } }, - "cabal-36_4": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "cabal-36_7": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_2" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-36_8": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-36_9": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_4" + }, "locked": { - "lastModified": 1640163203, - "narHash": "sha256-TwDWP2CffT0j40W6zr0J1Qbu+oh3nsF1lUx9446qxZM=", - "owner": "haskell", - "repo": "cabal", - "rev": "ecf418050c1821f25e2e218f1be94c31e0465df1", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "capsules": { + "db-sync": { "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_16", - "ragenix": "ragenix_2" + "cardano-world": "cardano-world", + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_10", + "haskellNix": "haskellNix_3", + "iohkNix": "iohkNix_3", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_23" }, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "devshell-capsules", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "capsules_2": { + "deploy": { "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_45", - "ragenix": "ragenix_5" + "fenix": "fenix", + "flake-compat": "flake-compat_4", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_3" }, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "devshell-capsules", + "repo": "deploy-rs", "type": "github" } }, - "cardano-addresses": { - "flake": false, - "locked": { - "lastModified": 1664466771, - "narHash": "sha256-m8oidcV9LWU0S+NBw4wH1JdKZVict1EbKBZ6kfdEEf4=", - "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-addresses", - "rev": "5094fb9d304ed69adedc99513634a00cbf850fca", - "type": "github" - } - }, - "cardano-configurations": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_9" + }, "locked": { - "lastModified": 1671845278, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "36a75a920de312519c3a9086061daccb997f9cd0", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "deploy-rs", "type": "github" } }, - "cardano-configurations_2": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_6", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_17" + }, "locked": { - "lastModified": 1670462928, - "narHash": "sha256-nPeMzKeMAVTtWOBaYzC6xU/J0UCA79u3JBOk9mFKdF0=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "5d3dfead99eca0996c5b838a5fbccc94eb670df5", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "deploy-rs", "type": "github" } }, - "cardano-configurations_3": { - "flake": false, + "devshell": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667387423, - "narHash": "sha256-oOycxAu9kARfyUvkdjeq80Em7b+vP9XsBii8836f9yQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "c0d11b5ff0c0200da00a50c17c38d9fd752ba532", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-explorer-app": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-graphql": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_65" - }, + "devshell_12": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_67" - }, + "devshell_13": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_68" - }, + "devshell_14": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_4": { + "devshell_15": { "inputs": { - "nixpkgs": "nixpkgs_73" + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_5": { + "devshell_16": { "inputs": { - "nixpkgs": "nixpkgs_75" + "flake-utils": "flake-utils_31", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-mainnet-mirror_6": { - "inputs": { - "nixpkgs": "nixpkgs_76" - }, + "devshell_2": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node": { - "flake": false, + "devshell_3": { "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", - "type": "github" - }, + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-snapshot": { - "inputs": { - "customConfig": "customConfig_5", - "haskellNix": "haskellNix_5", - "iohkNix": "iohkNix_5", - "membench": "membench_2", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_22" - }, + "devshell_4": { "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_9", - "haskellNix": "haskellNix_9", - "iohkNix": "iohkNix_9", - "membench": "membench_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_27" + "devshell_5": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_6": { "locked": { - "lastModified": 1644954571, - "narHash": "sha256-c6MM1mQoS/AnTIrwaRmITK4L4i9lLNtkjOUHiseBtUs=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "30d62b86e7b98da28ef8ad9412e4e00a1ba1231d", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_2": { + "devshell_7": { "inputs": { - "CHaP": "CHaP_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "cardano-node-workbench": [ - "ctl", - "ogmios", - "blank" - ], - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_9", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ + "flake-utils": [ "ctl", - "ogmios", - "cardano-node", - "nixpkgs" + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" ], - "iohkNix": "iohkNix_3", - "nixTools": "nixTools", "nixpkgs": [ "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios", - "blank" - ], - "node-process": "node-process", - "node-snapshot": "node-snapshot", - "plutus-apps": "plutus-apps", - "utils": "utils_25" + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.4", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_3": { + "devshell_8": { "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "cardano-node-workbench": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "customConfig": "customConfig_7", - "flake-compat": "flake-compat_14", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_7", - "hostNixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_7", - "nixTools": "nixTools_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "node-measured": [ - "ctl", - "ogmios-nixos", - "blank" - ], - "node-process": "node-process_2", - "node-snapshot": "node-snapshot_2", - "plutus-apps": "plutus-apps_2", - "utils": "utils_30" + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" }, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_4": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1667644902, - "narHash": "sha256-WRRzfpDc+YVmTNbN9LNYY4dS8o21p/6NoKxtcZmoAcg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ebc7be471b30e5931b35f9bbc236d21c375b91bb", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell": { - "flake": false, + "dmerge": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_10": { - "flake": false, + "dmerge_2": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_11": { - "flake": false, + "dmerge_3": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_12": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "driver": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_6", + "nix": "nix_7", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_13" }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_13": { - "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "nomad-driver-nix", "type": "github" } }, - "cardano-shell_14": { + "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "cardano-shell_15": { + "em": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-shell_16": { - "flake": false, + "ema": { + "inputs": { + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "cardano-shell_17": { + "ema_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "cardano-shell_2": { - "flake": false, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_57", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "cardano-shell_3": { - "flake": false, + "empty-flake": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "empty-flake", "type": "github" } }, - "cardano-shell_4": { - "flake": false, + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs_13", + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-shell_5": { - "flake": false, + "fenix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-shell_6": { - "flake": false, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_26", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-shell_7": { - "flake": false, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-shell_8": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-shell_9": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-wallet": { + "fenix_6": { "inputs": { - "customConfig": "customConfig", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_20", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "cardano-wallet", - "haskellNix", + "capsules", + "bitte", "nixpkgs-unstable" - ] + ], + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cardano-wallet_2": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1671029634, - "narHash": "sha256-lz3bi711qORionkcfduC+AXGP6Ii+uWiVHRmRZmvfb8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "bbf11d4feefd5b770fb36717ec5c4c5c112aca87", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "ctl", - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_6", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_2", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_56", - "nixpkgs-haskell": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_2", - "tullia": "tullia" - }, + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-world", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_7", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_7", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_32", - "poetry2nix": "poetry2nix", - "utils": "utils_14" - }, + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ctl": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-node": [ - "ctl", - "ogmios-nixos", - "cardano-node" - ], - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_8", - "haskell-nix": "haskell-nix_3", - "iohk-nix": [ - "ctl", - "plutip", - "iohk-nix" - ], - "iohk-nix-environments": "iohk-nix-environments", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ], - "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip", - "plutip-nixpkgs": [ - "ctl", - "plutip", - "nixpkgs" - ] - }, + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1697553030, - "narHash": "sha256-noK4fgwvaV3rlLVPnW2wH3WScYVgJ/M/fc+F1tQ8i40=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "6e4debe87ddbafaa3c77033888f9c998e28cd7ca", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "6e4debe87ddbafaa3c77033888f9c998e28cd7ca", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "customConfig": { + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "customConfig_10": { + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "customConfig_2": { + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "customConfig_3": { + "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "customConfig_4": { + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "customConfig_5": { + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_6": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_7": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_8": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_9": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants" - }, - "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, - "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_3" - }, - "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_2", - "flake-compat": "flake-compat_7", - "haskellNix": "haskellNix_2", - "iohkNix": "iohkNix_2", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_21" - }, - "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", - "type": "github" - } - }, - "deploy": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "deploy_2": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_7" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "deploy_3": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_15" - }, - "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", - "type": "github" - } - }, - "devshell": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_10": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_12": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_13": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_14": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_15": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_16": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_17": { - "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_2": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_3": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_4": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_5": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_7": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_29" - }, - "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_8": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_9": { - "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_3": { - "inputs": { - "nixlib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "driver": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_6", - "nix": "nix_6", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_11" - }, - "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "type": "github" - } - }, - "easy-purescript-nix": { - "flake": false, - "locked": { - "lastModified": 1679861376, - "narHash": "sha256-LLqaLPJNiap2U8I77K5XVPGJA/Be30Z8lyGOyYXmBlc=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", - "type": "github" - }, - "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "0c10ff170461aed0c336f5c21ed0f430c2c3574b", - "type": "github" - } - }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_47", - "pre-commit-hooks": "pre-commit-hooks" - }, - "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "ema", - "type": "github" - } - }, - "ema_2": { - "flake": false, - "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", - "type": "github" - } - }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_50", - "tailwind-haskell": "tailwind-haskell" - }, - "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "emanote", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs_6", - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_2" - }, - "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_19", - "rust-analyzer-src": "rust-analyzer-src_3" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, - "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_35", - "rust-analyzer-src": "rust-analyzer-src_5" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, - "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_11": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_12": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_13": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_14": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_15": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_16": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_17": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_18": { - "flake": false, - "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_19": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_6": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_7": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_8": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_9": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs": "nixpkgs_49" - }, - "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_10": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_11": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_12": { - "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_13": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_14": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_15": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_16": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_17": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_18": { - "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_19": { - "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", - "type": "github" - }, - "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_20": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_21": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_22": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_23": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_24": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_25": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_26": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_27": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_28": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_29": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_30": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_31": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_32": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_33": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_34": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_35": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_36": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_37": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_38": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_39": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_40": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_41": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_42": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_43": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_44": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_45": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_46": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flakeCompat": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "follower": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_7", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_12" - }, - "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_10": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_11": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_12": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_13": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_14": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_15": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_16": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_17": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_2": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_3": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_4": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_5": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_6": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_7": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_8": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_9": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_70", - "utils": "utils_26" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_78", - "utils": "utils_31" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1665882657, - "narHash": "sha256-3eiHY9Lt2vTeMsrT6yssbd+nfx/i5avfxosigx7bCxU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8e5b6856f99ed790c387fa76bdad9dcc94b3a54c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1656898050, - "narHash": "sha256-jemAb/Wm/uT+QhV12GlyeA5euSWxYzr2HOYoK4MZps0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4f1dd530219ca1165f523ffb2c62213ebede4046", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1669857312, - "narHash": "sha256-m0jYF2gOKTaCcedV+dZkCjVbfv0CWkRziCeEk/NF/34=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8299f5acc68f0e91563e7688f24cbc70391600bf", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_12": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_13": { - "flake": false, - "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_14": { - "flake": false, - "locked": { - "lastModified": 1667783503, - "narHash": "sha256-25ZZPMQi9YQbXz3tZYPECVUI0FAQkJcDUIA/v8+mo9E=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "1f77f69e6dd92b5130cbe681b74e8fc0d29d63ff", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_3": { - "flake": false, - "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_4": { - "flake": false, - "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_5": { - "flake": false, - "locked": { - "lastModified": 1653441966, - "narHash": "sha256-aJFK0wDzoOrtb7ucZzKh5J+S2pThpwNCofl74s1olXU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f7fe6ef8de52c43a9efa6fd4ac4902e5957dc573", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_7": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_8": { - "flake": false, - "locked": { - "lastModified": 1643073363, - "narHash": "sha256-66oSXQKEDIOSQ2uKAS9facCX/Zuh/jFgyFDtxEqN9sk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "4ef9bd3a32316ce236164c7ebff00ebeb33236e2", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_9": { - "flake": false, - "locked": { - "lastModified": 1639098768, - "narHash": "sha256-DZ4sG8FeDxWvBLixrj0jELXjtebZ0SCCPmQW43HNzIE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c7b123af6b0b9b364cab03363504d42dca16a4b5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-unstable": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_22", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" - }, - "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "ctl", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1674575951, - "narHash": "sha256-m1uLB0tMV3nO3O//09gNGmlxlnfwMgAQnM+MliVhofU=", - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "rev": "1eaffea8eee8bc446fbc869288dab9a08f742c06", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "nix-tools": "nix-tools_6", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", - "type": "github" - } - }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_10", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_10", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_11", - "tullia": "tullia_2" - }, - "locked": { - "lastModified": 1670464865, - "narHash": "sha256-OP4w1Cc2xXKya5GbViX2PwX4Gre/GyE2gT9NIVzcIyw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6c992eacf65c19e29ae5296b11def11813179643", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_16", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_14", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_12", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16", - "tullia": "tullia_3" - }, - "locked": { - "lastModified": 1667783630, - "narHash": "sha256-IzbvNxsOVxHJGY70qAzaEOPmz4Fw93+4qLFd2on/ZAc=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f1f330065199dc4eca017bc21de0c67bc46df393", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_7": { - "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_17", - "flake-utils": "flake-utils_46", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "hackage": "hackage_15", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_13", - "nix-tools": "nix-tools_14", - "nixpkgs": [ - "ctl", - "plutip", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_17" - }, - "locked": { - "lastModified": 1653486569, - "narHash": "sha256-342b0LPX6kaBuEX8KZV40FwCCFre1lCtjdTQIDEt9kw=", - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "rev": "220f8a9cd166e726aea62843bdafa7ecded3375c", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_21", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_4", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_10": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cardano-shell": "cardano-shell_15", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "hackage": "hackage_13", - "hpc-coveralls": "hpc-coveralls_15", - "nix-tools": "nix-tools_13", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" - }, - "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-compat": "flake-compat_10", - "flake-utils": "flake-utils_30", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": [ - "ctl", - "ogmios", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1665882789, - "narHash": "sha256-vD9voCqq4F100RDO3KlfdKZE81NyD++NJjvf3KNNbHA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9af167fb4343539ca99465057262f289b44f55da", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": "hackage_7", - "hpc-coveralls": "hpc-coveralls_8", - "nix-tools": "nix-tools_7", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_8", - "hpc-coveralls": "hpc-coveralls_9", - "nix-tools": "nix-tools_8", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": "hackage_9", - "hpc-coveralls": "hpc-coveralls_10", - "nix-tools": "nix-tools_9", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1639098904, - "narHash": "sha256-7VrCNEaKGLm4pTOS11dt1dRL2033oqrNCfal0uONsqA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "b18c6ce0867fee77f12ecf41dc6c67f7a59d9826", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_7": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_12", - "flake-utils": "flake-utils_38", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "hackage": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "hackageNix" - ], - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_11", - "nix-tools": "nix-tools_10", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1656898207, - "narHash": "sha256-hshNfCnrmhIvM4T+O0/JRZymsHmq9YiIJ4bpzNVTD98=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "21230476adfef5fa77fb19fbda396f22006a02bc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_8": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_13", - "flake-utils": "flake-utils_39", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "hackage": "hackage_11", - "hpc-coveralls": "hpc-coveralls_13", - "nix-tools": "nix-tools_11", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_9": { - "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_14", - "flake-utils": "flake-utils_40", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "hackage": "hackage_12", - "hpc-coveralls": "hpc-coveralls_14", - "nix-tools": "nix-tools_12", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_14" - }, - "locked": { - "lastModified": 1643073543, - "narHash": "sha256-g2l/KDWzMRTFRugNVcx3CPZeyA5BNcH9/zDiqFpprB4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "14f740c7c8f535581c30b1697018e389680e24cb", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_12": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_13": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_14": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_15": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_17": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_3": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_4": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_5": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_6": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_7": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_8": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_9": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hw-aeson": { - "flake": false, - "locked": { - "lastModified": 1660218478, - "narHash": "sha256-t4QLmGf5ytzjS0ynn6xON61J+fvBF8vf/+zsBzmw/rM=", - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", - "type": "github" - }, - "original": { - "owner": "haskell-works", - "repo": "hw-aeson", - "rev": "ba7c1e41c6e54d6bf9fd1cd013489ac713fc3153", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_10": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_11": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_12": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_13": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "ctl", - "plutip", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_2": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_3": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_4": { - "inputs": { - "nix": "nix_11", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_5": { - "inputs": { - "nix": "nix_12", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_6": { - "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_7": { - "inputs": { - "nix": "nix_14", - "nixpkgs": [ - "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_8": { - "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_9": { - "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "repo": "flake-compat", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, + "flake-compat_9": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "inclusive_7": { + "flake-parts": { "inputs": { - "stdlib": "stdlib_7" + "nixpkgs": "nixpkgs_56" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "inclusive_8": { + "flake-parts_2": { "inputs": { - "stdlib": "stdlib_8" + "nixpkgs-lib": [ + "ctl", + "hercules-ci-effects", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, + "flake-utils": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iogo": { - "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_15", - "utils": "utils_6" - }, + "flake-utils_10": { "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iogo_2": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_44", - "utils": "utils_20" - }, + "flake-utils_11": { "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, + "flake-utils_12": { "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix-environments": { - "inputs": { - "nixpkgs": "nixpkgs_63" - }, + "flake-utils_13": { "locked": { - "lastModified": 1677230996, - "narHash": "sha256-L/PDahK725s1k+sg6MOtVG6sBiKEmgHhRjaequBRbXI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "82e833b60c47bf0f352443879af1766712e9ca6f", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "flake-utils_14": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "nixpkgs" - ] - }, + "flake-utils_15": { "locked": { - "lastModified": 1670489000, - "narHash": "sha256-JewWjqVJSt+7eZQT9bGdhlSsS9dmsSKsMzK9g11tcLU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "61510bb482eaca8cb7d61f40f5d375d95ea1fbf7", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "nixpkgs" - ] - }, + "flake-utils_16": { "locked": { - "lastModified": 1649070135, - "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_5": { - "flake": false, + "flake-utils_17": { "locked": { - "lastModified": 1672846257, - "narHash": "sha256-khuzjVfyNCVcsV5cHRyyb2OgWLbYLKSJlrVDNmc2Tv4=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "ca3d466ed36011bcc14290c6d36c503eb03eb71b", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "flake-utils_18": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_10": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-utils_19": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, + "flake-utils_2": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "nixpkgs" - ] - }, + "flake-utils_20": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_21": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_22": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "nixpkgs" - ] - }, + "flake-utils_23": { "locked": { - "lastModified": 1633964277, - "narHash": "sha256-7G/BK514WiMRr90EswNBthe8SmH9tjPaTBba/RW/VA8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "1e51437aac8a0e49663cb21e781f34163c81ebfb", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "nixpkgs" - ] - }, + "flake-utils_24": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_25": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_9": { - "inputs": { - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ] - }, + "flake-utils_26": { "locked": { - "lastModified": 1631778944, - "narHash": "sha256-N5eCcUYtZ5kUOl/JJGjx6ZzhA3uIn1itDRTiRV+3jLw=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "db2c75a09c696271194bb3ef25ec8e9839b594b7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "flake-utils_27": { "locked": { - "lastModified": 1639165170, - "narHash": "sha256-QsWL/sBDL5GM8IXd/dE/ORiL4RvteEN+aok23tXgAoc=", - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "revCount": 7, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" }, "original": { - "rev": "6e95df7be6dd29680f983db07a057fc2f34f81f6", - "type": "git", - "url": "https://gitlab.haskell.org/ghc/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "kupo": { - "flake": false, + "flake-utils_28": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_2", - "kupo": [ - "ctl", - "kupo" - ], - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "flake-utils_29": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src": { - "flake": false, + "flake-utils_3": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "flake-utils_30": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "flake-utils_31": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "flake-utils_32": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "flake-utils_33": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "flake-utils_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "flake-utils_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "flake-utils_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_17": { - "flake": false, + "flake-utils_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_18": { - "flake": false, + "flake-utils_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_19": { - "flake": false, + "flake-utils_9": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_2": { + "flakeCompat": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "lowdown-src_20": { - "flake": false, + "follower": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_7", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "lowdown-src_3": { + "ghc-8.6.5-iohk": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_4": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_5": { + "ghc-8.6.5-iohk_3": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_6": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_7": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_8": { + "ghc-8.6.5-iohk_6": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "lowdown-src_9": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "mdbook-kroki-preprocessor": { + "ghc98X": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "mdbook-kroki-preprocessor_2": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "mdbook-kroki-preprocessor_3": { - "flake": false, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_5", + "utils": "utils" + }, "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "mdbook-kroki-preprocessor_4": { + "hackage": { "flake": false, "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "membench": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_2" - }, + "hackage-nix": { + "flake": false, "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "lastModified": 1702426969, + "narHash": "sha256-rbhpiqSBFwLxTO4Qx2sJm7BzBQo9MidVWlL9W21HHy4=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "repo": "hackage.nix", + "rev": "524b4a4d0e06119cd226aa9f5d57986547bd29b4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "membench_2": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "cardano-node-measured": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network" - }, + "hackageNix": { + "flake": false, "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" - } - }, - "membench_3": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_5", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot" - ], - "cardano-node-snapshot": "cardano-node-snapshot_2", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_4" - }, + } + }, + "hackage_2": { + "flake": false, "locked": { - "lastModified": 1645070579, - "narHash": "sha256-AxL6tCOnzYnE6OquoFzj+X1bLDr1PQx3d8/vXm+rbfA=", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "65643e000186de1335e24ec89159db8ba85e1c1a", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "membench_4": { - "inputs": { - "cardano-mainnet-mirror": "cardano-mainnet-mirror_6", - "cardano-node-measured": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-process": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "cardano-node-snapshot": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot" - ], - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "membench", - "cardano-node-snapshot", - "nixpkgs" - ], - "ouroboros-network": "ouroboros-network_3" - }, + "hackage_3": { + "flake": false, "locked": { - "lastModified": 1644547122, - "narHash": "sha256-8nWK+ScMACvRQLbA27gwXNoZver+Wx/cF7V37044koY=", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", - "rev": "9d8ff4b9394de0421ee95caa511d01163de88b77", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-memory-benchmark", + "repo": "hackage.nix", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_20" - }, + "hackage_4": { + "flake": false, "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" - }, + "hackage_5": { + "flake": false, "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_37", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "nixpkgs" - ] - }, + "haskell-flake": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "n2c_4": { + "haskell-nix": { "inputs": { - "flake-utils": "flake-utils_45", + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls_2", + "nix-tools": "nix-tools", "nixpkgs": [ "ctl", - "ogmios-nixos", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "haskell-nix", - "tullia", - "std", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "nixpkgs" - ] + ], + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix": { + "haskell-nix_2": { "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_7", - "nixpkgs-regression": "nixpkgs-regression" + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix-cache-proxy": { + "haskell-nix_3": { "inputs": { - "devshell": "devshell_10", - "inclusive": [ + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_12", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" + "hackage-nix" ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "iserv-proxy": "iserv-proxy_2", "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", "nixpkgs" ], - "utils": "utils_13" + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" }, "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "lastModified": 1702428573, + "narHash": "sha256-KpY2FsKQs6vUABgQFjUCqaTPVN5dStNjt0Dxjw7CA9g=", "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "repo": "haskell.nix", + "rev": "78c22a52a0d80d7e29c12f74df871ebb58a0795d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "repo": "haskell.nix", "type": "github" } }, - "nix-inclusive": { + "haskell-nix_4": { "inputs": { - "stdlib": "stdlib_12" + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" } }, - "nix-nomad": { + "haskellNix": { "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": [ + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" + "cardano-node", + "hackageNix" ], - "gomod2nix": "gomod2nix", + "hls-1.10": "hls-1.10", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", + "cardano-node", "nixpkgs" ], - "nixpkgs-lib": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix-nomad_2": { + "haskellNix_2": { "inputs": { - "flake-compat": "flake-compat_17", - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_2", "nixpkgs": [ "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", + "db-sync", + "cardano-world", + "cardano-wallet", "nixpkgs" ], - "nixpkgs-lib": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "nixpkgs" - ] + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools": { - "flake": false, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "haskell.nix", "type": "github" } }, - "nix-tools_10": { - "flake": false, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_70" + }, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1699381651, + "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0bd99f5ab7ec7a74c11238bd02bb29e709c14328", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", "type": "github" } }, - "nix-tools_11": { + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_12": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_13": { + "hls-2.0": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_14": { + "hls-2.2": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_2": { + "hls-2.3": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_3": { + "hls-2.4": { "flake": false, "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nix-tools_4": { + "hpc-coveralls": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_5": { + "hpc-coveralls_2": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_6": { + "hpc-coveralls_3": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_7": { + "hpc-coveralls_4": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_8": { + "hpc-coveralls_5": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix-tools_9": { + "hpc-coveralls_6": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_58" - }, + "hpc-coveralls_7": { + "flake": false, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "nix2container_2": { + "hydra": { "inputs": { - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_71" + "nix": "nix", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix2container_3": { + "hydra_2": { "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_79" + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nixTools": { - "flake": false, + "hydra_3": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nixTools_2": { - "flake": false, + "hydra_4": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "nix_10": { + "hydra_5": { "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_40", - "nixpkgs-regression": "nixpkgs-regression_8" + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_11": { + "hydra_6": { "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_52", - "nixpkgs-regression": "nixpkgs-regression_9" + "nix": "nix_13", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_12": { + "hydra_7": { "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_54", - "nixpkgs-regression": "nixpkgs-regression_10" + "nix": "nix_14", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_13": { + "hydra_8": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" + "nix": "nix_15", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_14": { + "hydra_9": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_62", - "nixpkgs-regression": "nixpkgs-regression_12" + "nix": "nix_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "nix_15": { + "incl": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_64", - "nixpkgs-regression": "nixpkgs-regression_13" + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "nix_16": { + "inclusive": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_14" + "stdlib": "stdlib" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_17": { + "inclusive_10": { "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_15" + "stdlib": "stdlib_10" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_18": { + "inclusive_11": { "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_74", - "nixpkgs-regression": "nixpkgs-regression_16" + "stdlib": "stdlib_11" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_19": { + "inclusive_2": { "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_77", - "nixpkgs-regression": "nixpkgs-regression_17" + "stdlib": "stdlib_2" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_2": { + "inclusive_3": { "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9" + "stdlib": "stdlib_3" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_20": { + "inclusive_4": { "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_81", - "nixpkgs-regression": "nixpkgs-regression_18" + "stdlib": "stdlib_4" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_3": { + "inclusive_5": { "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_11", - "nixpkgs-regression": "nixpkgs-regression_2" + "stdlib": "stdlib_5" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_4": { + "inclusive_6": { "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_21", - "nixpkgs-regression": "nixpkgs-regression_3" + "stdlib": "stdlib_6" }, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_5": { + "inclusive_7": { "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_23", - "nixpkgs-regression": "nixpkgs-regression_4" + "stdlib": "stdlib_7" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_6": { + "inclusive_8": { "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" + "stdlib": "stdlib_8" }, "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_7": { + "inclusive_9": { "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_31", - "nixpkgs-regression": "nixpkgs-regression_6" + "stdlib": "stdlib_9" }, "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nix_8": { + "iogo": { "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_36", - "nixpkgs-regression": "nixpkgs-regression_7" + "devshell": "devshell_4", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_22", + "utils": "utils_8" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "nix_9": { + "iogo_2": { "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_38" + "devshell": "devshell_14", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_51", + "utils": "utils_22" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "nixago": { + "iohk-nix": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "bitte", - "std", "nixpkgs" ] }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago-exts": { + "iohk-nix_2": { + "inputs": { + "blst": "blst_2", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago-exts_2": { + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" } }, - "nixago_2": { + "iohkNix": { "inputs": { - "flake-utils": [ + "blst": "blst", + "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" + "cardano-node", + "nixpkgs" ], - "nixago-exts": "nixago-exts_2", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "std", + "cardano-wallet", "nixpkgs" ] }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "nixago_3": { + "iohkNix_3": { "inputs": { - "flake-utils": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", + "db-sync", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", "type": "github" } }, - "nixago_4": { + "kupo-nixos": { "inputs": { - "flake-utils": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "kupo": [ "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" + "kupo" ], "nixpkgs": [ "ctl", - "ogmios-nixos", + "kupo-nixos", "haskell-nix", - "tullia", - "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" } }, - "nixlib": { + "lowdown-src": { + "flake": false, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixlib_2": { + "lowdown-src_10": { + "flake": false, "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixlib_3": { + "lowdown-src_11": { + "flake": false, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs": { + "lowdown-src_12": { + "flake": false, "locked": { - "lastModified": 1676253841, - "narHash": "sha256-jhuI8Mmky8VCD45OoJEuF6HdPLFBwNrHA0ljjZ/zkfw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a45a8916243a7d27acc358f4fc18c4491f3eeca8", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003": { + "lowdown-src_13": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_10": { + "lowdown-src_14": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_11": { + "lowdown-src_15": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_12": { + "lowdown-src_16": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_13": { + "lowdown-src_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_14": { + "lowdown-src_3": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_15": { + "lowdown-src_4": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_16": { + "lowdown-src_5": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_2": { + "lowdown-src_7": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_3": { + "lowdown-src_8": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_4": { + "lowdown-src_9": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "nixpkgs-2003_5": { + "mdbook-kroki-preprocessor": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "nixpkgs-2003_6": { + "mdbook-kroki-preprocessor_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "nixpkgs-2003_7": { + "n2c": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2003_8": { + "n2c_2": { + "inputs": { + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2003_9": { + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105": { + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_3", + "nixpkgs-regression": "nixpkgs-regression" + }, "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_10": { + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_11", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_15" + }, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", "type": "github" } }, - "nixpkgs-2105_11": { + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_12" + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ] }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "nixpkgs-2105_14": { + "nix-tools": { + "flake": false, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_15": { + "nix-tools_2": { + "flake": false, "locked": { - "lastModified": 1630481079, - "narHash": "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "110a2c9ebbf5d4a94486854f18a37a938cfacbbb", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_16": { + "nix-tools_3": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_17": { + "nix-tools_4": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_2": { + "nix-tools_5": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "nixpkgs-2105_3": { + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_4": { + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_5": { + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "nixpkgs-2105_6": { + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_45" + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_7": { + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_8": { + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2105_9": { + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1640283157, - "narHash": "sha256-6Ddfop+rKE+Gl9Tjp9YIrkfoYPzb8F80ergdjcq3/MY=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dde1557825c5644c869c5efc7448dc03722a8f09", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111": { + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_10": { + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_69", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_11": { + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_71", + "nixpkgs-regression": "nixpkgs-regression_14" + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_12": { + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_2" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_13": { + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_16" + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_14": { + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_18", + "nixpkgs-regression": "nixpkgs-regression_3" + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_15": { + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_28", + "nixpkgs-regression": "nixpkgs-regression_4" + }, "locked": { - "lastModified": 1638410074, - "narHash": "sha256-MQYI4k4XkoTzpeRjq5wl+1NShsl1CKq8MISFuZ81sWs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5b80f23502f8e902612a8c631dfce383e1c56596", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_16": { + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_17": { + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_37", + "nixpkgs-regression": "nixpkgs-regression_6" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "nixpkgs-2111_2": { + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_38", + "nixpkgs-regression": "nixpkgs-regression_7" + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "nixpkgs-2111_3": { + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_8" + }, "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "nixpkgs-2111_4": { + "nixago": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_5": { + "nixago-exts": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs-2111_6": { + "nixago-exts_2": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs-2111_7": { + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_8": { + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs-2111_9": { + "nixlib": { "locked": { - "lastModified": 1640283207, - "narHash": "sha256-SCwl7ZnCfMDsuSYvwIroiAlk7n33bW8HFfY8NvKhcPA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "64c7e3388bbd9206e437713351e814366e0c3284", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205": { + "nixlib_2": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205_2": { + "nixlib_3": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_4": { + "nixpkgs-2003": { "locked": { - "lastModified": 1663981975, - "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs-2003_2": { "locked": { - "lastModified": 1669997163, - "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs-2003_3": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-regression": { + "nixpkgs-2003_4": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_10": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_11": { + "nixpkgs-2003_5": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_12": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_13": { + "nixpkgs-2003_6": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_14": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_15": { + "nixpkgs-2003_7": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_17": { + "nixpkgs-2105": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_2": { + "nixpkgs-2105_2": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_3": { + "nixpkgs-2105_3": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_4": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_5": { + "nixpkgs-2105_5": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_6": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_7": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_8": { + "nixpkgs-2111": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_9": { + "nixpkgs-2111_2": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-2111_3": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_10": { + "nixpkgs-2111_4": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_11": { + "nixpkgs-2111_5": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-2111_6": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-2111_7": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_14": { + "nixpkgs-2205": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_15": { + "nixpkgs-2205_2": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_16": { + "nixpkgs-2205_3": { "locked": { - "lastModified": 1641285291, - "narHash": "sha256-KYaOBNGar3XWTxTsYPr9P6u74KAqNq0wobEC236U+0c=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0432195a4b8d68faaa7d3d4b355260a3120aeeae", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_17": { + "nixpkgs-2211": { "locked": { - "lastModified": 1635295995, - "narHash": "sha256-sGYiXjFlxTTMNb4NSkgvX+knOOTipE6gqwPUQpxNF+c=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22a500a3f87bbce73bd8d777ef920b43a636f018", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_18": { + "nixpkgs-2211_2": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_19": { + "nixpkgs-2305": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs-2311": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs-docker": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs-regression": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-unstable_5": { + "nixpkgs-regression_10": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_6": { + "nixpkgs-regression_11": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_7": { + "nixpkgs-regression_13": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs-regression_14": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-unstable_9": { + "nixpkgs-regression_2": { "locked": { - "lastModified": 1663905476, - "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_10": { + "nixpkgs-regression_4": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixos-21.11", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_11": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_13": { + "nixpkgs-regression_8": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_14": { + "nixpkgs-regression_9": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { @@ -10849,13 +6808,13 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -10865,161 +6824,165 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_18": { + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_19": { + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_20": { + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_21": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1701336116, + "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_22": { + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_10": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_11": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "original": { + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_25": { + "nixpkgs_12": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_13": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11035,71 +6998,69 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_14": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_28": { + "nixpkgs_15": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_16": { "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_17": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_30": { + "nixpkgs_18": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11114,58 +7075,75 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_19": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_32": { + "nixpkgs_20": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_21": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_22": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { @@ -11175,7 +7153,23 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_23": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_24": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11191,83 +7185,100 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_25": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_26": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_38": { + "nixpkgs_27": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-20.09-small", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_29": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_40": { + "nixpkgs_30": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11282,7 +7293,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_31": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -11298,7 +7309,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_32": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -11314,7 +7325,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_33": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11330,29 +7341,29 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_34": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_35": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -11362,91 +7373,90 @@ "type": "github" } }, - "nixpkgs_46": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "nixpkgs_36": { + "locked": { + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_37": { "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_38": { "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_49": { + "nixpkgs_39": { "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_50": { + "nixpkgs_40": { "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { @@ -11454,21 +7464,39 @@ "type": "indirect" } }, - "nixpkgs_51": { + "nixpkgs_41": { "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_42": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11483,74 +7511,75 @@ "type": "indirect" } }, - "nixpkgs_53": { + "nixpkgs_44": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_45": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", + "ref": "nixos-20.09-small", "type": "indirect" } }, - "nixpkgs_55": { + "nixpkgs_46": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_47": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_57": { + "nixpkgs_48": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { @@ -11560,38 +7589,39 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_49": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_5": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -11607,131 +7637,107 @@ "type": "github" } }, - "nixpkgs_60": { + "nixpkgs_51": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_52": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_62": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_63": { + "nixpkgs_53": { "locked": { - "lastModified": 1677021523, - "narHash": "sha256-0EhZjJ3rq8ZTTJ6Trrf/9hYtnIry0OsyY2NKoQoOS5Q=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "5a5adc2ad7009851d7d0fc26311e42a93b171d2e", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_64": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_65": { + "nixpkgs_54": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_55": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_56": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_57": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { @@ -11739,22 +7745,21 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_58": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_7": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11769,23 +7774,7 @@ "type": "indirect" } }, - "nixpkgs_70": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_71": { + "nixpkgs_6": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -11800,37 +7789,22 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_60": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_73": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11845,72 +7819,60 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_62": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_76": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_77": { + "nixpkgs_63": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_78": { + "nixpkgs_64": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_65": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { @@ -11919,29 +7881,29 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_66": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixos-22.05", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs_67": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { @@ -11951,7 +7913,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11966,122 +7928,104 @@ "type": "indirect" } }, - "nixpkgs_9": { + "nixpkgs_69": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "node-process": { - "flake": false, + "nixpkgs_7": { "locked": { - "lastModified": 1648681325, - "narHash": "sha256-6oWDYmMb+V4x0jCoYDzKfBJMpr7Mx5zA3WMpNHspuSw=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "78675fbf8986c87c0d2356b727a0ec2060f1adba", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "node-process_2": { - "flake": false, + "nixpkgs_70": { "locked": { - "lastModified": 1654323094, - "narHash": "sha256-zbmpZeBgUUly8QgR2mrVUN0A+0iLczufNvCCRxAo3GY=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "ec20745f17cb4fa8824fdf341d1412c774bc94b9", + "lastModified": 1697723726, + "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "node-snapshot": { - "inputs": { - "customConfig": "customConfig_4", - "haskellNix": "haskellNix_4", - "iohkNix": "iohkNix_4", - "membench": "membench", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example", - "utils": "utils_24" + "nixpkgs_71": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_8": { "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "node-snapshot_2": { - "inputs": { - "customConfig": "customConfig_8", - "haskellNix": "haskellNix_8", - "iohkNix": "iohkNix_8", - "membench": "membench_3", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "haskellNix", - "nixpkgs-2105" - ], - "plutus-example": "plutus-example_2", - "utils": "utils_29" - }, + "nixpkgs_9": { "locked": { - "lastModified": 1645120669, - "narHash": "sha256-2MKfGsYS5n69+pfqNHb4IH/E95ok1MD7mhEYfUpRcz4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "7f00e3ea5a61609e19eeeee4af35241571efdf5c", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nomad": { "inputs": { - "nix": "nix_2", - "nixpkgs": "nixpkgs_10", - "utils": "utils_2" + "nix": "nix_3", + "nixpkgs": "nixpkgs_17", + "utils": "utils_4" }, "locked": { "lastModified": 1648128770, @@ -12100,11 +8044,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell", + "devshell": "devshell_2", "inclusive": "inclusive", - "nix": "nix_3", - "nixpkgs": "nixpkgs_12", - "utils": "utils_3" + "nix": "nix_4", + "nixpkgs": "nixpkgs_19", + "utils": "utils_5" }, "locked": { "lastModified": 1648029666, @@ -12122,11 +8066,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_4", - "nix": "nix_5", - "nixpkgs": "nixpkgs_24", - "utils": "utils_8" + "nix": "nix_6", + "nixpkgs": "nixpkgs_31", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -12144,11 +8088,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": "inclusive_9", - "nix": "nix_10", - "nixpkgs": "nixpkgs_41", - "utils": "utils_17" + "nix": "nix_11", + "nixpkgs": "nixpkgs_48", + "utils": "utils_19" }, "locked": { "lastModified": 1648029666, @@ -12166,10 +8110,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_13", - "utils": "utils_4" + "nixpkgs": "nixpkgs_20", + "utils": "utils_6" }, "locked": { "lastModified": 1649836589, @@ -12187,10 +8131,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_25", - "utils": "utils_9" + "nixpkgs": "nixpkgs_32", + "utils": "utils_11" }, "locked": { "lastModified": 1658244176, @@ -12208,10 +8152,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_42", - "utils": "utils_18" + "nixpkgs": "nixpkgs_49", + "utils": "utils_20" }, "locked": { "lastModified": 1649836589, @@ -12229,9 +8173,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_9", - "nixpkgs": "nixpkgs_39", - "utils": "utils_16" + "nix": "nix_10", + "nixpkgs": "nixpkgs_46", + "utils": "utils_18" }, "locked": { "lastModified": 1648128770, @@ -12248,6 +8192,21 @@ "type": "github" } }, + "nosys": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, "ogmios": { "flake": false, "locked": { @@ -12267,236 +8226,64 @@ }, "ogmios-nixos": { "inputs": { - "CHaP": "CHaP_4", - "blank": "blank_6", - "cardano-configurations": "cardano-configurations_3", - "cardano-node": "cardano-node_3", - "flake-compat": "flake-compat_15", - "haskell-nix": "haskell-nix_6", - "iohk-nix": "iohk-nix_4", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1668087435, - "narHash": "sha256-pbx/+mP2pu4vQuTV3YtFXrOZOVOBS9JH9eDqgjnHyZ4=", - "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "3b229c1795efa30243485730b78ea053992fdc7a", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "ogmios", - "type": "github" - } - }, - "ogmios_2": { - "inputs": { - "CHaP": "CHaP_2", - "blank": "blank_4", + "CHaP": "CHaP_3", + "blank": "blank_5", "cardano-configurations": "cardano-configurations_2", - "cardano-node": "cardano-node_2", - "flake-compat": "flake-compat_11", - "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_3", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_13", + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" + ], + "ogmios-src": [ + "ctl", + "ogmios" ] }, "locked": { - "lastModified": 1670513793, - "narHash": "sha256-A3qj7tUSjya+ZI4lFkdJbOxelQhgQLc9RNPhcNJLIkw=", + "lastModified": 1695289922, + "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" }, "original": { "owner": "mlabs-haskell", - "repo": "ogmios", - "rev": "a7687bc03b446bc74564abe1873fbabfa1aac196", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_10": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_11": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_12": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_13": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_14": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_15": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_16": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_17": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" } }, - "old-ghc-nix_2": { + "ogmios_2": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1691769233, + "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", "type": "github" }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "original": { + "owner": "CardanoSolutions", + "ref": "v6.0.0", + "repo": "ogmios", "type": "github" } }, - "old-ghc-nix_3": { + "old-ghc-nix": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12513,7 +8300,7 @@ "type": "github" } }, - "old-ghc-nix_4": { + "old-ghc-nix_2": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12530,7 +8317,7 @@ "type": "github" } }, - "old-ghc-nix_5": { + "old-ghc-nix_3": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12547,7 +8334,7 @@ "type": "github" } }, - "old-ghc-nix_6": { + "old-ghc-nix_4": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12564,7 +8351,7 @@ "type": "github" } }, - "old-ghc-nix_7": { + "old-ghc-nix_5": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12581,7 +8368,7 @@ "type": "github" } }, - "old-ghc-nix_8": { + "old-ghc-nix_6": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12598,7 +8385,7 @@ "type": "github" } }, - "old-ghc-nix_9": { + "old-ghc-nix_7": { "flake": false, "locked": { "lastModified": 1631092763, @@ -12618,11 +8405,11 @@ "ops-lib": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { @@ -12663,199 +8450,65 @@ "type": "github" } }, - "ouroboros-network": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_2": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_3": { - "flake": false, - "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", - "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ouroboros-network", - "type": "github" - } - }, - "ouroboros-network_4": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1643385024, - "narHash": "sha256-9R4Z1jBsTcEgBHxhzjCJnroEcdfMsTjf8kwg6uPue+Q=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "ouroboros-network", - "rev": "8e97076176d465f5f4f86d5b5596220272630649", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "ouroboros-network", + "repo": "ops-lib", "type": "github" } }, "plutip": { "inputs": { - "CHaP": "CHaP_5", - "cardano-addresses": "cardano-addresses", - "cardano-node": "cardano-node_4", - "cardano-wallet": "cardano-wallet_2", - "flake-compat": "flake-compat_18", - "haskell-nix": "haskell-nix_7", - "hw-aeson": "hw-aeson", - "iohk-nix": "iohk-nix_5", + "CHaP": "CHaP_4", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_14", + "hackage-nix": [ + "ctl", + "hackage-nix" + ], + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], "nixpkgs": [ "ctl", - "plutip", - "haskell-nix", - "nixpkgs-unstable" + "nixpkgs" ] }, "locked": { - "lastModified": 1682621645, - "narHash": "sha256-JXvTEmGzLDPfzLJxw+jvtOTR9fyIWlqm5a7IjRLBtGQ=", + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", "owner": "mlabs-haskell", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" }, "original": { "owner": "mlabs-haskell", + "ref": "gergely/version-bump", "repo": "plutip", - "rev": "1d35f53c7e4938c6df0fdd3bea6c5e9d5f704158", - "type": "github" - } - }, - "plutus-apps": { - "flake": false, - "locked": { - "lastModified": 1647347289, - "narHash": "sha256-dxKZ1Zvflyt6igYm39POV6X/0giKbfb4U7D1TvevQls=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "2a40552f4654d695f21783c86e8ae59243ce9dfa", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, - "plutus-apps_2": { - "flake": false, - "locked": { - "lastModified": 1654271253, - "narHash": "sha256-GQDPzyVtcbbESmckMvzoTEKa/UWWJH7djh1TWQjzFow=", - "owner": "input-output-hk", - "repo": "plutus-apps", - "rev": "61de89d33340279b8452a0dbb52a87111db87e82", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus-apps", - "type": "github" - } - }, - "plutus-example": { - "inputs": { - "customConfig": "customConfig_6", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "ctl", - "ogmios", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_23" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - } - }, - "plutus-example_2": { - "inputs": { - "customConfig": "customConfig_10", - "haskellNix": "haskellNix_10", - "iohkNix": "iohkNix_10", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "cardano-node", - "node-snapshot", - "plutus-example", - "haskellNix", - "nixpkgs-2105" - ], - "utils": "utils_28" - }, - "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", "type": "github" } }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_12", + "flake-utils": "flake-utils_17", "nixpkgs": [ "ctl", "db-sync", @@ -12882,8 +8535,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_48" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1639823344, @@ -12902,8 +8555,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_14", + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", "rust-overlay": "rust-overlay" }, "locked": { @@ -12923,8 +8576,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_17", + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -12944,8 +8597,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_26", + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -12965,8 +8618,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_14", - "nixpkgs": "nixpkgs_43", + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -12986,8 +8639,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_16", - "nixpkgs": "nixpkgs_46", + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -13007,7 +8660,7 @@ "root": { "inputs": { "ctl": "ctl", - "flake-compat": "flake-compat_19", + "flake-compat": "flake-compat_15", "nixpkgs": [ "ctl", "nixpkgs" @@ -13289,126 +8942,82 @@ "type": "github" } }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_10": { - "flake": false, - "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_11": { - "flake": false, - "locked": { - "lastModified": 1669857425, - "narHash": "sha256-pmGWQ8poIUqU0V02Zm8aMPimcW2JHqKCFOnLSYX22Ow=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "76e7487150da63a6061c63fa83e69da97ec56ede", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_12": { + "secp256k1": { "flake": false, "locked": { - "lastModified": 1656898145, - "narHash": "sha256-EMgMzdANg6r5gEUkMtv5ujDo2/Kx7JJXoXiDKjDVoLw=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "835a5f2d2a1acafb77add430fc8c2dd47282ef32", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_13": { + "secp256k1_2": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "stackage_14": { + "sodium": { "flake": false, "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_15": { + "sodium_2": { "flake": false, "locked": { - "lastModified": 1639012797, - "narHash": "sha256-hiLyBa5XFBvxD+BcYPKyYd/0dNMccxAuywFNqYtIIvs=", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9ea6ea359da91c75a71e334b25aa7dc5ddc4b2c6", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "stackage_16": { + "stackage": { "flake": false, "locked": { - "lastModified": 1667610757, - "narHash": "sha256-H4dlMk5EW50xOtGo+5Srm3HGQV1+hY9ttgRQ+Sew5uA=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "01d8ea53f65b08910003a1990547bab75ed6068a", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -13417,14 +9026,14 @@ "type": "github" } }, - "stackage_17": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -13433,7 +9042,7 @@ "type": "github" } }, - "stackage_2": { + "stackage_3": { "flake": false, "locked": { "lastModified": 1655255731, @@ -13449,7 +9058,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_4": { "flake": false, "locked": { "lastModified": 1659402917, @@ -13465,7 +9074,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_5": { "flake": false, "locked": { "lastModified": 1650936094, @@ -13481,14 +9090,14 @@ "type": "github" } }, - "stackage_5": { + "stackage_6": { "flake": false, "locked": { - "lastModified": 1653355076, - "narHash": "sha256-mQdOgAyFkLUJBPrVDZmZQ2JRtgHKOQkil//SDdcjP1U=", + "lastModified": 1702426166, + "narHash": "sha256-j7wjtnR3HjT+OOq4GOWQMG+LufhAmz7CNDTJDW7ouXE=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "71b16ca68d6acd639121db43238896357fe53f54", + "rev": "8f4b266959e3087825631fb8c7b2ef2f4c915ed9", "type": "github" }, "original": { @@ -13497,7 +9106,7 @@ "type": "github" } }, - "stackage_6": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1654219171, @@ -13513,70 +9122,46 @@ "type": "github" } }, - "stackage_7": { - "flake": false, - "locked": { - "lastModified": 1665537461, - "narHash": "sha256-60tLFJ0poKp3IIPMvIDx3yzmjwrX7CngypfCQqV+oXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "fbf47f75f32aedcdd97143ec59c578f403fae35f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_8": { - "flake": false, - "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_9": { - "flake": false, - "locked": { - "lastModified": 1643073493, - "narHash": "sha256-5cPd1+i/skvJY9vJO1BhVRPcJObqkxDSywBEppDmb1U=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "48e1188855ca38f3b7e2a8dba5352767a2f0a8f7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, "std": { "inputs": { - "devshell": "devshell_6", + "arion": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_5", + "incl": "incl", + "makes": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_27", - "yants": "yants_2" + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", + "yants": "yants" }, "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", "owner": "divnix", "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { @@ -13587,20 +9172,20 @@ }, "std_2": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_7", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_24", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "flake-utils": "flake-utils_13", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_57", - "yants": "yants_4" + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" }, "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", "owner": "divnix", "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { @@ -13612,15 +9197,19 @@ "std_3": { "inputs": { "devshell": "devshell_15", - "nixpkgs": "nixpkgs_60", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", "yants": "yants_5" }, "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", "owner": "divnix", "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { @@ -13631,80 +9220,16 @@ }, "std_4": { "inputs": { - "blank": "blank_5", "devshell": "devshell_16", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_36", - "makes": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "microvm": [ - "ctl", - "ogmios", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_67", "yants": "yants_6" }, "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_5": { - "inputs": { - "blank": "blank_7", - "devshell": "devshell_17", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_44", - "makes": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", - "microvm": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_80", - "yants": "yants_7" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", "owner": "divnix", "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { @@ -13895,8 +9420,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_51" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -13917,7 +9442,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_9", "nixpkgs": [ "ctl", "db-sync", @@ -13992,7 +9517,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_14", "nixpkgs": [ "ctl", "db-sync", @@ -14020,215 +9545,79 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_20", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "capsules", - "bitte", - "blank" - ], - "terranix-examples": "terranix-examples_3" - }, - "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", - "owner": "terranix", - "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", - "type": "github" - }, - "original": { - "owner": "terranix", - "repo": "terranix", - "type": "github" - } - }, - "tullia": { - "inputs": { - "nix2container": "nix2container", - "nixpkgs": "nixpkgs_59", - "std": "std_3" - }, - "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": [ - "ctl", - "ogmios", - "haskell-nix", - "nixpkgs" - ], - "std": "std_4" - }, - "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_3", - "nixpkgs": [ - "ctl", - "ogmios-nixos", - "haskell-nix", - "nixpkgs" - ], - "std": "std_5" - }, - "locked": { - "lastModified": 1666200256, - "narHash": "sha256-cJPS8zBu30SMhxMe7I8DWutwqMuhPsEez87y9gxMKc4=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "575362c2244498e8d2c97f72861510fa72e75d44", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "utils": { - "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_10": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_11": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_12": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_13": { + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_3" + }, "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { - "owner": "kreisys", - "repo": "flake-utils", + "owner": "terranix", + "repo": "terranix", "type": "github" } }, - "utils_14": { + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", + "std": "std" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_15": { + "tullia_2": { + "inputs": { + "nix2container": "nix2container_3", + "nixpkgs": "nixpkgs_66", + "std": "std_4" + }, "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_16": { + "utils": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -14237,7 +9626,7 @@ "type": "github" } }, - "utils_17": { + "utils_10": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14252,7 +9641,7 @@ "type": "github" } }, - "utils_18": { + "utils_11": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14267,7 +9656,7 @@ "type": "github" } }, - "utils_19": { + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14282,22 +9671,22 @@ "type": "github" } }, - "utils_2": { + "utils_13": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_14": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14312,28 +9701,28 @@ "type": "github" } }, - "utils_21": { + "utils_15": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_22": { + "utils_16": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -14342,13 +9731,13 @@ "type": "github" } }, - "utils_23": { + "utils_17": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -14357,13 +9746,13 @@ "type": "github" } }, - "utils_24": { + "utils_18": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -14372,28 +9761,28 @@ "type": "github" } }, - "utils_25": { + "utils_19": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_26": { + "utils_2": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -14402,22 +9791,22 @@ "type": "github" } }, - "utils_27": { + "utils_20": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_28": { + "utils_21": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -14432,22 +9821,7 @@ "type": "github" } }, - "utils_29": { - "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_3": { + "utils_22": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -14462,13 +9836,13 @@ "type": "github" } }, - "utils_30": { + "utils_23": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14477,13 +9851,13 @@ "type": "github" } }, - "utils_31": { + "utils_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -14494,30 +9868,30 @@ }, "utils_4": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_5": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } @@ -14539,11 +9913,11 @@ }, "utils_7": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -14569,15 +9943,15 @@ }, "utils_9": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } @@ -14617,40 +9991,21 @@ } }, "yants": { - "inputs": { - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", - "owner": "divnix", - "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_2": { "inputs": { "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte", + "cardano-node", + "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", "type": "github" }, "original": { @@ -14659,9 +10014,9 @@ "type": "github" } }, - "yants_3": { + "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -14677,12 +10032,13 @@ "type": "github" } }, - "yants_4": { + "yants_3": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -14701,16 +10057,9 @@ "type": "github" } }, - "yants_5": { + "yants_4": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -14726,23 +10075,22 @@ "type": "github" } }, - "yants_6": { + "yants_5": { "inputs": { "nixpkgs": [ "ctl", - "ogmios", - "haskell-nix", - "tullia", + "db-sync", + "cardano-world", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { @@ -14751,23 +10099,23 @@ "type": "github" } }, - "yants_7": { + "yants_6": { "inputs": { "nixpkgs": [ "ctl", - "ogmios-nixos", - "haskell-nix", + "db-sync", + "cardano-world", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 112806582..abd88cd41 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; + rev = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 0b13ca4a2..deb9f2e1c 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -296,7 +296,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca" + , version = "774c005ae9ebd228e9b6c31a636b3470d11064dd" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index f176dc0c5..1c9dc4056 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; + version = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "6e4debe87ddbafaa3c77033888f9c998e28cd7ca"; - sha256 = "13cb7kadd1fgglzz69v0hmqr4x8zn1nrskxmjkmmss9g1izbi0ly"; + rev = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; + sha256 = "043ymj0p9lw6agd3wzbvslpd6k77fs43h02l4ci4ba6nin7p45sf"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 1f2e3a484b06432d9e274fc840eba621eadb1c7e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Dec 2023 14:48:54 +0400 Subject: [PATCH 462/478] Remove searchable docs from nix machinery for now --- doc/ctl-as-dependency.md | 2 +- flake.nix | 10 ++-- nix/default.nix | 126 +++------------------------------------ 3 files changed, 16 insertions(+), 122 deletions(-) diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 551e7a121..0be2285ae 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -24,7 +24,7 @@ The following caveats alway applies when using CTL from your project: CTL exposes two `overlay`s from its flake. You can use these in the Nix setup of your own project to use the same setup as we do, e.g. the same packages and PS builders: -- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), run CTL contracts on a private testnet using Plutip (`runPlutipTest`), or build Pursuit documentation (`buildSearchablePursDocs` and `launchSearchablePursDocs`) +- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), and run CTL contracts on a private testnet using Plutip (`runPlutipTest`). - `overlays.runtime` contains various packages and other tools used in CTL's runtime, including `ogmios`, `kupo`, and `plutip-server`. It also defines `buildCtlRuntime` and `launchCtlRuntime` to help you quickly launch all runtime services (see the [runtime docs](./runtime.md)) We've split the overlays into two components to allow users to more easily choose which parts of CTL's Nix infrastructure they would like to directly consume. For example, some users do not require a pre-packaged runtime and would prefer to build it themselves with more control over its components (e.g. by directly using `ogmios` from their own `inputs`). Such users might still like to use our `purescript` overlay -- splitting the `overlays` allows us to support this. `overlays.runtime` also contains several haskell.nix packages which may cause issues with `hackage.nix` versions in your own project. diff --git a/flake.nix b/flake.nix index 50328367e..a38d4555d 100644 --- a/flake.nix +++ b/flake.nix @@ -215,7 +215,7 @@ modules = [ (buildCtlRuntime pkgs { }) ]; }; - docs = project.buildSearchablePursDocs { + docs = project.buildPursDocs { packageName = projectName; }; }; @@ -245,9 +245,11 @@ devShell = project.devShell; apps = { - docs = project.launchSearchablePursDocs { - builtDocs = packages.docs; - }; + # TODO: restore this + # https://github.com/Plutonomicon/cardano-transaction-lib/issues/1578 + # docs = project.launchSearchablePursDocs { + # builtDocs = packages.docs; + # }; }; }; diff --git a/nix/default.nix b/nix/default.nix index 8eaf5fddb..9821b1e6b 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -255,6 +255,9 @@ let mkdir -p output .spago cp -rp ${pursDependencies}/.spago/* .spago cp -rp ${pursDependencies}/output/* output + # note that we copy the entire source directory, not just $src/src, + # because we need sources in ./examples and ./test + cp -rp $src ./src # add write permissions for the PS compiler to use # `output/cache-db.json` @@ -264,7 +267,7 @@ let psa ${pkgs.lib.optionalString strictComp "--strict" } \ --censor-lib \ --is-lib=.spago ".spago/*/*/src/**/*.purs" ${pkgs.lib.optionalString hasExtraSources ''--is-lib=./${extraSourcesDir} "${extraSourcesDir}/*/**/*.purs"''} \ - --censor-codes=${builtins.concatStringsSep "," censorCodes} "$src/**/*.purs" \ + --censor-codes=${builtins.concatStringsSep "," censorCodes} "./src/**/*.purs" \ -gsourcemaps,js ''; # We also need to copy all of `src` here, since compiled modules in `output` @@ -588,143 +591,32 @@ let --entry ./entrypoint.js ''; - pursDocsSearchNpm = - let - fakePackage = builtins.toJSON { - name = "pursDocsSearch"; - version = "0.0.0"; - dependencies = { "purescript-docs-search" = "0.0.12"; }; - }; - fakePackageLock = builtins.toJSON { - requires = true; - lockfileVersion = 1; - dependencies = { - punycode = { - version = "2.1.1"; - resolved = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"; - integrity = "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="; - }; - purescript-docs-search = { - version = "0.0.12"; - resolved = "https://registry.npmjs.org/purescript-docs-search/-/purescript-docs-search-0.0.12.tgz"; - integrity = "sha512-NdhQ3AxbKR2wO+WT2fGa8Rw26JydL6Bgnf73WOazmlfHt4uszblYqiWfaZygyUMOQFnXtpqz5TQj6DW6nk4nEg=="; - }; - }; - }; - in - import - (pkgs.runCommand "purescript-docs-search-npm" - { - buildInputs = [ pkgs.nodePackages.node2nix ]; - } - '' - mkdir $out - cd $out - cat > package.json < package-lock.json < Date: Fri, 15 Dec 2023 14:56:55 +0400 Subject: [PATCH 463/478] Update template's .gitignore --- templates/ctl-scaffold/.gitignore | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/templates/ctl-scaffold/.gitignore b/templates/ctl-scaffold/.gitignore index 8732a23c8..628f00fcd 100644 --- a/templates/ctl-scaffold/.gitignore +++ b/templates/ctl-scaffold/.gitignore @@ -20,9 +20,5 @@ test-data/preprod test-data/mainnet test-data/keys .projectile -/dist/* -!/dist/esbuild/ -/dist/esbuild/* -!/dist/esbuild/index.html -!/dist/esbuild/wrapper.js +/dist/ output.js From 9f05925e35bef54806b7177ad6aaa606d6576fe0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Dec 2023 17:01:04 +0400 Subject: [PATCH 464/478] Fix jssha import --- src/Internal/Hashing.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index db5d6174d..0b647d6da 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -2,8 +2,8 @@ import Blake2 from "blakejs"; -import SHA256 from "jssha/dist/sha256"; -import SHA3 from "jssha/dist/sha3"; +import SHA256 from "jssha/sha256"; +import SHA3 from "jssha/sha3"; let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { From a742692d605aabd75043aee9eef0ecdfec63eacc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Dec 2023 17:07:16 +0400 Subject: [PATCH 465/478] Update CHANGELOG, docs and README --- CHANGELOG.md | 107 ++++++++++++++++++++++++++----- README.md | 2 +- doc/development.md | 12 ++-- templates/ctl-scaffold/flake.nix | 8 ++- 4 files changed, 103 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bab1b1f77..acad5c51a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,47 +12,52 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Changed](#changed) - [Fixed](#fixed) - [Removed](#removed) -- [[v6.0.0]](#v600) +- [[v7.0.0]](#v700) - [Added](#added-1) - [Changed](#changed-1) - [Fixed](#fixed-1) - [Removed](#removed-1) -- [[v5.0.0]](#v500) +- [[v6.0.0]](#v600) - [Added](#added-2) - [Changed](#changed-2) - - [Removed](#removed-2) - [Fixed](#fixed-2) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-3) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed-2) +- [[v5.0.0]](#v500) - [Added](#added-3) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-4) - [Changed](#changed-3) - [Removed](#removed-3) + - [Fixed](#fixed-3) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-4) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-4) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-5) - [Changed](#changed-4) - [Removed](#removed-4) - [Fixed](#fixed-5) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-6) - [Changed](#changed-5) - [Removed](#removed-5) - [Fixed](#fixed-6) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-7) - - [Removed](#removed-6) - [Changed](#changed-6) + - [Removed](#removed-6) - [Fixed](#fixed-7) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-8) + - [Removed](#removed-7) + - [Changed](#changed-7) - [Fixed](#fixed-8) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-9) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-10) - [[1.0.0] - 2022-06-10](#100---2022-06-10) @@ -67,6 +72,74 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +## [v7.0.0] + +### Added + +- [esbuild](esbuild.github.io/) bundler support. + - To update your package to use esbuild, add new `devDependencies` to your `package.json`: + +```diff ++ "esbuild": "0.18.11", ++ "esbuild-plugin-polyfill-node": "^0.3.0", ++ "esbuild-plugin-wasm": "^1.1.0", +``` + + Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). + +### Changed + +- PureScript compiler version has been updated to v0.15.8. ([#1521](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1521)) + - PureScript v0.15.x outputs and expects ES modules (instead of CommonJS), which means that FFI code in dependent projects should be updated to use [ES module-style imports and exports](https://nodejs.org/api/esm.html), and consumers of CTL-based bundles should expect ES modules as well. + - Due to limitations of ES modules (inability to patch at runtime), CTL now uses vendored versions of CSL for node and the browser: + +```diff +- "@emurgo/cardano-serialization-lib-browser": "11.2.1", +- "@emurgo/cardano-serialization-lib-nodejs": "11.2.1", ++ "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", ++ "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", +``` + + - Our vendored version of `json-bigint` should be updated: + +```diff +- "@mlabs-haskell/json-bigint": "1.0.0", ++ "@mlabs-haskell/json-bigint": "2.0.0", +``` + + - `utf-8-validate` NPM package has been added (used during bundling): + +```diff ++ "utf-8-validate": "^5.0.10", +``` + +- WebPack bundling machinery updates: + +```diff +- "webpack": "5.67.0", +- "webpack-cli": "4.10", +- "webpack-dev-server": "4.7.4" ++ "webpack": "5.88.1", ++ "webpack-cli": "5.1.4", ++ "webpack-dev-server": "4.15.1" +``` + +- Nix machinery refactorings ([#1521](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1521)): + - `buildPursDependencies` is a new function that allows to build everything except the source files of a project itself. It allows to skip rebuilding all the dependencies when using Nix every time. `buildPursProject` calls `buildPursDependencies` automatically. + - `censorCodes` and `strictComp` arguments have been removed from `purescriptProject` and added to `buildPursDependencies` and `buildPursProject` for more granular control. + - `runPursTest`: new `psEntryPoint` argument, for PureScript-level entry point function ("main" by default). + - `runE2ETest`: new `runnerMain` and `runnerPsEntryPoint` arguments to control which module should be the runner. + - `runE2ETest`: new arguments for configuring the E2E test suite: `envFile`, `emptySettingsFile` and `testTimeout`. + - `bundlePursProjectEsbuild` is a bundling function that uses newly introduced `esbuild`. + - `bundlePursProject` is renamed to `bundlePursProjectWebpack` +- `Data.BigInt` (`purescript-bigints`) dependency was replaced with `JS.BigInt` (`purescript-js-bigints`), that uses native JavaScript BigInt instead of `BigInteger.js` library. You can remove `big-integer` NPM dependency from your project, if you don't use it elsewhere. ([#1551](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1551)) + +### Fixed + +### Removed + +- Temporarily removed `buildSearchablePursDocs` and `launchSearchablePursDocs` from nix machinery - see [#1578](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1578) for context. Use `buildPursDocs` for now. ([#1521](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1521)) + ## [v6.0.0] ### Added diff --git a/README.md b/README.md index e96a722be..c2d164a06 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ You can find help, more information and ongoing discusion about the project here ## Funding acknowledgements -CTL is being developed by MLabs. The following companies/funds have contributed significan resources to development: +CTL is being developed by MLabs. The following companies/funds have contributed significant resources to development: - [IOHK](https://iohk.io/en/about/) - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) diff --git a/doc/development.md b/doc/development.md index 6dc416442..8928d5c6a 100644 --- a/doc/development.md +++ b/doc/development.md @@ -77,7 +77,7 @@ To **build** the project **without bundling and for a NodeJS environment**: - `npm run staking-test` to run [Plutip](./plutip-testing.md)-powered tests for ADA staking functionality - [entry point](../test/Plutip/Staking.purs) - `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs [some setup](./blockfrost.md#setting-up-a-blockfrost-powered-test-suite)) - [entry point](../test/Blockfrost/Contract.purs) - `npm run blockfrost-local-test` for self-hosted [Blockfrost-powered tests](./blockfrost.md) (requires a [local Blockfrost runtime](./blockfrost.md#running-blockfrost-locally)) - [entry point](../test/Blockfrost/Contract.purs) -- `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP) +- `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP: `npm run start-runtime` and `npm run webpack-serve` or `esbuild-serve`) #### With Nix @@ -100,16 +100,16 @@ Here and below, `` should be replaced with [one of the supported systems To run or build/bundle the project for the browser: -- `npm run e2e-serve` will start a Webpack development server at `localhost:4008`, which is required for [E2E tests](./e2e-testing.md) -- `npm run build` will output a Webpack-bundled example module to `dist` (or `nix build -L .#ctl-example-bundle-web` to build an example module using Nix into `./result/`) +- `npm run webpack-serve` will start a Webpack development server at `localhost:4008`, which is required for [E2E tests](./e2e-testing.md) +- `npm run {webpack|esbuild}-bundle` will output a bundled example module to `dist` (or `nix build -L .#ctl-example-bundle-web-{webpack|esbuild}` to build an example module using Nix into `./result/`) By default, Webpack will build a [Purescript module](../examples/ByUrl.purs) that serves multiple example `Contract`s depending on URL (see [here](./e2e-testing.md#serving-the-contract-to-be-tested)). You can point Webpack to another Purescript entrypoint by changing the `ps-bundle` variable in the Makefile or in the `main` argument in the flake's `packages.ctl-examples-bundle-web`. -You will also need a light wallet extension pre-configured. +You will also need a light wallet extension pre-configured to run a `Contract`. -**Note**: The `BROWSER_RUNTIME` environment variable must be set to `1` in order to build/bundle the project properly for the browser (e.g. `BROWSER_RUNTIME=1 webpack ...`). For Node environments, leave this variable unset or set it to `0`. +**Note**: The `BROWSER_RUNTIME` environment variable must be set to `1` in order to build/bundle the project properly for the browser (e.g. `BROWSER_RUNTIME=1 webpack ...`). For Node environments, leave this variable unset. -**Note**: The `KUPO_HOST` environment variable must be set the base URL of the Kupo service in order to successfully run the project for the browser (e.g. `KUPO_HOST=http://localhost:1442`), otherwise all requests to Kupo will fail. +**Note**: The `KUPO_HOST` environment variable must be set to the base URL of the Kupo service in order to successfully serve the project for the browser (by default, `KUPO_HOST=http://localhost:1442`). ## Generating PS documentation diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index abd88cd41..77deb50da 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -1,6 +1,12 @@ { description = "ctl-scaffold"; + nixConfig = { + extra-substituters = [ "https://plutonomicon.cachix.org" ]; + extra-trusted-public-keys = [ "plutonomicon.cachix.org-1:evUxtNULjCjOipxwAnYhNFeF/lyYU1FeNGaVAnm+QQw=" ]; + bash-prompt = "[\\[\\e[0;1m\\]\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; + }; + inputs = { flake-compat = { url = "github:edolstra/flake-compat"; @@ -192,6 +198,4 @@ default = (psProjectFor pkgs).devShell; }); }; - - nixConfig.bash-prompt = "[\\[\\e[0;1m\\]\\[\\033[33m\\]$(git rev-parse --abbrev-ref HEAD) \\[\\e[0;32m\\]\\w\\[\\e[0m\\]]\\[\\e[0m\\]$ \\[\\e[0m\\]"; } From d78a8080b10cd3605448a80cea22077c3b5a7222 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Dec 2023 17:10:24 +0400 Subject: [PATCH 466/478] Update the template --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index e4fbc9170..1c4daa222 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1702493588, - "narHash": "sha256-Thdyj43WqEUiI1QAOIh250zTLtV7fT7aU4bTdIGsfhA=", + "lastModified": 1702645636, + "narHash": "sha256-GiSImwp0QoKheOhX7aftGpYayPdRdu3W1TcXY1GMUuk=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "774c005ae9ebd228e9b6c31a636b3470d11064dd", + "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "774c005ae9ebd228e9b6c31a636b3470d11064dd", + "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 77deb50da..ebfe7a1d9 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; + rev = "a742692d605aabd75043aee9eef0ecdfec63eacc"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index deb9f2e1c..ca6a76cca 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -296,7 +296,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "774c005ae9ebd228e9b6c31a636b3470d11064dd" + , version = "a742692d605aabd75043aee9eef0ecdfec63eacc" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 1c9dc4056..d792bddff 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; + version = "a742692d605aabd75043aee9eef0ecdfec63eacc"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "774c005ae9ebd228e9b6c31a636b3470d11064dd"; - sha256 = "043ymj0p9lw6agd3wzbvslpd6k77fs43h02l4ci4ba6nin7p45sf"; + rev = "a742692d605aabd75043aee9eef0ecdfec63eacc"; + sha256 = "1sajii8n65rpspbfsxjiyz41m5hsxnkysmz8g2hq4hkl1adqh90s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 485cf796790817935e59c8fd387aeb647b978bd9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 15 Dec 2023 17:14:47 +0400 Subject: [PATCH 467/478] Fix markdown link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index acad5c51a..b495a7fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,7 +76,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- [esbuild](esbuild.github.io/) bundler support. +- [esbuild](https://esbuild.github.io/) bundler support. - To update your package to use esbuild, add new `devDependencies` to your `package.json`: ```diff From 5cef4dea87d917327161ac09d493824928d9fe80 Mon Sep 17 00:00:00 2001 From: Hercules CI Effects Date: Sun, 17 Dec 2023 12:03:18 +0000 Subject: [PATCH 468/478] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'CHaP': 'github:input-output-hk/cardano-haskell-packages/1ff7483a6d2670c8627de92779a2b92a989293cd' (2023-12-11) → 'github:input-output-hk/cardano-haskell-packages/4a236a8ad9e3c6d20235de27eacbe3d4de72479c' (2023-12-16) • Updated input 'hackage-nix': 'github:input-output-hk/hackage.nix/524b4a4d0e06119cd226aa9f5d57986547bd29b4' (2023-12-13) → 'github:input-output-hk/hackage.nix/20bd4b5f667f892230d4a28ea4607e85ce9bc44e' (2023-12-17) • Updated input 'haskell-nix': 'github:input-output-hk/haskell.nix/78c22a52a0d80d7e29c12f74df871ebb58a0795d' (2023-12-13) → 'github:input-output-hk/haskell.nix/6ce1c8ab2a6d4af5721b22bd95968439b8c3c307' (2023-12-17) • Updated input 'haskell-nix/stackage': 'github:input-output-hk/stackage.nix/8f4b266959e3087825631fb8c7b2ef2f4c915ed9' (2023-12-13) → 'github:input-output-hk/stackage.nix/4aab61a73de63a828ac33eb588e1e65411020a0c' (2023-12-17) • Updated input 'hercules-ci-effects': 'github:hercules-ci/hercules-ci-effects/0bd99f5ab7ec7a74c11238bd02bb29e709c14328' (2023-11-07) → 'github:hercules-ci/hercules-ci-effects/31b6cd7569191bfcd0a548575b0e2ef953ed7d09' (2023-11-26) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index e75912f61..3a8562dcd 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1702290471, - "narHash": "sha256-uivAP05RENSzQDbDjAU3Fbq+AiDDpcNaHAzvOZM1fik=", + "lastModified": 1702742788, + "narHash": "sha256-lSU0M27LC0d60cJ2C2Kdo6gBwTCCYRiALbD528CoTtc=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "1ff7483a6d2670c8627de92779a2b92a989293cd", + "rev": "4a236a8ad9e3c6d20235de27eacbe3d4de72479c", "type": "github" }, "original": { @@ -3506,11 +3506,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1702426969, - "narHash": "sha256-rbhpiqSBFwLxTO4Qx2sJm7BzBQo9MidVWlL9W21HHy4=", + "lastModified": 1702772694, + "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "524b4a4d0e06119cd226aa9f5d57986547bd29b4", + "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", "type": "github" }, "original": { @@ -3743,11 +3743,11 @@ "stackage": "stackage_6" }, "locked": { - "lastModified": 1702428573, - "narHash": "sha256-KpY2FsKQs6vUABgQFjUCqaTPVN5dStNjt0Dxjw7CA9g=", + "lastModified": 1702774226, + "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "78c22a52a0d80d7e29c12f74df871ebb58a0795d", + "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", "type": "github" }, "original": { @@ -3926,11 +3926,11 @@ "nixpkgs": "nixpkgs_70" }, "locked": { - "lastModified": 1699381651, - "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", + "lastModified": 1701009247, + "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "0bd99f5ab7ec7a74c11238bd02bb29e709c14328", + "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", "type": "github" }, "original": { @@ -8939,11 +8939,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1702426166, - "narHash": "sha256-j7wjtnR3HjT+OOq4GOWQMG+LufhAmz7CNDTJDW7ouXE=", + "lastModified": 1702771826, + "narHash": "sha256-4jFlIYY/hzkRrt4mXpUV81wC9ge4VpC5zcmQANl8GQg=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "8f4b266959e3087825631fb8c7b2ef2f4c915ed9", + "rev": "4aab61a73de63a828ac33eb588e1e65411020a0c", "type": "github" }, "original": { From abe97cf61f00f739300935fa4909da871fac8198 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 19 Dec 2023 19:41:30 +0300 Subject: [PATCH 469/478] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b495a7fc1..2dcb674b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -85,7 +85,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) + "esbuild-plugin-wasm": "^1.1.0", ``` - Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). +Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). ### Changed From f7c2ab6faf4bd481bddb16f4523a515e6e7fb3d6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 19 Dec 2023 23:31:18 +0300 Subject: [PATCH 470/478] Update PS version in the GH pages deployment script --- .github/workflows/pages.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 20a4e0441..f0250567f 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -16,10 +16,8 @@ jobs: - name: Install and Build run: | npm install -g spago - npm install -g purescript@0.14.5 - npm install -g purescript-docs-search - spago docs --no-search - purescript-docs-search build-index --package-name cardano-transaction-lib + npm install -g purescript@0.15.8 + spago docs - name: Deploy uses: JamesIves/github-pages-deploy-action@v4.3.3 with: From 718f9e2a661fa780b62cee8a40c3243b91ff340b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Dec 2023 21:06:15 +0400 Subject: [PATCH 471/478] Use purescript-cip30 --- examples/Cip30.purs | 33 ++-- examples/KeyWallet/Cip30.purs | 3 +- examples/SignData.purs | 3 +- packages.dhall | 16 ++ spago.dhall | 5 +- src/Contract/Transaction.purs | 1 - src/Contract/Wallet.purs | 14 +- src/Internal/BalanceTx/BalanceTx.purs | 19 +- src/Internal/BalanceTx/Error.purs | 4 - src/Internal/BalanceTx/Sync.purs | 10 +- src/Internal/BalanceTx/Types.purs | 7 - src/Internal/Contract/Monad.purs | 10 +- src/Internal/Contract/Sign.purs | 13 +- src/Internal/Contract/Wallet.purs | 67 ++++--- src/Internal/Wallet.js | 77 +------- src/Internal/Wallet.purs | 254 +++----------------------- src/Internal/Wallet/Cip30.purs | 223 +++++++++------------- test/Main.purs | 2 +- 18 files changed, 209 insertions(+), 552 deletions(-) diff --git a/examples/Cip30.purs b/examples/Cip30.purs index 42ac0c8f8..839e92d5c 100644 --- a/examples/Cip30.purs +++ b/examples/Cip30.purs @@ -1,5 +1,5 @@ -- | This module demonstrates the use of the CIP-30 functions --- | using an external wallet. +-- | using an external wallet. Uses `purescript-cip30` module Ctl.Examples.Cip30 ( main , example @@ -8,23 +8,16 @@ module Ctl.Examples.Cip30 import Contract.Prelude +import Cardano.Wallet.Cip30 as Cip30 import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) import Contract.Prim.ByteArray (rawBytesFromAscii) import Contract.Wallet - ( WalletExtension - , apiVersion - , getChangeAddress + ( getChangeAddress , getRewardAddresses , getUnusedAddresses - , getWallet - , icon - , isEnabled - , isWalletAvailable - , name , signData - , walletToWalletExtension ) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) @@ -35,25 +28,22 @@ main = example testnetNamiConfig example :: ContractParams -> Effect Unit example cfg = launchAff_ do - mWallet <- runContract cfg getWallet - let mSupportWallet = walletToWalletExtension =<< mWallet - _ <- traverse nonConfigFunctions mSupportWallet + traverse_ nonConfigFunctions =<< liftEffect Cip30.getAvailableWallets runContract cfg contract -nonConfigFunctions :: WalletExtension -> Aff Unit +nonConfigFunctions :: String -> Aff Unit nonConfigFunctions extensionWallet = do log "Functions that don't depend on `Contract`" - performAndLog "isWalletAvailable" (liftEffect <<< isWalletAvailable) - performAndLog "isEnabled" isEnabled - performAndLog "apiVersion" apiVersion - performAndLog "name" name - performAndLog "icon" icon + performAndLog "isEnabled" $ Cip30.isEnabled + performAndLog "apiVersion" $ liftEffect <<< Cip30.getApiVersion + performAndLog "name" $ liftEffect <<< Cip30.getName + performAndLog "icon" $ liftEffect <<< Cip30.getIcon where performAndLog :: forall (a :: Type) . Show a => String - -> (WalletExtension -> Aff a) + -> (String -> Aff a) -> Aff Unit performAndLog msg f = do result <- f extensionWallet @@ -70,8 +60,7 @@ contract = do mRewardAddress <- performAndLog "getRewardAddresses" getRewardAddresses rewardAddr <- liftMaybe (error "can't get reward address") $ head mRewardAddress - mChangeAddress <- performAndLog "getChangeAddress" getChangeAddress - changeAddress <- liftMaybe (error "can't get change address") mChangeAddress + changeAddress <- performAndLog "getChangeAddress" getChangeAddress _ <- performAndLog "signData changeAddress" $ signData changeAddress dataBytes void $ performAndLog "signData rewardAddress" $ signData rewardAddr dataBytes where diff --git a/examples/KeyWallet/Cip30.purs b/examples/KeyWallet/Cip30.purs index 0f1470d1d..9d61e2b76 100644 --- a/examples/KeyWallet/Cip30.purs +++ b/examples/KeyWallet/Cip30.purs @@ -28,8 +28,7 @@ mkContract dat = do logInfo' "Running Examples.KeyWallet.Cip30" logInfo' "Funtions that depend on `Contract`" _ <- performAndLog "getUnusedAddresses" getUnusedAddresses - mChangeAddress <- performAndLog "getChangeAddress" getChangeAddress - changeAddress <- liftMaybe (error "can't get change address") mChangeAddress + changeAddress <- performAndLog "getChangeAddress" getChangeAddress _ <- performAndLog "signData changeAddress" $ try $ signData changeAddress dat rewardAddress <- performAndLog "getRewardAddresses" getRewardAddresses rewardAddr <- liftMaybe (error "can't get change address") $ head diff --git a/examples/SignData.purs b/examples/SignData.purs index cec35b1d6..24f58e6a5 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -23,7 +23,7 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.SignData" - changeAddress <- liftedM "Could not get change address" getChangeAddress + changeAddress <- getChangeAddress logInfo' $ "change address: " <> show changeAddress testSignDataWithAddress "changeAddress" changeAddress @@ -42,4 +42,3 @@ contract = do # liftedM "Could not get data signature" logInfo' $ "signData " <> addressLabel <> ": " <> show dataSignature void $ liftAff $ checkCip30SignDataResponse address dataSignature - diff --git a/packages.dhall b/packages.dhall index c73d456b0..0da3c2bb4 100644 --- a/packages.dhall +++ b/packages.dhall @@ -208,6 +208,22 @@ let additions = , repo = "https://github.com/purescript-contrib/purescript-js-bigints" , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" } + , cip30 = + { dependencies = + [ "console" + , "effect" + , "prelude" + , "aff" + , "aff-promise" + , "arrays" + , "maybe" + , "nullable" + , "literals" + , "untagged-union" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30" + , version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c" + } } in upstream // additions diff --git a/spago.dhall b/spago.dhall index 0cce4459f..1c74cebc0 100644 --- a/spago.dhall +++ b/spago.dhall @@ -16,9 +16,9 @@ You can edit this file as you like. , "arrays" , "avar" , "bifunctors" - , "js-bigints" , "bignumber" , "checked-exceptions" + , "cip30" , "console" , "control" , "crypto" @@ -39,6 +39,7 @@ You can edit this file as you like. , "http-methods" , "identity" , "integers" + , "js-bigints" , "js-date" , "lattice" , "lists" @@ -68,7 +69,6 @@ You can edit this file as you like. , "prelude" , "profunctor" , "profunctor-lenses" - , "toppokki" , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" @@ -83,6 +83,7 @@ You can edit this file as you like. , "stringutils" , "tailrec" , "these" + , "toppokki" , "transformers" , "tuples" , "typelevel" diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index d6121a876..c84b106b6 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -56,7 +56,6 @@ import Ctl.Internal.BalanceTx.Error , BalanceTxError ( BalanceInsufficientError , CouldNotConvertScriptOutputToTxInput - , CouldNotGetChangeAddress , CouldNotGetCollateral , InsufficientCollateralUtxos , CouldNotGetUtxos diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 5497a9e59..cf2dbeead 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -57,8 +57,9 @@ import Ctl.Internal.Plutus.Conversion , toPlutusUtxoMap ) import Ctl.Internal.Plutus.Conversion.Address (toPlutusAddressWithNetworkTag) +import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet - ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet, GenericCip30) + ( Wallet(KeyWallet, GenericCip30) , WalletExtension ( NamiWallet , GeroWallet @@ -69,19 +70,8 @@ import Ctl.Internal.Wallet , NuFiWallet , GenericCip30Wallet ) - , apiVersion - , icon - , isEnabled - , isEternlAvailable - , isFlintAvailable - , isGeroAvailable - , isLodeAvailable - , isNamiAvailable , isWalletAvailable - , name - , walletToWalletExtension ) as X -import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 40adae876..c9d95b8ba 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -5,7 +5,6 @@ module Ctl.Internal.BalanceTx import Prelude import Contract.Log (logWarn') -import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) @@ -37,13 +36,12 @@ import Ctl.Internal.BalanceTx.Constraints ) as Constraints import Ctl.Internal.BalanceTx.Error ( BalanceTxError - ( InsufficientCollateralUtxos - , UtxoLookupFailedFor + ( UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed , ReindexRedeemersError - , CouldNotGetUtxos + , InsufficientCollateralUtxos , CouldNotGetCollateral - , CouldNotGetChangeAddress + , CouldNotGetUtxos ) ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee @@ -55,11 +53,10 @@ import Ctl.Internal.BalanceTx.RedeemerIndex , indexRedeemers , mkRedeemersContext ) -import Ctl.Internal.BalanceTx.Sync (syncBackendWithWallet) +import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction - , askCip30Wallet , askCoinsPerUtxoUnit , askNetworkId , asksConstraints @@ -256,10 +253,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do } where getChangeAddress :: BalanceTxM Address - getChangeAddress = - liftMaybe CouldNotGetChangeAddress - =<< maybe (liftContract Wallet.getChangeAddress) (pure <<< Just) - =<< asksConstraints Constraints._changeAddress + getChangeAddress = maybe (liftContract Wallet.getChangeAddress) pure + =<< asksConstraints Constraints._changeAddress transactionWithNetworkId :: BalanceTxM Transaction transactionWithNetworkId = do @@ -356,7 +351,7 @@ runBalancer p = do partitionAndFilterUtxos :: BalanceTxM { spendable :: UtxoMap, invalidInContext :: UtxoMap } partitionAndFilterUtxos = do - isCip30 <- isJust <$> askCip30Wallet + isCip30 <- liftContract $ isCip30Wallet -- Get collateral inputs to mark them as unspendable. -- Some CIP-30 wallets don't allow to sign Txs that spend it. nonSpendableCollateralInputs <- diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index a727d95b8..ced8db218 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -6,7 +6,6 @@ module Ctl.Internal.BalanceTx.Error , BalanceTxError ( BalanceInsufficientError , CouldNotConvertScriptOutputToTxInput - , CouldNotGetChangeAddress , CouldNotGetCollateral , InsufficientCollateralUtxos , CouldNotGetUtxos @@ -79,7 +78,6 @@ import JS.BigInt (toString) as BigInt data BalanceTxError = BalanceInsufficientError Expected Actual | CouldNotConvertScriptOutputToTxInput - | CouldNotGetChangeAddress | CouldNotGetCollateral | InsufficientCollateralUtxos UtxoMap | CouldNotGetUtxos @@ -107,8 +105,6 @@ explainBalanceTxError = case _ of pprintTagSet "UTxOs for collateral selection:" (pprintUtxoMap utxos) CouldNotConvertScriptOutputToTxInput -> "Could not convert script output to transaction input" - CouldNotGetChangeAddress -> - "Could not get change address from the wallet or from the balancer constraints" CouldNotGetCollateral -> "Could not get collateral from wallet" CouldNotGetUtxos -> "Could not get UTxOs from the wallet or the specified source addresses" diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 27d62b9cb..7895b6e39 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -37,11 +37,11 @@ import Ctl.Internal.Helpers (liftEither, liftedM) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) -import Ctl.Internal.Wallet (cip30Wallet) +import Ctl.Internal.Wallet (Wallet(GenericCip30)) import Data.Array as Array import Data.Bifunctor (bimap) import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe, isJust, maybe) +import Data.Maybe (Maybe(Just), fromMaybe, isJust, maybe) import Data.Monoid (guard) import Data.Newtype (unwrap) import Data.Set (Set) @@ -258,7 +258,7 @@ getControlledAddresses = do sequential $ combine <$> parallel (getWalletAddresses <#> Set.fromFoldable) <*> parallel (getUnusedAddresses <#> Set.fromFoldable) - <*> parallel (getChangeAddress <#> Set.fromFoldable) + <*> parallel (getChangeAddress <#> Set.singleton) where combine used unused change = used `Set.union` unused `Set.union` change @@ -273,7 +273,9 @@ getControlledUtxos = do (unwrap >>> \({ input, output }) -> input /\ output) isCip30Wallet :: Contract Boolean -isCip30Wallet = asks $ isJust <<< (cip30Wallet <=< _.wallet) +isCip30Wallet = asks $ _.wallet >>> case _ of + Just (GenericCip30 _) -> true + _ -> false -- | If the first argument is true, it will throw. Otherwise, that would be a -- | console.error call. diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index 7665e8abf..10cfa2a59 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -2,7 +2,6 @@ module Ctl.Internal.BalanceTx.Types ( BalanceTxM , BalanceTxMContext , FinalizedTransaction(FinalizedTransaction) - , askCip30Wallet , askCoinsPerUtxoUnit , askCostModelsForLanguages , askNetworkId @@ -31,14 +30,11 @@ import Ctl.Internal.Serialization.Address (NetworkId) import Ctl.Internal.Serialization.Address as Csl import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.Scripts (Language) -import Ctl.Internal.Wallet (cip30Wallet) -import Ctl.Internal.Wallet.Cip30 (Cip30Wallet) import Data.Either (Either) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') import Data.Lens.Getter (view) import Data.Map (filterKeys) as Map -import Data.Maybe (Maybe) import Data.Newtype (class Newtype, over, unwrap) import Data.Set (Set) import Data.Set (fromFoldable, member) as Set @@ -69,9 +65,6 @@ askCoinsPerUtxoUnit = asksContractEnv (_.coinsPerUtxoUnit <<< unwrap <<< _.pparams <<< _.ledgerConstants) -askCip30Wallet :: BalanceTxM (Maybe Cip30Wallet) -askCip30Wallet = asksContractEnv (cip30Wallet <=< _.wallet) - askNetworkId :: BalanceTxM NetworkId askNetworkId = asksContractEnv _.networkId diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 360976fd5..8c811989e 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -76,7 +76,7 @@ import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters) import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.UsedTxOuts (UsedTxOuts, isTxOutRefUsed, newUsedTxOuts) -import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) +import Ctl.Internal.Wallet (Wallet(GenericCip30)) import Ctl.Internal.Wallet.Spec (WalletSpec, mkWalletBySpec) import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), isRight) @@ -317,11 +317,13 @@ getLedgerConstants params = case _ of -- | Ensure that `NetworkId` from wallet is the same as specified in the -- | `ContractEnv`. +-- todo: reimplement uniformly walletNetworkCheck :: NetworkId -> Wallet -> Aff Unit walletNetworkCheck envNetworkId = - actionBasedOnWallet - (\w -> check <=< intToNetworkId <=< _.getNetworkId w) - (pure $ pure unit) + case _ of + GenericCip30 wallet -> do + check =<< intToNetworkId =<< wallet.getNetworkId + _ -> pure unit where check :: NetworkId -> Aff Unit check networkId = unless (envNetworkId == networkId) do diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index 5755290a8..a168a6975 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -11,8 +11,7 @@ import Ctl.Internal.Cardano.Types.Transaction as Transaction import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) import Ctl.Internal.Wallet - ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, GenericCip30, KeyWallet) - , callCip30Wallet + ( Wallet(GenericCip30, KeyWallet) ) import Data.Array (fromFoldable) import Data.Lens ((<>~)) @@ -38,15 +37,7 @@ signTransaction tx = do do syncWalletWithTxInputs $ fromFoldable $ tx ^. _body <<< _inputs withWallet case _ of - Nami nami -> liftAff $ callCip30Wallet nami \nw -> flip nw.signTx tx - Gero gero -> liftAff $ callCip30Wallet gero \nw -> flip nw.signTx tx - Flint flint -> liftAff $ callCip30Wallet flint \nw -> flip nw.signTx tx - Eternl eternl -> do - liftAff $ callCip30Wallet eternl \nw -> flip nw.signTx tx - Lode lode -> liftAff $ callCip30Wallet lode \nw -> flip nw.signTx tx - NuFi nufi -> liftAff $ callCip30Wallet nufi \w -> flip w.signTx tx - Lace lace -> liftAff $ callCip30Wallet lace \w -> flip w.signTx tx - GenericCip30 cip30 -> liftAff $ callCip30Wallet cip30 \w -> flip w.signTx tx + GenericCip30 cip30 -> liftAff $ cip30.signTx tx KeyWallet kw -> liftAff do witnessSet <- (unwrap kw).signTx tx pure $ Just (tx # _witnessSet <>~ witnessSet) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 90be1902b..f046a4033 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -34,6 +34,7 @@ import Ctl.Internal.Serialization.Address , baseAddressFromAddress , stakeCredentialToKeyHash ) +import Ctl.Internal.Service.Error (pprintClientError) import Ctl.Internal.Types.PubKeyHash ( PaymentPubKeyHash , PubKeyHash @@ -44,7 +45,7 @@ import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Data.Array (cons, foldMap, foldr) import Data.Array as Array -import Data.Either (hush) +import Data.Either (Either(Left, Right), hush) import Data.Foldable (fold, foldl) import Data.Function (on) import Data.Map as Map @@ -59,36 +60,36 @@ import Effect.Exception (error, throw) import JS.BigInt as BigInt getUnusedAddresses :: Contract (Array Address) -getUnusedAddresses = fold <$> do +getUnusedAddresses = do withWallet $ actionBasedOnWallet _.getUnusedAddresses mempty -getChangeAddress :: Contract (Maybe Address) +getChangeAddress :: Contract Address getChangeAddress = withWallet do actionBasedOnWallet _.getChangeAddress \kw -> do networkId <- asks _.networkId - pure $ pure $ (unwrap kw).address networkId + pure $ (unwrap kw).address networkId getRewardAddresses :: Contract (Array Address) -getRewardAddresses = fold <$> withWallet do +getRewardAddresses = withWallet do actionBasedOnWallet _.getRewardAddresses \kw -> do networkId <- asks _.networkId - pure $ pure $ pure $ (unwrap kw).address networkId + pure $ pure $ (unwrap kw).address networkId getWalletAddresses :: Contract (Array Address) -getWalletAddresses = fold <$> withWallet do - actionBasedOnWallet _.getWalletAddresses +getWalletAddresses = withWallet do + actionBasedOnWallet _.getUsedAddresses ( \kw -> do networkId <- asks _.networkId - pure $ pure $ Array.singleton $ (unwrap kw).address networkId + pure $ Array.singleton $ (unwrap kw).address networkId ) signData :: Address -> RawBytes -> Contract (Maybe DataSignature) signData address payload = withWallet $ actionBasedOnWallet - (\w conn -> w.signData conn address payload) + (\w -> w.signData address payload) \kw -> do networkId <- asks _.networkId liftAff $ pure <$> (unwrap kw).signData networkId payload @@ -193,29 +194,47 @@ getWalletCollateral = do \the wallet." getWalletBalance - :: Contract (Maybe Value) + :: Contract Value getWalletBalance = do queryHandle <- getQueryHandle - getWallet >>= map join <<< traverse do - actionBasedOnWallet _.getBalance \_ -> do + wallet <- getWallet >>= liftM (error "getWalletBalance: no wallet is active") + let + getKeyWalletBalance = \_ -> do -- Implement via `utxosAt` addresses <- getWalletAddresses fold <$> flip parTraverse addresses \address -> do - liftAff $ queryHandle.utxosAt address <#> hush >>> map - -- Combine `Value`s - (fold <<< map _.amount <<< map unwrap <<< Map.values) + eiResponse <- liftAff $ queryHandle.utxosAt address + case eiResponse of + Left err -> liftEffect $ throw $ + "getWalletBalance via KeyWallet: utxosAt call error: " <> + pprintClientError err + Right utxoMap -> + pure $ fold $ map _.amount $ map unwrap $ Map.values utxoMap + actionBasedOnWallet _.getBalance getKeyWalletBalance wallet getWalletUtxos :: Contract (Maybe UtxoMap) getWalletUtxos = do queryHandle <- getQueryHandle - getWallet >>= map join <<< traverse do - actionBasedOnWallet - (\w conn -> w.getUtxos conn <#> map toUtxoMap) - \_ -> do - addresses :: Array Address <- getWalletAddresses - res :: Array (Maybe UtxoMap) <- flip parTraverse addresses $ - map hush <<< liftAff <<< queryHandle.utxosAt - pure $ Just $ foldr Map.union Map.empty $ map (fromMaybe Map.empty) res + wallet <- getWallet >>= liftM (error "getWalletUtxos: no wallet is active") + let + getKeyWalletUtxos = \_ -> do + addresses :: Array Address <- getWalletAddresses + utxoMaps <- flip parTraverse addresses \address -> do + eiResponse <- liftAff $ queryHandle.utxosAt address + case eiResponse of + Left err -> + liftEffect $ throw $ + "getWalletUtxos via KeyWallet: utxosAt call error: " <> + pprintClientError err + Right utxoMap -> + pure utxoMap + -- CIP-30 only returns `null` if the requested amount can't be returned + -- but since we only call `getUtxos` *without* a requested amount, we use + -- `Just` + pure $ Just $ foldr Map.union Map.empty utxoMaps + + actionBasedOnWallet (\w -> w.getUtxos <#> map toUtxoMap) getKeyWalletUtxos + wallet where toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap toUtxoMap = Map.fromFoldable <<< map diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index d9f535724..aea7b61bb 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -1,24 +1,10 @@ -/* global BROWSER_RUNTIME */ - function getWindow() { return typeof window != "undefined" ? window : global.window_; } -const getIsWalletAvailableTagName = wallet => { - const strs = { - nami: "NamiWallet", - gerowallet: "GeroWallet", - flint: "FlintWallet", - LodeWallet: "LodeWallet", - eternl: "EternlWallet" - }; - - return strs[wallet] || "is?WalletAvailable"; -}; - const nodeEnvError = new Error( "`window` is not an object. Are you trying to run a Contract with" + - " connected light wallet in NodeJS environment?" + " a connected light wallet in NodeJS environment?" ); const checkNotNode = () => { @@ -27,27 +13,6 @@ const checkNotNode = () => { } }; -const enableWallet = wallet => () => { - if (isWalletAvailable(wallet)()) { - return getWindow() - .cardano[wallet].enable() - .catch(e => { - throw new Error( - "enableWallet failed: " + - (typeof e.info == "string" ? e.info : e.toString()) - ); - }); - } else { - throw new Error( - "Wallet is not available. Use `isWalletAvailable " + - getIsWalletAvailableTagName(wallet) + - "` before connecting." - ); - } -}; - -export { enableWallet as _enableWallet }; - const isWalletAvailable = walletName => () => { checkNotNode(); return ( @@ -58,43 +23,3 @@ const isWalletAvailable = walletName => () => { }; export { isWalletAvailable as _isWalletAvailable }; - -export function _isEnabled(walletName) { - return () => { - if (isWalletAvailable(walletName)()) { - return getWindow().cardano[walletName].isEnabled(); - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } - }; -} - -export function _apiVersion(walletName) { - return () => { - if (isWalletAvailable(walletName)()) { - return getWindow().cardano[walletName].apiVersion; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } - }; -} - -export function _name(walletName) { - return () => { - if (isWalletAvailable(walletName)()) { - return getWindow().cardano[walletName].name; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } - }; -} - -export function _icon(walletName) { - return () => { - if (isWalletAvailable(walletName)()) { - return getWindow().cardano[walletName].icon; - } else { - throw new Error("Wallet `" + walletName + "` is not available"); - } - }; -} diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 00b39a6d4..30b7721ae 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -1,5 +1,5 @@ module Ctl.Internal.Wallet - ( Wallet(Gero, Nami, Flint, Lode, Eternl, NuFi, Lace, KeyWallet, GenericCip30) + ( Wallet(KeyWallet, GenericCip30) , WalletExtension ( NamiWallet , LodeWallet @@ -10,49 +10,18 @@ module Ctl.Internal.Wallet , LaceWallet , GenericCip30Wallet ) - , isEternlAvailable - , isGeroAvailable - , isNamiAvailable - , isFlintAvailable - , isLodeAvailable - , isWalletAvailable - , mkEternlWalletAff - , mkNamiWalletAff - , mkGeroWalletAff - , mkFlintWalletAff - , mkLodeWalletAff , mkKeyWallet , mkWalletAff - , cip30Wallet - , dummySign - , isEnabled - , walletToWalletExtension - , apiVersion - , name - , icon , actionBasedOnWallet - , callCip30Wallet + , isWalletAvailable ) where import Prelude +import Cardano.Wallet.Cip30 as Cip30 import Control.Monad.Error.Class (catchError, throwError) -import Control.Promise (Promise, toAffE) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction(Transaction) - , TransactionWitnessSet(TransactionWitnessSet) - , Vkey(Vkey) - , Vkeywitness(Vkeywitness) - , mkEd25519Signature - , mkPublicKey - ) -import Ctl.Internal.Helpers ((<<>>)) import Ctl.Internal.Types.Natural (fromInt', minus) -import Ctl.Internal.Wallet.Cip30 - ( Cip30Connection - , Cip30Wallet - , mkCip30WalletAff - ) +import Ctl.Internal.Wallet.Cip30 (Cip30Wallet, mkCip30WalletAff) import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey @@ -60,28 +29,18 @@ import Ctl.Internal.Wallet.Key , privateKeysToKeyWallet ) import Data.Int (toNumber) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (over, wrap) -import Data.Tuple.Nested ((/\)) +import Data.Maybe (Maybe) +import Data.Newtype (wrap) import Effect (Effect) import Effect.Aff (Aff, delay, error) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (liftEffect) -import Partial.Unsafe (unsafePartial) -import Prim.TypeError (class Warn, Text) -- NOTE: this data type is defined like this on purpose, don't change it -- to `(Cip30Wallet /\ WalletExtension)`. The motivation is to make it simpler -- to special-case each wallet in the future, if needed. data Wallet - = Nami Cip30Wallet - | Gero Cip30Wallet - | Flint Cip30Wallet - | Eternl Cip30Wallet - | Lode Cip30Wallet - | NuFi Cip30Wallet - | Lace Cip30Wallet - | GenericCip30 Cip30Wallet + = GenericCip30 Cip30Wallet | KeyWallet KeyWallet data WalletExtension @@ -99,121 +58,28 @@ mkKeyWallet payKey mbStakeKey = KeyWallet $ privateKeysToKeyWallet payKey mbStakeKey -foreign import _enableWallet :: String -> Effect (Promise Cip30Connection) foreign import _isWalletAvailable :: String -> Effect Boolean -foreign import _isEnabled :: String -> Effect (Promise Boolean) -foreign import _apiVersion :: String -> Effect String -foreign import _name :: String -> Effect String -foreign import _icon :: String -> Effect String mkWalletAff :: WalletExtension -> Aff Wallet +mkWalletAff LodeWallet = _mkLodeWalletAff +mkWalletAff (GenericCip30Wallet "LodeWallet") = _mkLodeWalletAff mkWalletAff walletExtension = - case walletExtension of - NamiWallet -> Nami <$> mkCip30WalletAff (_enableWallet walletName) - GeroWallet -> Gero <$> mkCip30WalletAff (_enableWallet walletName) - EternlWallet -> Eternl <$> mkCip30WalletAff - (_enableWallet walletName) - FlintWallet -> Flint <$> mkCip30WalletAff - (_enableWallet walletName) - LodeWallet -> _mkLodeWalletAff - NuFiWallet -> NuFi <$> mkCip30WalletAff (_enableWallet walletName) - LaceWallet -> Lace <$> mkCip30WalletAff (_enableWallet walletName) - GenericCip30Wallet name' -> - GenericCip30 <$> mkCip30WalletAff (_enableWallet name') - where - walletName = walletExtensionToName walletExtension - -isNamiAvailable - :: Warn - ( Text - "`isNamiAvailable` is deprecated, please use `isWalletAvailable NamiWallet`" - ) - => Effect Boolean -isNamiAvailable = isWalletAvailable NamiWallet - -mkNamiWalletAff - :: Warn - ( Text - "`mkNamiWalletAff` is deprecated, please use `mkWalletAff NamiWallet`" - ) - => Aff Wallet -mkNamiWalletAff = mkWalletAff NamiWallet - -isGeroAvailable - :: Warn - ( Text - "`isGeroAvailable` is deprecated, please use `isWalletAvailable GeroWallet`" - ) - => Effect Boolean -isGeroAvailable = isWalletAvailable GeroWallet - -mkGeroWalletAff - :: Warn - ( Text - "`mkGeroWalletAff` is deprecated, please use `mkWalletAff GeroWallet`" - ) - => Aff Wallet -mkGeroWalletAff = mkWalletAff GeroWallet - -isFlintAvailable - :: Warn - ( Text - "`isFlintAvailable` is deprecated, please use `isWalletAvailable FlintWallet`" - ) - => Effect Boolean -isFlintAvailable = isWalletAvailable FlintWallet - -mkFlintWalletAff - :: Warn - ( Text - "`mkFlintWalletAff` is deprecated, please use `mkWalletAff FlintWallet`" - ) - => Aff Wallet -mkFlintWalletAff = mkWalletAff FlintWallet - -isLodeAvailable - :: Warn - ( Text - "`isLodeAvailable` is deprecated, please use `isWalletAvailable LodeWallet`" - ) - => Effect Boolean -isLodeAvailable = isWalletAvailable LodeWallet - -mkLodeWalletAff - :: Warn - ( Text - "`mkLodeWalletAff` is deprecated, please use `mkWalletAff LodeWallet`" - ) - => Aff Wallet -mkLodeWalletAff = mkWalletAff LodeWallet - -isEternlAvailable - :: Warn - ( Text - "`isEternlAvailable` is deprecated, please use `isWalletAvailable EternlWallet`" - ) - => Effect Boolean -isEternlAvailable = isWalletAvailable EternlWallet - -mkEternlWalletAff - :: Warn - ( Text - "`mkEternlWalletAff` is deprecated, please use `mkWalletAff EternlWallet`" - ) - => Aff Wallet -mkEternlWalletAff = mkWalletAff EternlWallet + GenericCip30 <$> + ( mkCip30WalletAff =<< Cip30.enable (walletExtensionToName walletExtension) + [] + ) -- Lode does not inject on page load, so this function retries up to set --- number of times, for Lode to be available. +-- number of times, for Lode to become available. _mkLodeWalletAff :: Aff Wallet _mkLodeWalletAff = do retryNWithIntervalUntil (fromInt' 10) (toNumber 100) $ liftEffect (isWalletAvailable LodeWallet) - catchError - (Lode <$> mkCip30WalletAff (_enableWallet "LodeWallet")) - ( \e -> throwError <<< error $ show e <> - " Note: LodeWallet is injected asynchronously and may be unreliable." - ) + (GenericCip30 <$> (mkCip30WalletAff =<< Cip30.enable "LodeWallet" [])) + `catchError` + ( \e -> throwError <<< error $ show e <> + " Note: LodeWallet is injected asynchronously and may be unreliable." + ) where retryNWithIntervalUntil n ms mBool = if n == zero then pure unit @@ -224,18 +90,6 @@ _mkLodeWalletAff = do isWalletAvailable :: WalletExtension -> Effect Boolean isWalletAvailable = _isWalletAvailable <<< walletExtensionToName -cip30Wallet :: Wallet -> Maybe Cip30Wallet -cip30Wallet = case _ of - Nami c30 -> Just c30 - Gero c30 -> Just c30 - Flint c30 -> Just c30 - Eternl c30 -> Just c30 - Lode c30 -> Just c30 - NuFi c30 -> Just c30 - Lace c30 -> Just c30 - GenericCip30 c30 -> Just c30 - KeyWallet _ -> Nothing - walletExtensionToName :: WalletExtension -> String walletExtensionToName = case _ of NamiWallet -> "nami" @@ -247,80 +101,14 @@ walletExtensionToName = case _ of LaceWallet -> "lace" GenericCip30Wallet name' -> name' -walletToWalletExtension :: Wallet -> Maybe WalletExtension -walletToWalletExtension = case _ of - Nami _ -> Just NamiWallet - Gero _ -> Just GeroWallet - Flint _ -> Just FlintWallet - Eternl _ -> Just EternlWallet - Lode _ -> Just LodeWallet - NuFi _ -> Just NuFiWallet - Lace _ -> Just LaceWallet - GenericCip30 _ -> Nothing - KeyWallet _ -> Nothing - -isEnabled :: WalletExtension -> Aff Boolean -isEnabled = - toAffE <<< _isEnabled <<< walletExtensionToName - -apiVersion :: WalletExtension -> Aff String -apiVersion = liftEffect <<< _apiVersion <<< walletExtensionToName - -name :: WalletExtension -> Aff String -name = liftEffect <<< _name <<< walletExtensionToName - -icon :: WalletExtension -> Aff String -icon = liftEffect <<< _icon <<< walletExtensionToName - --- Attach a dummy vkey witness to a transaction. Helpful for when we need to --- know the number of witnesses (e.g. fee calculation) but the wallet hasn't --- signed (or cannot sign) yet -dummySign :: Transaction -> Transaction -dummySign tx@(Transaction { witnessSet: tws@(TransactionWitnessSet ws) }) = - over Transaction _ - { witnessSet = over TransactionWitnessSet - _ - { vkeys = ws.vkeys <<>> Just [ vk ] - } - tws - } - $ tx - where - vk :: Vkeywitness - vk = Vkeywitness - ( Vkey - -- This should not fail assuming the hardcoded bech32 key is valid. - ( unsafePartial $ fromJust $ mkPublicKey - "ed25519_pk1eamrnx3pph58yr5l4z2wghjpu2dt2f0rp0zq9qquqa39p52ct0xsudjp4e" - ) - /\ - ( unsafePartial $ fromJust $ mkEd25519Signature - "ed25519_sig1ynufn5umzl746ekpjtzt2rf58ep0wg6mxpgyezh8vx0e8jpgm3kuu3tgm453wlz4rq5yjtth0fnj0ltxctaue0dgc2hwmysr9jvhjzswt86uk" - ) - ) - actionBasedOnWallet :: forall (m :: Type -> Type) (a :: Type) . MonadAff m - => (Cip30Wallet -> Cip30Connection -> Aff a) + => (Cip30Wallet -> Aff a) -> (KeyWallet -> m a) -> Wallet -> m a actionBasedOnWallet walletAction keyWalletAction = case _ of - Eternl wallet -> liftAff $ callCip30Wallet wallet walletAction - Nami wallet -> liftAff $ callCip30Wallet wallet walletAction - Gero wallet -> liftAff $ callCip30Wallet wallet walletAction - Flint wallet -> liftAff $ callCip30Wallet wallet walletAction - Lode wallet -> liftAff $ callCip30Wallet wallet walletAction - NuFi wallet -> liftAff $ callCip30Wallet wallet walletAction - Lace wallet -> liftAff $ callCip30Wallet wallet walletAction - GenericCip30 wallet -> liftAff $ callCip30Wallet wallet walletAction + GenericCip30 wallet -> liftAff $ walletAction wallet KeyWallet kw -> keyWalletAction kw - -callCip30Wallet - :: forall (a :: Type) - . Cip30Wallet - -> (Cip30Wallet -> (Cip30Connection -> Aff a)) - -> Aff a -callCip30Wallet wallet act = act wallet wallet.connection diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index f698e5dd5..302b33774 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -1,16 +1,15 @@ module Ctl.Internal.Wallet.Cip30 - ( Cip30Connection - , Cip30Wallet + ( Cip30Wallet , DataSignature , mkCip30WalletAff ) where import Prelude +import Cardano.Wallet.Cip30 (Api, getNetworkId) +import Cardano.Wallet.Cip30 as Cip30 import Control.Alt ((<|>)) import Control.Monad.Error.Class (catchError, liftMaybe, throwError) -import Control.Promise (Promise, toAffE) -import Control.Promise as Promise import Ctl.Internal.Cardano.Types.Transaction ( Transaction(Transaction) , TransactionWitnessSet @@ -23,7 +22,7 @@ import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.UnspentOutput (convertValue) import Ctl.Internal.Deserialization.UnspentOutput as Deserialization.UnspentOuput import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) +import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization (convertTransaction, toBytes) as Serialization import Ctl.Internal.Serialization.Address ( Address @@ -49,7 +48,6 @@ import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) -import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) @@ -60,56 +58,65 @@ type DataSignature = , signature :: CborBytes } --- Please update Cip30Mock when you add or remove methods in this handle. +-- Please update Cip30Mock when you add or remove methods here. +-- | A simplified internal view of CIP-30 API that wraps `Api` from +-- | `purescript-cip30`. +-- | +-- | - We hardcode the collateral amount +-- | - We always request all UTxOs in `getUtxos` +-- | - We don't support querying of supported CIP-30 extensions +-- | - We don't support getting wallet icon, name and apiVersion +-- | - We don't support `isEnabled` call +-- | +-- | Use `purescript-cip30` for these: `connection` field contains the API handle. type Cip30Wallet = - { -- A reference to a connection with the wallet, i.e. `window.cardano.nami` - connection :: Cip30Connection + { -- A reference to a connection with the wallet, i.e. `window.cardano.nami`, + connection :: Api -- Returns the network id of the currently connected account. 0 is for any -- of the test networks, and 1 is mainnet. - , getNetworkId :: Cip30Connection -> Aff Int + , getNetworkId :: Aff Int -- Returns a list of all UTXOs controlled by the wallet. - , getUtxos :: Cip30Connection -> Aff (Maybe (Array TransactionUnspentOutput)) + , getUtxos :: Aff (Maybe (Array TransactionUnspentOutput)) -- Get the collateral UTxO associated with the Nami wallet , getCollateral :: - Cip30Connection -> Aff (Maybe (Array TransactionUnspentOutput)) + Aff (Maybe (Array TransactionUnspentOutput)) -- Get combination of all available UTxOs - , getBalance :: Cip30Connection -> Aff (Maybe Value) + , getBalance :: Aff Value -- Get the address associated with the wallet (Nami does not support -- multiple addresses) - , getWalletAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) + , getUsedAddresses :: Aff (Array Address) -- Sign a transaction with the given wallet -- Returns a list of unused addresses controlled by the wallet. - , getUnusedAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) + , getUnusedAddresses :: Aff (Array Address) -- Returns an address owned by the wallet that should be used as a change -- address to return leftover assets during transaction creation back to -- the connected wallet. - , getChangeAddress :: Cip30Connection -> Aff (Maybe Address) + , getChangeAddress :: Aff Address -- Returns the reward addresses owned by the wallet. This can return multiple -- addresses e.g. CIP-0018 - , getRewardAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) - , signTx :: Cip30Connection -> Transaction -> Aff (Maybe Transaction) + , getRewardAddresses :: Aff (Array Address) + , signTx :: Transaction -> Aff (Maybe Transaction) , signData :: - Cip30Connection -> Address -> RawBytes -> Aff (Maybe DataSignature) + Address -> RawBytes -> Aff (Maybe DataSignature) } mkCip30WalletAff - :: Effect (Promise Cip30Connection) + :: Api -- ^ A function to get wallet connection -> Aff Cip30Wallet -mkCip30WalletAff enableWallet = do - wallet <- toAffE enableWallet +mkCip30WalletAff connection = do pure - { connection: wallet - , getNetworkId - , getUtxos - , getCollateral - , getBalance - , getWalletAddresses - , getUnusedAddresses - , getChangeAddress - , getRewardAddresses - , signTx - , signData + { connection + , getNetworkId: getNetworkId connection + , getUtxos: getUtxos connection + , getCollateral: getCollateral connection + , getBalance: getBalance connection + , getUsedAddresses: getUsedAddresses connection + , getUnusedAddresses: getUnusedAddresses connection + , getChangeAddress: getChangeAddress connection + , getRewardAddresses: getRewardAddresses connection + , signTx: signTx connection + , signData: signData connection } ------------------------------------------------------------------------------- @@ -122,23 +129,33 @@ txToHex = <<< map (byteArrayToHex <<< unwrap <<< Serialization.toBytes) <<< Serialization.convertTransaction -getNetworkId :: Cip30Connection -> Aff Int -getNetworkId = toAffE <<< _getNetworkId - -getUnusedAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) -getUnusedAddresses conn = toAffE (_getUnusedAddresses conn) <#> - traverse hexStringToAddress - -getChangeAddress :: Cip30Connection -> Aff (Maybe Address) -getChangeAddress conn = (toAffE $ _getChangeAddress conn) <#> hexStringToAddress +getUnusedAddresses :: Api -> Aff (Array Address) +getUnusedAddresses conn = + Cip30.getUnusedAddresses conn >>= + traverse + ( liftM (error "CIP-30 getUnusedAddresses returned non-address") <<< + hexStringToAddress + ) -getRewardAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) -getRewardAddresses conn = toAffE (_getRewardAddresses conn) <#> - traverse hexStringToAddress +getChangeAddress :: Api -> Aff Address +getChangeAddress conn = Cip30.getChangeAddress conn >>= + liftM (error "CIP-30 getChangeAddress returned non-address") <<< + hexStringToAddress + +getRewardAddresses :: Api -> Aff (Array Address) +getRewardAddresses conn = + Cip30.getRewardAddresses conn >>= + traverse + ( liftM (error "CIP-30 getRewardAddresses returned non-address") <<< + hexStringToAddress + ) -getWalletAddresses :: Cip30Connection -> Aff (Maybe (Array Address)) -getWalletAddresses conn = Promise.toAffE (_getAddresses conn) <#> - traverse hexStringToAddress +getUsedAddresses :: Api -> Aff (Array Address) +getUsedAddresses conn = Cip30.getUsedAddresses conn Nothing >>= + traverse + ( liftM (error "CIP-30 getUsedAddresses returned non-address") <<< + hexStringToAddress + ) hexStringToAddress :: String -> Maybe Address hexStringToAddress = fromBytes <<< rawBytesAsCborBytes <=< hexToRawBytes @@ -149,31 +166,28 @@ defaultCollateralAmount = Coin $ BigInt.fromInt 5_000_000 -- | Get collateral using CIP-30 `getCollateral` method. -- | Throws on `Promise` rejection by wallet, returns `Nothing` if no collateral -- | is available. -getCollateral :: Cip30Connection -> Aff (Maybe (Array TransactionUnspentOutput)) +getCollateral :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getCollateral conn = do - mbUtxoStrs <- toAffE $ getCip30Collateral conn defaultCollateralAmount - let - (mbUtxoBytes :: Maybe (Array RawBytes)) = - join $ map (traverse hexToRawBytes) mbUtxoStrs - -- de-serialize UTxOs - liftEffect $ for mbUtxoBytes \collateralUtxos -> do - for collateralUtxos \bytes -> do - maybe (throw "Unable to convert UTxO") pure =<< + mbUtxoStrs <- getCip30Collateral conn defaultCollateralAmount + liftEffect $ for mbUtxoStrs \utxoStrs -> do + for utxoStrs \utxoStr -> do + liftM (error $ "CIP-30 getCollateral returned bad UTxO: " <> utxoStr) $ Deserialization.UnspentOuput.convertUnspentOutput - <$> fromBytesEffect (rawBytesAsCborBytes bytes) + =<< fromBytes + =<< hexToCborBytes utxoStr -getUtxos :: Cip30Connection -> Aff (Maybe (Array TransactionUnspentOutput)) +getUtxos :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getUtxos conn = do - mArrayStr <- toAffE $ _getUtxos maybeFfiHelper conn - liftEffect $ for mArrayStr $ traverse \str -> do - liftMaybe (error "Unable to convert UTxO") $ + mbUtxoArray <- Cip30.getUtxos conn Nothing + liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do + liftMaybe (error $ "CIP-30 getUtxos returned bad UTxO: " <> str) $ hexToCborBytes str >>= fromBytes >>= Deserialization.UnspentOuput.convertUnspentOutput -signTx :: Cip30Connection -> Transaction -> Aff (Maybe Transaction) +signTx :: Api -> Transaction -> Aff (Maybe Transaction) signTx conn tx = do txHex <- txToHex tx - fromHexString (_signTx txHex) conn >>= case _ of + Cip30.signTx conn txHex true >>= hexToRawBytes >>> case _ of Nothing -> pure Nothing Just bytes -> map (combineWitnessSet tx) <$> liftEffect ( Deserialization.WitnessSet.convertWitnessSet @@ -188,15 +202,14 @@ signTx conn tx = do -- | Supports : `BaseAddress`, `EnterpriseAddress`, -- | `PointerAddress` and `RewardAddress` -signData :: Cip30Connection -> Address -> RawBytes -> Aff (Maybe DataSignature) +signData :: Api -> Address -> RawBytes -> Aff (Maybe DataSignature) signData conn address dat = do byteAddress <- liftMaybe (error "Can't convert Address to base, enterprise, pointer or reward") (fromBase <|> fromEnterprise <|> fromPointer <|> fromReward) - signedData <- toAffE $ _signData (cborBytesToHex byteAddress) + signedData <- Cip30.signData conn (cborBytesToHex byteAddress) (rawBytesToHex dat) - conn pure $ do key <- hexToCborBytes signedData.key signature <- hexToCborBytes signedData.signature @@ -215,83 +228,23 @@ signData conn address dat = do fromReward :: Maybe CborBytes fromReward = rewardAddressBytes <$> rewardAddressFromAddress address -getBalance :: Cip30Connection -> Aff (Maybe Value) -getBalance wallet = do - fromHexString _getBalance wallet <#> \mbBytes -> do - bytes <- mbBytes - fromBytes (rawBytesAsCborBytes bytes) >>= convertValue - -fromHexString - :: (Cip30Connection -> Effect (Promise String)) - -> Cip30Connection - -> Aff (Maybe RawBytes) -fromHexString act = map hexToRawBytes <<< Promise.toAffE <<< act - -------------------------------------------------------------------------------- --- FFI stuff -------------------------------------------------------------------------------- -foreign import data Cip30Connection :: Type - -foreign import _getNetworkId - :: Cip30Connection - -> Effect (Promise Int) - -foreign import _getUtxos - :: MaybeFfiHelper - -> Cip30Connection - -> Effect (Promise (Maybe (Array String))) - -foreign import _getCollateral - :: MaybeFfiHelper - -> Cip30Connection - -> String - -> Effect (Promise (Maybe (Array String))) +getBalance :: Api -> Aff Value +getBalance conn = do + Cip30.getBalance conn >>= + liftM (error "CIP-30 getUsedAddresses returned non-address") <<< + (hexToCborBytes >=> fromBytes >=> convertValue) getCip30Collateral - :: Cip30Connection -> Coin -> Effect (Promise (Maybe (Array String))) + :: Api -> Coin -> Aff (Maybe (Array String)) getCip30Collateral conn requiredValue = do - bigNumValue <- maybe (throw convertError) pure + bigNumValue <- liftEffect $ maybe (throw convertError) pure $ BigNum.fromBigInt $ unwrap requiredValue let requiredValueStr = byteArrayToHex $ unwrap $ toBytes bigNumValue - _getCollateral maybeFfiHelper conn requiredValueStr `catchError` + Cip30.getCollateral conn requiredValueStr `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err where convertError = "Unable to convert CIP-30 getCollateral required value: " <> show requiredValue - -foreign import _getBalance :: Cip30Connection -> Effect (Promise String) - -foreign import _getAddresses - :: Cip30Connection - -> Effect - ( Promise - ( Array - String - ) - ) - -foreign import _getUnusedAddresses - :: Cip30Connection - -> Effect (Promise (Array String)) - -foreign import _getChangeAddress - :: Cip30Connection - -> Effect (Promise String) - -foreign import _getRewardAddresses - :: Cip30Connection - -> Effect (Promise (Array String)) - -foreign import _signTx - :: String -- Hex-encoded cbor of tx - -> Cip30Connection - -> Effect (Promise String) - -foreign import _signData - :: String -- Address - -> String -- Hex-encoded data - -> Cip30Connection - -> Effect (Promise { key :: String, signature :: String }) diff --git a/test/Main.purs b/test/Main.purs index 37baf6a9e..f8c801fd7 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -2,7 +2,7 @@ module Test.Ctl.Main (main) where import Prelude -import Ctl.Internal.Test.TestPlanM (interpret) +import Contract.Test.Mote (interpret) import Effect (Effect) import Effect.Aff (launchAff_) import Test.Ctl.Integration as Integration From 7d533241367081fa69ec5f0ec8f50e00c39430c2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Dec 2023 23:33:19 +0400 Subject: [PATCH 472/478] Use cip30-typesafe --- CHANGELOG.md | 2 + examples/Cip30.purs | 16 ++- examples/SignData.purs | 4 +- packages.dhall | 18 +++ spago.dhall | 1 + src/Contract/Transaction.purs | 1 - src/Contract/UnbalancedTx.purs | 1 - src/Internal/Contract/Sign.purs | 13 +- src/Internal/Contract/Wallet.purs | 4 +- src/Internal/Deserialization/Transaction.purs | 3 +- src/Internal/Deserialization/WitnessSet.purs | 65 +++++----- src/Internal/ProcessConstraints.purs | 54 ++++----- src/Internal/ProcessConstraints/Error.purs | 3 - src/Internal/Transaction.purs | 67 ++++------- src/Internal/Wallet/Cip30.purs | 113 +++++++++++------- test/Deserialization.purs | 15 +-- test/Transaction.purs | 13 +- 17 files changed, 210 insertions(+), 183 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b495a7fc1..de656d615 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +- `ModifyTx` error: made conversion functions total and removed the need to handle it + ## [v7.0.0] ### Added diff --git a/examples/Cip30.purs b/examples/Cip30.purs index 839e92d5c..4b6c43a75 100644 --- a/examples/Cip30.purs +++ b/examples/Cip30.purs @@ -8,7 +8,13 @@ module Ctl.Examples.Cip30 import Contract.Prelude -import Cardano.Wallet.Cip30 as Cip30 +import Cardano.Wallet.Cip30 + ( getApiVersion + , getAvailableWallets + , getIcon + , getName + ) +import Cardano.Wallet.Cip30.TypeSafe as Cip30 import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) @@ -28,16 +34,16 @@ main = example testnetNamiConfig example :: ContractParams -> Effect Unit example cfg = launchAff_ do - traverse_ nonConfigFunctions =<< liftEffect Cip30.getAvailableWallets + traverse_ nonConfigFunctions =<< liftEffect getAvailableWallets runContract cfg contract nonConfigFunctions :: String -> Aff Unit nonConfigFunctions extensionWallet = do log "Functions that don't depend on `Contract`" performAndLog "isEnabled" $ Cip30.isEnabled - performAndLog "apiVersion" $ liftEffect <<< Cip30.getApiVersion - performAndLog "name" $ liftEffect <<< Cip30.getName - performAndLog "icon" $ liftEffect <<< Cip30.getIcon + performAndLog "apiVersion" $ liftEffect <<< getApiVersion + performAndLog "name" $ liftEffect <<< getName + performAndLog "icon" $ liftEffect <<< getIcon where performAndLog :: forall (a :: Type) diff --git a/examples/SignData.purs b/examples/SignData.purs index 24f58e6a5..dfa44dee1 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -37,8 +37,6 @@ contract = do testSignDataWithAddress :: String -> Address -> Contract Unit testSignDataWithAddress addressLabel address = do - dataSignature <- - signData address payload - # liftedM "Could not get data signature" + dataSignature <- signData address payload logInfo' $ "signData " <> addressLabel <> ": " <> show dataSignature void $ liftAff $ checkCip30SignDataResponse address dataSignature diff --git a/packages.dhall b/packages.dhall index 0da3c2bb4..056925f35 100644 --- a/packages.dhall +++ b/packages.dhall @@ -224,6 +224,24 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cip30" , version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c" } + , cip30-typesafe = + { dependencies = + [ "aff" + , "bifunctors" + , "cip30" + , "control" + , "effect" + , "either" + , "exceptions" + , "maybe" + , "prelude" + , "spec" + , "transformers" + , "variant" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" + , version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546" + } } in upstream // additions diff --git a/spago.dhall b/spago.dhall index 1c74cebc0..7c92449b8 100644 --- a/spago.dhall +++ b/spago.dhall @@ -19,6 +19,7 @@ You can edit this file as you like. , "bignumber" , "checked-exceptions" , "cip30" + , "cip30-typesafe" , "console" , "control" , "crypto" diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index c84b106b6..22e809463 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -262,7 +262,6 @@ signTransaction -> Contract BalancedSignedTransaction signTransaction = map BalancedSignedTransaction - <<< liftedM "Error signing the transaction" <<< Contract.signTransaction <<< unwrap diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 785c0246f..1bb9ceec5 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -31,7 +31,6 @@ import Ctl.Internal.ProcessConstraints.Error , DatumWrongHash , MintingPolicyHashNotCurrencySymbol , MintingPolicyNotFound - , ModifyTx , OwnPubKeyAndStakeKeyMissing , TxOutRefNotFound , TxOutRefWrongType diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index a168a6975..f6164335b 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -6,8 +6,12 @@ import Prelude import Control.Monad.Reader (asks) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithTxInputs) -import Ctl.Internal.Cardano.Types.Transaction (_body, _inputs, _witnessSet) -import Ctl.Internal.Cardano.Types.Transaction as Transaction +import Ctl.Internal.Cardano.Types.Transaction + ( Transaction + , _body + , _inputs + , _witnessSet + ) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) import Ctl.Internal.Wallet @@ -16,7 +20,6 @@ import Ctl.Internal.Wallet import Data.Array (fromFoldable) import Data.Lens ((<>~)) import Data.Lens.Getter ((^.)) -import Data.Maybe (Maybe(Just)) import Data.Newtype (unwrap) import Data.Traversable (for_) import Effect.Aff.Class (liftAff) @@ -24,7 +27,7 @@ import Effect.Class (liftEffect) import Effect.Exception (try) signTransaction - :: Transaction.Transaction -> Contract (Maybe Transaction.Transaction) + :: Transaction -> Contract Transaction signTransaction tx = do hooks <- asks _.hooks for_ hooks.beforeSign (void <<< liftEffect <<< try) @@ -40,4 +43,4 @@ signTransaction tx = do GenericCip30 cip30 -> liftAff $ cip30.signTx tx KeyWallet kw -> liftAff do witnessSet <- (unwrap kw).signTx tx - pure $ Just (tx # _witnessSet <>~ witnessSet) + pure $ tx # _witnessSet <>~ witnessSet diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index f046a4033..c1e851aa5 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -85,14 +85,14 @@ getWalletAddresses = withWallet do pure $ Array.singleton $ (unwrap kw).address networkId ) -signData :: Address -> RawBytes -> Contract (Maybe DataSignature) +signData :: Address -> RawBytes -> Contract DataSignature signData address payload = withWallet $ actionBasedOnWallet (\w -> w.signData address payload) \kw -> do networkId <- asks _.networkId - liftAff $ pure <$> (unwrap kw).signData networkId payload + liftAff $ (unwrap kw).signData networkId payload getWallet :: Contract (Maybe Wallet) getWallet = asks _.wallet diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index f17faa2a3..522b5474f 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -220,10 +220,9 @@ deserializeTransaction txCbor = fromBytes' (unwrap txCbor) >>= convertTransaction :: forall (r :: Row Type). Csl.Transaction -> Err r T.Transaction convertTransaction tx = addErrTrace "convertTransaction" do - witnessSet <- cslErr "convertWitnessSet" $ convertWitnessSet - (_txWitnessSet tx) body <- convertTxBody $ _txBody tx let + witnessSet = convertWitnessSet (_txWitnessSet tx) auxiliaryData = convertAuxiliaryData <$> _txAuxiliaryData maybeFfiHelper tx pure $ T.Transaction diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs index d713fdaf3..40e0c7c9a 100644 --- a/src/Internal/Deserialization/WitnessSet.purs +++ b/src/Internal/Deserialization/WitnessSet.purs @@ -52,26 +52,28 @@ import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.PlutusData (PlutusData) as T import Ctl.Internal.Types.RedeemerTag as Tag import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) as S -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Traversable (for, traverse) +import Data.Maybe (Maybe) import Data.Tuple (curry) import Data.Tuple.Nested ((/\)) +import Effect.Exception (throw) +import Effect.Unsafe (unsafePerformEffect) -convertWitnessSet :: TransactionWitnessSet -> Maybe T.TransactionWitnessSet -convertWitnessSet ws = do +convertWitnessSet :: TransactionWitnessSet -> T.TransactionWitnessSet +convertWitnessSet ws = let nativeScripts = getNativeScripts maybeFfiHelper ws <#> convertNativeScripts plutusScripts = getPlutusScripts maybeFfiHelper ws <#> convertPlutusScripts plutusData = getWitnessSetPlutusData maybeFfiHelper ws <#> convertPlutusList - redeemers <- for (getRedeemers maybeFfiHelper ws) convertRedeemers - pure $ T.TransactionWitnessSet - { vkeys: getVkeywitnesses maybeFfiHelper ws <#> convertVkeyWitnesses - , nativeScripts - , bootstraps: getBootstraps maybeFfiHelper ws <#> convertBootstraps - , plutusScripts - , plutusData - , redeemers - } + redeemers = getRedeemers maybeFfiHelper ws <#> convertRedeemers + in + T.TransactionWitnessSet + { vkeys: getVkeywitnesses maybeFfiHelper ws <#> convertVkeyWitnesses + , nativeScripts + , bootstraps: getBootstraps maybeFfiHelper ws <#> convertBootstraps + , plutusScripts + , plutusData + , redeemers + } convertVkeyWitnesses :: Vkeywitnesses -> Array T.Vkeywitness convertVkeyWitnesses = extractWitnesses >>> map convertVkeyWitness @@ -113,30 +115,31 @@ convertPlutusScript plutusScript = do convertPlutusList :: PlutusList -> Array T.PlutusData convertPlutusList = extractPlutusData >>> map convertPlutusData -convertRedeemers :: Redeemers -> Maybe (Array T.Redeemer) -convertRedeemers = extractRedeemers >>> traverse convertRedeemer +convertRedeemers :: Redeemers -> Array T.Redeemer +convertRedeemers = extractRedeemers >>> map convertRedeemer -convertRedeemer :: Redeemer -> Maybe T.Redeemer -convertRedeemer redeemer = do - tag <- convertRedeemerTag $ getRedeemerTag redeemer +convertRedeemer :: Redeemer -> T.Redeemer +convertRedeemer redeemer = let + tag = convertRedeemerTag $ getRedeemerTag redeemer index = BigNum.toBigInt $ getRedeemerIndex redeemer exUnits = convertExUnits $ getExUnits redeemer data_ = convertPlutusData $ getRedeemerPlutusData redeemer - pure $ T.Redeemer - { tag - , index - , data: data_ - , exUnits - } - -convertRedeemerTag :: RedeemerTag -> Maybe Tag.RedeemerTag + in + T.Redeemer + { tag + , index + , data: data_ + , exUnits + } + +convertRedeemerTag :: RedeemerTag -> Tag.RedeemerTag convertRedeemerTag tag = case getRedeemerTagKind tag of - 0 -> Just Tag.Spend - 1 -> Just Tag.Mint - 2 -> Just Tag.Cert - 3 -> Just Tag.Reward - _ -> Nothing + 0 -> Tag.Spend + 1 -> Tag.Mint + 2 -> Tag.Cert + 3 -> Tag.Reward + _ -> unsafePerformEffect $ throw "convertRedeemerTag: impossible happened" convertExUnits :: ExUnits -> T.ExUnits convertExUnits eu = diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 623082ecb..69ee5cc05 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -66,8 +66,7 @@ import Ctl.Internal.Plutus.Types.TransactionUnspentOutput ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError - ( ModifyTx - , CannotSatisfyAny + ( CannotSatisfyAny , CannotWithdrawRewardsNativeScript , CannotWithdrawRewardsPlutusScript , CannotWithdrawRewardsPubKey @@ -128,8 +127,7 @@ import Ctl.Internal.Serialization.Address ) import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Transaction - ( ModifyTxError - , attachDatum + ( attachDatum , attachNativeScript , attachPlutusScript , setScriptDataHash @@ -513,7 +511,7 @@ processConstraint processConstraint mpsMap osMap c = do queryHandle <- lift $ getQueryHandle case c of - MustIncludeDatum dat -> addDatum dat + MustIncludeDatum dat -> pure <$> addDatum dat MustValidateIn posixTimeRange -> do { systemStart } <- asks _.ledgerConstants eraSummaries <- liftAff $ @@ -562,7 +560,7 @@ processConstraint mpsMap osMap c = do Nothing -> do plutusScript <- except $ unwrap <$> lookupValidator vHash osMap - ExceptT $ attachToCps attachPlutusScript plutusScript + lift $ attachToCps attachPlutusScript plutusScript Just scriptRefUnspentOut' -> ExceptT $ processScriptRefUnspentOut vHash scriptRefUnspentOut' -- Note: Plutus uses `TxIn` to attach a redeemer and datum. @@ -578,7 +576,7 @@ processConstraint mpsMap osMap c = do >>> Bind.join >>> note (CannotQueryDatum dHash) - ExceptT $ addDatum dat + lift $ addDatum dat OutputDatum _ -> pure unit NoOutputDatum -> throwError CannotFindDatum _cpsTransaction <<< _body <<< _inputs %= Set.insert txo @@ -591,7 +589,7 @@ processConstraint mpsMap osMap c = do _valueSpentBalancesInputs <>= provideValue amount MustSpendNativeScriptOutput txo ns -> runExceptT do _cpsTransaction <<< _body <<< _inputs %= Set.insert txo - ExceptT $ attachToCps attachNativeScript ns + lift $ attachToCps (map pure <<< attachNativeScript) ns MustReferenceOutput refInput -> runExceptT do _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput MustMintValue mpsHash red tn i scriptRefUnspentOut -> runExceptT do @@ -600,7 +598,7 @@ processConstraint mpsMap osMap c = do mp <- except $ lookupMintingPolicy mpsHash mpsMap ( case mp of PlutusMintingPolicy p -> - ( ExceptT $ attachToCps + ( lift $ attachToCps attachPlutusScript p ) @@ -641,7 +639,7 @@ processConstraint mpsMap osMap c = do MustMintValueUsingNativeScript ns tn i -> runExceptT do let mpHash = wrap <<< unwrap <<< nativeScriptHash $ ns - ExceptT $ attachToCps attachNativeScript ns + lift $ attachToCps (map pure <<< attachNativeScript) ns cs <- liftM (MintingPolicyHashNotCurrencySymbol mpHash) (mpsSymbol mpHash) let value = mkSingletonValue' cs tn @@ -668,7 +666,7 @@ processConstraint mpsMap osMap c = do -- If non-inline datum is presented, add it to 'datumWitnesses' and -- Array of datums. datum' <- for mDatum \(dat /\ datp) -> do - when (datp == DatumWitness) $ ExceptT $ addDatum dat + when (datp == DatumWitness) $ lift $ addDatum dat pure $ outputDatum dat datp let address = case skh of @@ -726,7 +724,7 @@ processConstraint mpsMap osMap c = do _valueSpentBalancesOutputs <>= provideValue amount MustHashDatum dh dt -> do let dh' = Hashing.datumHash dt - if dh' == dh then addDatum dt + if dh' == dh then pure <$> addDatum dt else pure $ throwError $ DatumWrongHash dh dt MustRegisterStakePubKey skh -> runExceptT do void $ lift $ addCertificate @@ -756,14 +754,15 @@ processConstraint mpsMap osMap c = do { purpose: ForCert cert, datum: unwrap redeemerData } ] void $ lift $ addCertificate cert - ExceptT $ attachToCps attachPlutusScript (unwrap plutusScript) + lift $ attachToCps attachPlutusScript (unwrap plutusScript) MustDeregisterStakeNativeScript stakeValidator -> do void $ addCertificate $ StakeDeregistration $ scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash stakeValidator - attachToCps attachNativeScript (unwrap stakeValidator) + pure <$> attachToCps (map pure <<< attachNativeScript) + (unwrap stakeValidator) MustRegisterPool poolParams -> runExceptT do void $ lift $ addCertificate $ PoolRegistration poolParams MustRetirePool poolKeyHash epoch -> runExceptT do @@ -785,14 +784,15 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] - ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) + lift $ attachToCps attachPlutusScript (unwrap stakeValidator) MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do void $ addCertificate $ StakeDelegation ( scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash stakeValidator ) poolKeyHash - attachToCps attachNativeScript (unwrap stakeValidator) + pure <$> attachToCps (map pure <<< attachNativeScript) + (unwrap stakeValidator) MustWithdrawStakePubKey spkh -> runExceptT do networkId <- lift getNetworkId mbRewards <- lift $ lift $ wrapQueryM $ getPubKeyHashDelegationsAndRewards @@ -821,7 +821,7 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForReward rewardAddress, datum: unwrap redeemerData } ] - ExceptT $ attachToCps attachPlutusScript (unwrap stakeValidator) + lift $ attachToCps attachPlutusScript (unwrap stakeValidator) MustWithdrawStakeNativeScript stakeValidator -> runExceptT do let hash = nativeScriptStakeValidatorHash stakeValidator networkId <- lift getNetworkId @@ -835,7 +835,8 @@ processConstraint mpsMap osMap c = do mbRewards _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= Map.insert rewardAddress (fromMaybe (Coin zero) rewards) - ExceptT $ attachToCps attachNativeScript (unwrap stakeValidator) + lift $ attachToCps (map pure <<< attachNativeScript) + (unwrap stakeValidator) MustSatisfyAnyOf xs -> do cps <- get let @@ -883,23 +884,20 @@ credentialToStakeCredential cred = case cred of -- share error type anyway. attachToCps :: forall (a :: Type) - . (a -> Transaction -> Effect (Either ModifyTxError Transaction)) + . (a -> Transaction -> Effect Transaction) -> a -- Redeemer, Datum, or PlutusScript. - -> ConstraintsM (Either MkUnbalancedTxError Unit) + -> ConstraintsM Unit attachToCps handler object = do tx <- use _cpsTransaction - newTx <- liftEffect $ handler object tx <#> lmap ModifyTx - either - (pure <<< throwError) - (map Right <<< (.=) _cpsTransaction) - newTx + newTx <- liftEffect $ handler object tx + (.=) _cpsTransaction newTx -- Attaches datum to the transaction and to Array of datums in the state. addDatum :: Datum - -> ConstraintsM (Either MkUnbalancedTxError Unit) -addDatum dat = runExceptT do - ExceptT $ attachToCps attachDatum dat + -> ConstraintsM Unit +addDatum dat = do + attachToCps attachDatum dat _datums <>= Array.singleton dat -- | Returns an index pointing to the location of the newly inserted certificate diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 8bb19b91c..e7b96e4ee 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -15,7 +15,6 @@ import Ctl.Internal.Serialization.Hash , ed25519KeyHashToBytes , scriptHashToBytes ) -import Ctl.Internal.Transaction (ModifyTxError, explainModifyTxError) import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.Interval @@ -58,7 +57,6 @@ data MkUnbalancedTxError | DatumWrongHash DataHash Datum | MintingPolicyHashNotCurrencySymbol MintingPolicyHash | MintingPolicyNotFound MintingPolicyHash - | ModifyTx ModifyTxError | OwnPubKeyAndStakeKeyMissing | TxOutRefNotFound TransactionInput | TxOutRefWrongType TransactionInput @@ -127,7 +125,6 @@ explainMkUnbalancedTxError = case _ of MintingPolicyNotFound mp -> "Minting policy with hash " <> rawBytesToHex (scriptHashToBytes $ unwrap mp) <> " not found in a set of minting policies" - ModifyTx modifyTxErr -> explainModifyTxError modifyTxErr OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" TxOutRefNotFound ti -> diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index f6c96c525..49baa289c 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -1,16 +1,13 @@ module Ctl.Internal.Transaction - ( ModifyTxError(ConvertWitnessesError, ConvertDatumError) - , attachDatum + ( attachDatum , attachRedeemer , attachPlutusScript , attachNativeScript , setScriptDataHash - , explainModifyTxError ) where import Prelude -import Control.Monad.Except.Trans (ExceptT, runExceptT) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.Transaction ( Costmdls @@ -21,7 +18,6 @@ import Ctl.Internal.Cardano.Types.Transaction , TxBody(TxBody) ) import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.Serialization (hashScriptData, toBytes) import Ctl.Internal.Serialization.PlutusData as Serialization.PlutusData import Ctl.Internal.Serialization.PlutusScript as Serialization.PlutusScript @@ -30,32 +26,13 @@ import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Scripts (PlutusScript) import Data.Array as Array -import Data.Either (Either(Right), note) import Data.Foldable (null) -import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Just)) import Data.Newtype (over, unwrap) -import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Effect (Effect) import Effect.Class (liftEffect) -data ModifyTxError - = ConvertWitnessesError - | ConvertDatumError - -derive instance Generic ModifyTxError _ -derive instance Eq ModifyTxError - -instance Show ModifyTxError where - show = genericShow - --- | Helper for showing `ModifyTxError` in a human-readable way. -explainModifyTxError :: ModifyTxError -> String -explainModifyTxError = case _ of - ConvertWitnessesError -> "Could not convert witnesses." - ConvertDatumError -> "Could not convert datum." - -- | Set the `Transaction` body's script data hash. NOTE: Must include *all* of -- | the datums and redeemers for the given transaction setScriptDataHash @@ -86,16 +63,16 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) -- | Attach a `Datum` to a transaction by modifying its existing witness set. -- | Fails if either the datum or updated witness set cannot be converted during -- | (de-)serialization -attachDatum :: Datum -> Transaction -> Effect (Either ModifyTxError Transaction) -attachDatum d = runExceptT <<< attachDatums (Array.singleton d) +attachDatum :: Datum -> Transaction -> Effect Transaction +attachDatum d = attachDatums (Array.singleton d) attachDatums - :: Array Datum -> Transaction -> ExceptT ModifyTxError Effect Transaction -attachDatums [] tx = liftEither $ Right tx + :: Array Datum -> Transaction -> Effect Transaction +attachDatums [] tx = pure tx attachDatums datums tx@(Transaction { witnessSet: ws }) = do let ds = map (Serialization.PlutusData.convertPlutusData <<< unwrap) datums updateTxWithWitnesses tx - =<< convertWitnessesWith ws (Serialization.WitnessSet.setPlutusData ds) + <$> convertWitnessesWith ws (Serialization.WitnessSet.setPlutusData ds) -- | Attach a `Redeemer` to a transaction by modifying its existing witness set. -- | Note that this is the `Types.Transaction` representation of a redeemer and @@ -104,15 +81,15 @@ attachDatums datums tx@(Transaction { witnessSet: ws }) = do -- | Fails if either the redeemer or updated witness set cannot be converted -- | during (de-)serialization attachRedeemer - :: Redeemer -> Transaction -> Effect (Either ModifyTxError Transaction) -attachRedeemer r = runExceptT <<< attachRedeemers (Array.singleton r) + :: Redeemer -> Transaction -> Effect Transaction +attachRedeemer r = attachRedeemers (Array.singleton r) attachRedeemers - :: Array Redeemer -> Transaction -> ExceptT ModifyTxError Effect Transaction + :: Array Redeemer -> Transaction -> Effect Transaction attachRedeemers rs tx@(Transaction { witnessSet: ws }) = do rs' <- liftEffect $ traverse Serialization.WitnessSet.convertRedeemer rs updateTxWithWitnesses tx - =<< convertWitnessesWith ws (Serialization.WitnessSet.setRedeemers rs') + <$> convertWitnessesWith ws (Serialization.WitnessSet.setRedeemers rs') -- | Attach a `PlutusScript` to a transaction by modifying its existing witness -- | set @@ -120,38 +97,36 @@ attachRedeemers rs tx@(Transaction { witnessSet: ws }) = do -- | Fails if either the script or updated witness set cannot be converted -- | during (de-)serialization attachPlutusScript - :: PlutusScript -> Transaction -> Effect (Either ModifyTxError Transaction) -attachPlutusScript ps = runExceptT <<< attachPlutusScripts (Array.singleton ps) + :: PlutusScript -> Transaction -> Effect Transaction +attachPlutusScript ps = attachPlutusScripts (Array.singleton ps) attachPlutusScripts :: Array PlutusScript -> Transaction - -> ExceptT ModifyTxError Effect Transaction + -> Effect Transaction attachPlutusScripts ps tx@(Transaction { witnessSet: ws }) = do let ps' = ps # map Serialization.PlutusScript.convertPlutusScript updateTxWithWitnesses tx - =<< convertWitnessesWith ws (Serialization.WitnessSet.setPlutusScripts ps') + <$> convertWitnessesWith ws (Serialization.WitnessSet.setPlutusScripts ps') attachNativeScript - :: NativeScript -> Transaction -> Effect (Either ModifyTxError Transaction) + :: NativeScript -> Transaction -> Transaction attachNativeScript ns tx = do - runExceptT $ updateTxWithWitnesses tx $ + updateTxWithWitnesses tx $ mempty # over TransactionWitnessSet _ { nativeScripts = Just [ ns ] } convertWitnessesWith :: TransactionWitnessSet -> (Serialization.TransactionWitnessSet -> Effect Unit) - -> ExceptT ModifyTxError Effect TransactionWitnessSet + -> Effect TransactionWitnessSet convertWitnessesWith ws act = do ws' <- liftEffect $ Serialization.WitnessSet.convertWitnessSet ws liftEffect $ act ws' - liftEither $ note ConvertWitnessesError - $ Deserialization.WitnessSet.convertWitnessSet ws' + pure $ Deserialization.WitnessSet.convertWitnessSet ws' updateTxWithWitnesses - :: forall (e :: Type) - . Transaction + :: Transaction -> TransactionWitnessSet - -> ExceptT e Effect Transaction + -> Transaction updateTxWithWitnesses tx@(Transaction t) ws = - liftEither $ Right $ over Transaction _ { witnessSet = t.witnessSet <> ws } tx + over Transaction _ { witnessSet = t.witnessSet <> ws } tx diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 302b33774..015dd11d5 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -6,8 +6,9 @@ module Ctl.Internal.Wallet.Cip30 import Prelude -import Cardano.Wallet.Cip30 (Api, getNetworkId) -import Cardano.Wallet.Cip30 as Cip30 +import Cardano.Wallet.Cip30 (Api) +import Cardano.Wallet.Cip30.TypeSafe (APIError) +import Cardano.Wallet.Cip30.TypeSafe as Cip30 import Control.Alt ((<|>)) import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Ctl.Internal.Cardano.Types.Transaction @@ -45,9 +46,11 @@ import Ctl.Internal.Types.CborBytes , rawBytesAsCborBytes ) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) -import Data.Maybe (Maybe(Just, Nothing), maybe) +import Data.Maybe (Maybe(Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) +import Data.Variant (Variant, match) +import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) @@ -95,9 +98,8 @@ type Cip30Wallet = -- Returns the reward addresses owned by the wallet. This can return multiple -- addresses e.g. CIP-0018 , getRewardAddresses :: Aff (Array Address) - , signTx :: Transaction -> Aff (Maybe Transaction) - , signData :: - Address -> RawBytes -> Aff (Maybe DataSignature) + , signTx :: Transaction -> Aff Transaction + , signData :: Address -> RawBytes -> Aff DataSignature } mkCip30WalletAff @@ -107,7 +109,7 @@ mkCip30WalletAff mkCip30WalletAff connection = do pure { connection - , getNetworkId: getNetworkId connection + , getNetworkId: Cip30.getNetworkId connection >>= handleApiError , getUtxos: getUtxos connection , getCollateral: getCollateral connection , getBalance: getBalance connection @@ -123,39 +125,49 @@ mkCip30WalletAff connection = do -- Helper functions ------------------------------------------------------------------------------- -txToHex :: Transaction -> Aff String +txToHex :: Transaction -> Effect String txToHex = - liftEffect - <<< map (byteArrayToHex <<< unwrap <<< Serialization.toBytes) + map (byteArrayToHex <<< unwrap <<< Serialization.toBytes) <<< Serialization.convertTransaction +handleApiError + :: forall a. Variant (apiError :: APIError, success :: a) -> Aff a +handleApiError = match + -- eta expansion fixes type checking here + { success: pure :: a -> Aff a, apiError: show >>> throw >>> liftEffect } + getUnusedAddresses :: Api -> Aff (Array Address) -getUnusedAddresses conn = - Cip30.getUnusedAddresses conn >>= +getUnusedAddresses conn = do + Cip30.getUnusedAddresses conn >>= handleApiError >>= traverse ( liftM (error "CIP-30 getUnusedAddresses returned non-address") <<< hexStringToAddress ) getChangeAddress :: Api -> Aff Address -getChangeAddress conn = Cip30.getChangeAddress conn >>= +getChangeAddress conn = Cip30.getChangeAddress conn >>= handleApiError >>= liftM (error "CIP-30 getChangeAddress returned non-address") <<< hexStringToAddress getRewardAddresses :: Api -> Aff (Array Address) getRewardAddresses conn = - Cip30.getRewardAddresses conn >>= + Cip30.getRewardAddresses conn >>= handleApiError >>= traverse ( liftM (error "CIP-30 getRewardAddresses returned non-address") <<< hexStringToAddress ) getUsedAddresses :: Api -> Aff (Array Address) -getUsedAddresses conn = Cip30.getUsedAddresses conn Nothing >>= - traverse - ( liftM (error "CIP-30 getUsedAddresses returned non-address") <<< - hexStringToAddress - ) +getUsedAddresses conn = do + result <- Cip30.getUsedAddresses conn Nothing + result `flip match` + { success: traverse + ( liftM (error "CIP-30 getUsedAddresses returned non-address") <<< + hexStringToAddress + ) + , paginateError: show >>> throw >>> liftEffect + , apiError: show >>> throw >>> liftEffect + } hexStringToAddress :: String -> Maybe Address hexStringToAddress = fromBytes <<< rawBytesAsCborBytes <=< hexToRawBytes @@ -178,21 +190,33 @@ getCollateral conn = do getUtxos :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getUtxos conn = do - mbUtxoArray <- Cip30.getUtxos conn Nothing - liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do - liftMaybe (error $ "CIP-30 getUtxos returned bad UTxO: " <> str) $ - hexToCborBytes str >>= fromBytes >>= - Deserialization.UnspentOuput.convertUnspentOutput + result <- Cip30.getUtxos conn Nothing + result `flip match` + { success: \mbUtxoArray -> do + liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do + liftMaybe (error $ "CIP-30 getUtxos returned bad UTxO: " <> str) $ + hexToCborBytes str >>= fromBytes >>= + Deserialization.UnspentOuput.convertUnspentOutput + , paginateError: show >>> throw >>> liftEffect + , apiError: show >>> throw >>> liftEffect + } -signTx :: Api -> Transaction -> Aff (Maybe Transaction) +signTx :: Api -> Transaction -> Aff Transaction signTx conn tx = do - txHex <- txToHex tx - Cip30.signTx conn txHex true >>= hexToRawBytes >>> case _ of - Nothing -> pure Nothing - Just bytes -> map (combineWitnessSet tx) <$> liftEffect - ( Deserialization.WitnessSet.convertWitnessSet - <$> fromBytesEffect (rawBytesAsCborBytes bytes) - ) + txHex <- liftEffect $ txToHex tx + result <- Cip30.signTx conn txHex true + liftEffect $ result `flip match` + { success: + \hexString -> do + bytes <- liftM (mkInvalidHexError hexString) $ hexToRawBytes + hexString + combineWitnessSet tx <$> + ( Deserialization.WitnessSet.convertWitnessSet + <$> fromBytesEffect (rawBytesAsCborBytes bytes) + ) + , apiError: show >>> throw + , txSignError: show >>> throw + } where -- We have to combine the newly returned witness set with the existing one -- Otherwise, any datums, etc... won't be retained @@ -200,21 +224,30 @@ signTx conn tx = do combineWitnessSet (Transaction tx'@{ witnessSet: oldWits }) newWits = Transaction $ tx' { witnessSet = oldWits <> newWits } + mkInvalidHexError hexString = error $ "Unable to decode WitnessSet bytes: " <> + hexString + -- | Supports : `BaseAddress`, `EnterpriseAddress`, -- | `PointerAddress` and `RewardAddress` -signData :: Api -> Address -> RawBytes -> Aff (Maybe DataSignature) +signData :: Api -> Address -> RawBytes -> Aff DataSignature signData conn address dat = do byteAddress <- liftMaybe (error "Can't convert Address to base, enterprise, pointer or reward") (fromBase <|> fromEnterprise <|> fromPointer <|> fromReward) - signedData <- Cip30.signData conn (cborBytesToHex byteAddress) + result <- Cip30.signData conn (cborBytesToHex byteAddress) (rawBytesToHex dat) - pure $ do - key <- hexToCborBytes signedData.key - signature <- hexToCborBytes signedData.signature - pure { key: key, signature: signature } + liftEffect $ result `flip match` + { dataSignError: show >>> throw + , apiError: show >>> throw + , success: \signedData -> do + key <- liftM byteError $ hexToCborBytes signedData.key + signature <- liftM byteError $ hexToCborBytes signedData.signature + pure { key: key, signature: signature } + } where + byteError = error "signData: hexToCborBytes failure" + fromBase :: Maybe CborBytes fromBase = baseAddressBytes <$> baseAddressFromAddress address @@ -230,7 +263,7 @@ signData conn address dat = do getBalance :: Api -> Aff Value getBalance conn = do - Cip30.getBalance conn >>= + Cip30.getBalance conn >>= handleApiError >>= liftM (error "CIP-30 getUsedAddresses returned non-address") <<< (hexToCborBytes >=> fromBytes >=> convertValue) @@ -241,7 +274,7 @@ getCip30Collateral conn requiredValue = do $ BigNum.fromBigInt $ unwrap requiredValue let requiredValueStr = byteArrayToHex $ unwrap $ toBytes bigNumValue - Cip30.getCollateral conn requiredValueStr `catchError` + (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err where diff --git a/test/Deserialization.purs b/test/Deserialization.purs index f85cf66b4..d3af68ab9 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -155,7 +155,7 @@ suite = do group "WitnessSet - deserialization" do group "fixture #1" do res <- errMaybe "Failed deserialization 5" do - fromBytes (wrap witnessSetFixture1) >>= convertWitnessSet + fromBytes (wrap witnessSetFixture1) <#> convertWitnessSet test "has vkeys" do (unwrap res).vkeys `shouldSatisfy` isJust test "has plutusData" do @@ -170,15 +170,15 @@ suite = do (unwrap res).nativeScripts `shouldSatisfy` isNothing test "fixture #2" do res <- errMaybe "Failed deserialization 6" do - fromBytes (wrap witnessSetFixture2) >>= convertWitnessSet + fromBytes (wrap witnessSetFixture2) <#> convertWitnessSet res `shouldEqual` witnessSetFixture2Value test "fixture #3" do res <- errMaybe "Failed deserialization 7" do - fromBytes (wrap witnessSetFixture3) >>= convertWitnessSet + fromBytes (wrap witnessSetFixture3) <#> convertWitnessSet res `shouldEqual` witnessSetFixture3Value group "fixture #4" do res <- errMaybe "Failed deserialization 8" $ - fromBytes (wrap witnessSetFixture4) >>= convertWitnessSet + fromBytes (wrap witnessSetFixture4) <#> convertWitnessSet test "has nativeScripts" do (unwrap res).nativeScripts `shouldSatisfy` isJust group "NativeScript - deserializaton is inverse to serialization" do @@ -231,10 +231,11 @@ suite = do -> m Unit witnessSetRoundTrip fixture = do ws0 <- errMaybe "Failed deserialization" $ - fromBytes (wrap fixture) >>= convertWitnessSet + fromBytes (wrap fixture) <#> convertWitnessSet ws1 <- liftEffect $ SW.convertWitnessSet ws0 - ws2 <- errMaybe "Failed deserialization" $ convertWitnessSet ws1 - let vkeys = fold (unwrap ws2).vkeys + let + ws2 = convertWitnessSet ws1 + vkeys = fold (unwrap ws2).vkeys vkeyWitnessesRoundtrip vkeys ws0 `shouldEqual` ws2 -- value representation let wsBytes = unwrap $ Serialization.toBytes ws1 diff --git a/test/Transaction.purs b/test/Transaction.purs index da44aa6e6..6a144d9b6 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -14,7 +14,6 @@ import Ctl.Internal.Cardano.Types.Transaction , mkPublicKey ) import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Helpers (fromRightEff) import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Transaction @@ -31,7 +30,6 @@ import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , PlutusScript(PlutusScript) ) -import Data.Either (Either(Left, Right)) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (over, unwrap) import Data.Tuple.Nested ((/\)) @@ -59,8 +57,7 @@ suite = group "attach datums to tx" $ do testAttachDatum :: Aff Unit testAttachDatum = liftEffect $ attachDatum datum tx >>= case _ of - Left e -> throw $ "Failed to attach datum: " <> show e - Right (Transaction { witnessSet: TransactionWitnessSet ws }) -> + Transaction { witnessSet: TransactionWitnessSet ws } -> case ws.plutusData of Just [ pd ] -> do pd `shouldEqual` unwrap datum @@ -77,8 +74,7 @@ testAttachRedeemer :: Aff Unit testAttachRedeemer = liftEffect $ do redeemer <- mkRedeemer datum attachRedeemer redeemer tx >>= case _ of - Left e -> throw $ "Failed to attach redeemer: " <> show e - Right (Transaction { witnessSet: TransactionWitnessSet ws }) -> do + Transaction { witnessSet: TransactionWitnessSet ws } -> do case ws.redeemers of Just [ r ] -> r `shouldEqual` redeemer Just _ -> throw "Incorrect number of redeemers attached" @@ -93,8 +89,7 @@ testAttachRedeemer = liftEffect $ do testAttachScript :: Language -> Aff Unit testAttachScript language = liftEffect $ attachPlutusScript script tx >>= case _ of - Left e -> throw $ "Failed to attach script: " <> show e - Right (Transaction { witnessSet: TransactionWitnessSet ws }) -> + Transaction { witnessSet: TransactionWitnessSet ws } -> case ws.plutusScripts of Just [ ps ] -> ps `shouldEqual` script Just _ -> throw "Incorrect number of scripts attached" @@ -133,7 +128,7 @@ testSetScriptDataHash = liftEffect $ do testPreserveWitness :: Aff Unit testPreserveWitness = liftEffect $ do Transaction { witnessSet: TransactionWitnessSet { plutusData, vkeys } } <- - fromRightEff =<< attachDatum datum tx + attachDatum datum tx case plutusData /\ vkeys of Just [ pd ] /\ Just vs@[ _ ] -> do pd `shouldEqual` unwrap datum From f3fd43216f3e08f90e25f68560e2f2470acf95f4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Dec 2023 22:41:13 +0300 Subject: [PATCH 473/478] Update pull_request_template.md --- .github/pull_request_template.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6feaca1e1..fad3fa811 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,5 +3,6 @@ Closes # . ### Pre-review checklist - [ ] All code has been formatted using our config (`make format`) -- [ ] Any new API features or modification of existing behavior is covered as defined in our [test plan](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/test-plan.md) -- [ ] The changelog has been updated under the `## Unreleased` header, using the appropriate sub-headings (`### Added`, `### Removed`, `### Fixed`), and the links to the appropriate issues/PRs have been included +- [ ] Any new API features or modification of existing behavior are covered with tests +- [ ] The template (`templates/ctl-scaffold`) has been [updated](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/development.md#maintaining-the-template) +- [ ] The changelog has been updated under the `## Unreleased` header, using the appropriate sub-headings (`### Added`, `### Changed`, `### Removed`, `### Fixed`), and the links to the appropriate issues/PRs have been included From 45c83877a690d63a52d9069ad6626f75f75a622c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 20 Dec 2023 23:44:19 +0400 Subject: [PATCH 474/478] Update spago-packages.nix & the template --- spago-packages.nix | 24 ++++++++++++++ templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 38 ++++++++++++++++++++++- templates/ctl-scaffold/spago-packages.nix | 30 ++++++++++++++++-- 4 files changed, 89 insertions(+), 5 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index 801b0ff5d..dac910210 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -221,6 +221,30 @@ let installPhase = "ln -s $src $out"; }; + "cip30" = pkgs.stdenv.mkDerivation { + name = "cip30"; + version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30"; + rev = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + sha256 = "0faz96d0s0663x714cvz6pv38wi6vlyjv47b7p1r0xza4n8dgikq"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cip30-typesafe" = pkgs.stdenv.mkDerivation { + name = "cip30-typesafe"; + version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; + rev = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + sha256 = "1vzb5sm5fvpxmkvpyis4hxk2c05v3fj5j7yxnl2c3wsfcsj9mxl8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "console" = pkgs.stdenv.mkDerivation { name = "console"; version = "v6.0.0"; diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index ebfe7a1d9..c1104f2e7 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "a742692d605aabd75043aee9eef0ecdfec63eacc"; + rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index ca6a76cca..a31fa6a78 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -220,6 +220,8 @@ let additions = , "js-bigints" , "bignumber" , "checked-exceptions" + , "cip30" + , "cip30-typesafe" , "console" , "control" , "crypto" @@ -296,13 +298,47 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "a742692d605aabd75043aee9eef0ecdfec63eacc" + , version = "7d533241367081fa69ec5f0ec8f50e00c39430c2" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] , repo = "https://github.com/purescript-contrib/purescript-js-bigints" , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" } + , cip30 = + { dependencies = + [ "console" + , "effect" + , "prelude" + , "aff" + , "aff-promise" + , "arrays" + , "maybe" + , "nullable" + , "literals" + , "untagged-union" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30" + , version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c" + } + , cip30-typesafe = + { dependencies = + [ "aff" + , "bifunctors" + , "cip30" + , "control" + , "effect" + , "either" + , "exceptions" + , "maybe" + , "prelude" + , "spec" + , "transformers" + , "variant" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" + , version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546" + } } in upstream // additions diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index d792bddff..355490306 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "a742692d605aabd75043aee9eef0ecdfec63eacc"; + version = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "a742692d605aabd75043aee9eef0ecdfec63eacc"; - sha256 = "1sajii8n65rpspbfsxjiyz41m5hsxnkysmz8g2hq4hkl1adqh90s"; + rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + sha256 = "0wpcjrajyfn53ijpdv1w2kg6rmifsz3p8gxx88zin1wv0437cmxh"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -233,6 +233,30 @@ let installPhase = "ln -s $src $out"; }; + "cip30" = pkgs.stdenv.mkDerivation { + name = "cip30"; + version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30"; + rev = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + sha256 = "0faz96d0s0663x714cvz6pv38wi6vlyjv47b7p1r0xza4n8dgikq"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cip30-typesafe" = pkgs.stdenv.mkDerivation { + name = "cip30-typesafe"; + version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; + rev = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + sha256 = "1vzb5sm5fvpxmkvpyis4hxk2c05v3fj5j7yxnl2c3wsfcsj9mxl8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "console" = pkgs.stdenv.mkDerivation { name = "console"; version = "v6.0.0"; From 93460b3ecb472a3cf483302aca942f1306c22484 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 Jan 2024 20:44:54 +0400 Subject: [PATCH 475/478] Update cip-30 and cip30-typesafe revisions --- Makefile | 2 +- packages.dhall | 15 +++--- spago-packages.nix | 12 ++--- src/Contract/Transaction.purs | 1 - src/Internal/Wallet/Cip30.js | 56 ----------------------- src/Internal/Wallet/Cip30.purs | 8 ++-- src/Internal/Wallet/Cip30Mock.purs | 4 ++ templates/ctl-scaffold/packages.dhall | 15 +++--- templates/ctl-scaffold/spago-packages.nix | 12 ++--- 9 files changed, 37 insertions(+), 88 deletions(-) delete mode 100644 src/Internal/Wallet/Cip30.js diff --git a/Makefile b/Makefile index 3b2b7300d..5519cd407 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ check-whitespace: check-format: check-explicit-exports check-examples-imports check-whitespace @purs-tidy check ${ps-sources} @nixpkgs-fmt --check ${nix-sources} - @prettier --loglevel warn -c ${js-sources} + @prettier --log-level warn -c ${js-sources} @eslint --quiet ${js-sources} --parser-options 'sourceType: module' format: diff --git a/packages.dhall b/packages.dhall index 056925f35..43c24759f 100644 --- a/packages.dhall +++ b/packages.dhall @@ -210,19 +210,20 @@ let additions = } , cip30 = { dependencies = - [ "console" - , "effect" - , "prelude" - , "aff" + [ "aff" , "aff-promise" , "arrays" + , "console" + , "effect" + , "literals" , "maybe" + , "newtype" , "nullable" - , "literals" + , "prelude" , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30" - , version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c" + , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" } , cip30-typesafe = { dependencies = @@ -240,7 +241,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" - , version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546" + , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" } } diff --git a/spago-packages.nix b/spago-packages.nix index dac910210..a8b01cd41 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -223,11 +223,11 @@ let "cip30" = pkgs.stdenv.mkDerivation { name = "cip30"; - version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30"; - rev = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; - sha256 = "0faz96d0s0663x714cvz6pv38wi6vlyjv47b7p1r0xza4n8dgikq"; + rev = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; + sha256 = "1rb7kv99rd50b6vhl90sirmzh43wgnyafpmn7w45n3d4nrvf1046"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -235,11 +235,11 @@ let "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; - version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; - rev = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; - sha256 = "1vzb5sm5fvpxmkvpyis4hxk2c05v3fj5j7yxnl2c3wsfcsj9mxl8"; + rev = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; + sha256 = "0mlmifd1svi0havf2wgxzq23ycsqbhlvh4n35g3z7nqr7hhwh8s3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 22e809463..ecbb79892 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -41,7 +41,6 @@ import Contract.Metadata (GeneralTransactionMetadata) import Contract.Monad ( Contract , liftContractM - , liftedM , runContractInEnv ) import Contract.TxConstraints (TxConstraints) diff --git a/src/Internal/Wallet/Cip30.js b/src/Internal/Wallet/Cip30.js deleted file mode 100644 index e82bb63d5..000000000 --- a/src/Internal/Wallet/Cip30.js +++ /dev/null @@ -1,56 +0,0 @@ -/* global BROWSER_RUNTIME */ - -export function _getNetworkId(conn) { - return () => conn.getNetworkId(); -} - -export function _getUtxos(maybe) { - return conn => () => - conn - .getUtxos() - .then(res => (res === null ? maybe.nothing : maybe.just(res))); -} - -export function _getCollateral(maybe) { - return conn => requiredValue => () => - (typeof conn.getCollateral === "function" - ? conn.getCollateral(requiredValue) - : conn.experimental.getCollateral(requiredValue) - ).then(utxos => - utxos !== null && utxos.length ? maybe.just(utxos) : maybe.nothing - ); -} - -export function _getBalance(conn) { - return () => conn.getBalance(); -} - -export function _getAddresses(conn) { - return conn.getUsedAddresses; -} - -export function _getUnusedAddresses(conn) { - return () => conn.getUnusedAddresses(); -} - -export function _getChangeAddress(conn) { - return () => conn.getChangeAddress(); -} - -export function _getRewardAddresses(conn) { - return () => conn.getRewardAddresses(); -} - -export function _signTx(txHex) { - return conn => () => - conn.signTx(txHex, true).catch(e => { - throw JSON.stringify(e); - }); -} - -export function _signData(address) { - return payload => conn => () => - conn.signData(address, payload).catch(e => { - throw JSON.stringify(e); - }); -} diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 015dd11d5..977bc565d 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -65,7 +65,7 @@ type DataSignature = -- | A simplified internal view of CIP-30 API that wraps `Api` from -- | `purescript-cip30`. -- | --- | - We hardcode the collateral amount +-- | - We hardcode the collateral amount to 5 ADA -- | - We always request all UTxOs in `getUtxos` -- | - We don't support querying of supported CIP-30 extensions -- | - We don't support getting wallet icon, name and apiVersion @@ -73,7 +73,8 @@ type DataSignature = -- | -- | Use `purescript-cip30` for these: `connection` field contains the API handle. type Cip30Wallet = - { -- A reference to a connection with the wallet, i.e. `window.cardano.nami`, + { -- A reference to a connection with the wallet, i.e. the result of calling + -- `window.cardano[walletName].enable()`, connection :: Api -- Returns the network id of the currently connected account. 0 is for any -- of the test networks, and 1 is mainnet. @@ -133,7 +134,6 @@ txToHex = handleApiError :: forall a. Variant (apiError :: APIError, success :: a) -> Aff a handleApiError = match - -- eta expansion fixes type checking here { success: pure :: a -> Aff a, apiError: show >>> throw >>> liftEffect } getUnusedAddresses :: Api -> Aff (Array Address) @@ -190,7 +190,7 @@ getCollateral conn = do getUtxos :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getUtxos conn = do - result <- Cip30.getUtxos conn Nothing + result <- Cip30.getUtxos conn Nothing Nothing result `flip match` { success: \mbUtxoArray -> do liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index d2310e76c..10b0324de 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -136,13 +136,17 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do type Cip30Mock = { getNetworkId :: Effect (Promise Int) + -- we ignore both the amount parameter and pagination: , getUtxos :: Effect (Promise (Array String)) + -- we ignore the amount parameter: , getCollateral :: Effect (Promise (Array String)) , getBalance :: Effect (Promise String) + -- we ignore pagination parameter: , getUsedAddresses :: Effect (Promise (Array String)) , getUnusedAddresses :: Effect (Promise (Array String)) , getChangeAddress :: Effect (Promise String) , getRewardAddresses :: Effect (Promise (Array String)) + -- we ignore the 'isPartial' parameter , signTx :: String -> Promise String , signData :: Fn2 String String (Promise { key :: String, signature :: String }) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index a31fa6a78..d6d88c4d7 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -307,19 +307,20 @@ let additions = } , cip30 = { dependencies = - [ "console" - , "effect" - , "prelude" - , "aff" + [ "aff" , "aff-promise" , "arrays" + , "console" + , "effect" + , "literals" , "maybe" + , "newtype" , "nullable" - , "literals" + , "prelude" , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30" - , version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c" + , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" } , cip30-typesafe = { dependencies = @@ -337,7 +338,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" - , version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546" + , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 355490306..5c9a5b894 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -235,11 +235,11 @@ let "cip30" = pkgs.stdenv.mkDerivation { name = "cip30"; - version = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; + version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30"; - rev = "19b9cf5fc1b8c2d680ec7ffd728c7de34352968c"; - sha256 = "0faz96d0s0663x714cvz6pv38wi6vlyjv47b7p1r0xza4n8dgikq"; + rev = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; + sha256 = "1rb7kv99rd50b6vhl90sirmzh43wgnyafpmn7w45n3d4nrvf1046"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -247,11 +247,11 @@ let "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; - version = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; + version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; - rev = "c76c1d36b3847dc22a7bfcf79dcb44ea8719d546"; - sha256 = "1vzb5sm5fvpxmkvpyis4hxk2c05v3fj5j7yxnl2c3wsfcsj9mxl8"; + rev = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; + sha256 = "0mlmifd1svi0havf2wgxzq23ycsqbhlvh4n35g3z7nqr7hhwh8s3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 9587d31ee9e3aa4d126622c7af74b0a3631293e7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 Jan 2024 21:28:36 +0400 Subject: [PATCH 476/478] Inject Cip30Mock into global.window instead of global.window_, update the tests for Cip30Mock --- src/Internal/Wallet.js | 2 +- src/Internal/Wallet/Cip30Mock.js | 5 +- test/Plutip/Contract.purs | 301 +++++++++++++++---------------- 3 files changed, 148 insertions(+), 160 deletions(-) diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index aea7b61bb..99197ef23 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -1,5 +1,5 @@ function getWindow() { - return typeof window != "undefined" ? window : global.window_; + return typeof window != "undefined" ? window : global.window; } const nodeEnvError = new Error( diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js index d861f5cab..610baa03b 100644 --- a/src/Internal/Wallet/Cip30Mock.js +++ b/src/Internal/Wallet/Cip30Mock.js @@ -2,7 +2,7 @@ export function injectCip30Mock(walletName) { return mock => () => { - let window_ = typeof window != "undefined" ? window : (global.window_ = {}); + let window_ = typeof window != "undefined" ? window : (global.window = {}); if ( typeof window_ == "object" && @@ -40,9 +40,6 @@ export function injectCip30Mock(walletName) { return () => { delete window_.cardano[walletName]; - if (typeof window == "undefined") { - global.window_ = undefined; - } }; }; } diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index cbbedf2a8..703d1b6dd 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -162,7 +162,7 @@ import Ctl.Internal.Wallet.Cip30Mock , withCip30Mock ) import Data.Array (head, (!!)) -import Data.Either (Either(Left, Right), isLeft, isRight) +import Data.Either (Either(Left, Right), hush, isLeft, isRight) import Data.Foldable (fold, foldM, length) import Data.Lens (view) import Data.Map as Map @@ -1897,164 +1897,155 @@ suite = do args result `shouldEqual` (unwrap fullyAppliedScriptFixture) - group "CIP-30 mock interface" do - test "Wallet cleanup" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - try (liftEffect $ isWalletAvailable NamiWallet) >>= flip shouldSatisfy - isLeft - try (liftEffect $ isWalletAvailable GeroWallet) >>= flip shouldSatisfy - isLeft - try (liftEffect $ isWalletAvailable FlintWallet) >>= flip - shouldSatisfy - isLeft - try (liftEffect $ isWalletAvailable NuFiWallet) >>= flip shouldSatisfy - isLeft - - withCip30Mock alice MockNami do - (liftEffect $ isWalletAvailable NamiWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable NamiWallet) >>= flip shouldSatisfy - isLeft - - withCip30Mock alice MockGero do - (liftEffect $ isWalletAvailable GeroWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable GeroWallet) >>= flip shouldSatisfy - isLeft - - withCip30Mock alice MockFlint do - (liftEffect $ isWalletAvailable FlintWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable FlintWallet) >>= flip - shouldSatisfy - isLeft - - withCip30Mock alice MockNuFi do - (liftEffect $ isWalletAvailable NuFiWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable NuFiWallet) >>= flip shouldSatisfy - isLeft - - test "Collateral selection returns UTxO with smaller amount" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - withCip30Mock alice MockNami do - getWalletCollateral >>= liftEffect <<< case _ of - Nothing -> throw "Unable to get collateral" - Just - [ TransactionUnspentOutput - { output: TransactionOutputWithRefScript { output } } - ] -> do - let amount = (unwrap output).amount - unless - (amount == lovelaceValueOf (BigInt.fromInt 50_000_000)) - $ throw "Wrong UTxO selected as collateral" - Just _ -> do - throw $ "More than one UTxO in collateral. " <> - "Not a bug, but unexpected in this test, please update it." - - test "Get own UTxOs" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - utxos <- withCip30Mock alice MockNami do - getWalletUtxos - utxos `shouldSatisfy` isJust + group "CIP-30 mock interface" do + test "Wallet cleanup" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do - test "Get own address" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - mockAddress <- withCip30Mock alice MockNami do - mbAddr <- head <$> getWalletAddresses - mbAddr `shouldSatisfy` isJust - pure mbAddr - kwAddress <- head <$> withKeyWallet alice do - getWalletAddresses - mockAddress `shouldEqual` kwAddress - - test "Payment key hash to payment key hash Tx" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - withCip30Mock alice MockNami do - pkh <- liftedM "Failed to get PKH" $ head <$> - ownPaymentPubKeyHashes - stakePkh <- join <<< head <$> ownStakePubKeyHashes - pkh2PkhContract pkh stakePkh + withCip30Mock alice MockNami do + (liftEffect $ isWalletAvailable NamiWallet) >>= shouldEqual true + try (liftEffect $ isWalletAvailable NamiWallet) >>= hush >>> shouldEqual + (Just false) - test "getWalletBalance works" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - withKeyWallet alice do - getWalletBalance >>= shouldEqual - ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 - ) - withCip30Mock alice MockNami do - getWalletBalance >>= shouldEqual - ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 - ) + withCip30Mock alice MockGero do + (liftEffect $ isWalletAvailable GeroWallet) >>= shouldEqual true + try (liftEffect $ isWalletAvailable GeroWallet) >>= hush >>> shouldEqual + (Just false) - test "getWalletBalance works (2)" do - let - distribution :: InitialUTxOs - distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 2_000_000 - , BigInt.fromInt 1_000_000 - ] - withWallets distribution \alice -> do - withCip30Mock alice MockNami do - getWalletBalance >>= flip shouldSatisfy - (eq $ Just $ coinToValue $ Coin $ BigInt.fromInt 8_000_000) + withCip30Mock alice MockFlint do + (liftEffect $ isWalletAvailable FlintWallet) >>= shouldEqual true + try (liftEffect $ isWalletAvailable FlintWallet) >>= hush >>> + shouldEqual + (Just false) - test "CIP-30 utilities" do - let - distribution :: InitialUTxOsWithStakeKey - distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 - ] - withWallets distribution \alice -> do - withCip30Mock alice MockNami do - Cip30.contract - withCip30Mock alice (MockGenericCip30 "nami") do - Cip30.contract - test "ECDSA example" do - let - distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - ] - withWallets distribution \alice -> do - withCip30Mock alice MockNami $ ECDSA.contract + withCip30Mock alice MockNuFi do + (liftEffect $ isWalletAvailable NuFiWallet) >>= shouldEqual true + try (liftEffect $ isWalletAvailable NuFiWallet) >>= hush >>> shouldEqual + (Just false) + + test "Collateral selection returns UTxO with smaller amount" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami do + getWalletCollateral >>= liftEffect <<< case _ of + Nothing -> throw "Unable to get collateral" + Just + [ TransactionUnspentOutput + { output: TransactionOutputWithRefScript { output } } + ] -> do + let amount = (unwrap output).amount + unless + (amount == lovelaceValueOf (BigInt.fromInt 50_000_000)) + $ throw "Wrong UTxO selected as collateral" + Just _ -> do + throw $ "More than one UTxO in collateral. " <> + "Not a bug, but unexpected in this test, please update it." + + test "Get own UTxOs" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + utxos <- withCip30Mock alice MockNami do + getWalletUtxos + utxos `shouldSatisfy` isJust + + test "Get own address" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + mockAddress <- withCip30Mock alice MockNami do + mbAddr <- head <$> getWalletAddresses + mbAddr `shouldSatisfy` isJust + pure mbAddr + kwAddress <- head <$> withKeyWallet alice do + getWalletAddresses + mockAddress `shouldEqual` kwAddress + + test "Payment key hash to payment key hash Tx" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami do + pkh <- liftedM "Failed to get PKH" $ head <$> + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> ownStakePubKeyHashes + pkh2PkhContract pkh stakePkh + + test "getWalletBalance works" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + withKeyWallet alice do + getWalletBalance >>= shouldEqual + ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + ) + withCip30Mock alice MockNami do + getWalletBalance >>= shouldEqual + ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + ) + + test "getWalletBalance works (2)" do + let + distribution :: InitialUTxOs + distribution = + [ BigInt.fromInt 5_000_000 + , BigInt.fromInt 2_000_000 + , BigInt.fromInt 1_000_000 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami do + getWalletBalance >>= flip shouldSatisfy + (eq $ Just $ coinToValue $ Coin $ BigInt.fromInt 8_000_000) + + test "CIP-30 utilities" do + let + distribution :: InitialUTxOsWithStakeKey + distribution = withStakeKey privateStakeKey + [ BigInt.fromInt 1_000_000_000 + , BigInt.fromInt 50_000_000 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami do + Cip30.contract + withCip30Mock alice (MockGenericCip30 "nami") do + Cip30.contract + test "ECDSA example" do + let + distribution = withStakeKey privateStakeKey + [ BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + ] + withWallets distribution \alice -> do + withCip30Mock alice MockNami $ ECDSA.contract group "CIP-49 Plutus Crypto Primitives" do test "ECDSA: a script that checks if a signature is correct" do From b8fcd94d5c7a3f177061e8220b3fc3c6e1c18bb5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 Jan 2024 19:18:44 +0400 Subject: [PATCH 477/478] Apply suggestions from https://github.com/Plutonomicon/cardano-transaction-lib/pull/1583 --- examples/KeyWallet/Cip30.purs | 14 ++++++-------- src/Internal/Contract/Wallet.purs | 10 ++++------ src/Internal/Deserialization/WitnessSet.purs | 6 ++++-- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/examples/KeyWallet/Cip30.purs b/examples/KeyWallet/Cip30.purs index 9d61e2b76..00c0ebab2 100644 --- a/examples/KeyWallet/Cip30.purs +++ b/examples/KeyWallet/Cip30.purs @@ -7,7 +7,7 @@ module Ctl.Examples.KeyWallet.Cip30 import Contract.Prelude import Contract.Log (logInfo') -import Contract.Monad (Contract) +import Contract.Monad (Contract, liftedM) import Contract.Prim.ByteArray (RawBytes) import Contract.Wallet ( getChangeAddress @@ -15,10 +15,9 @@ import Contract.Wallet , getUnusedAddresses , signData ) -import Control.Monad.Error.Class (liftMaybe, try) +import Control.Monad.Error.Class (try) import Ctl.Examples.KeyWallet.Internal.Cip30Contract (runKeyWalletContract_) import Data.Array (head) -import Effect.Exception (error) main :: Effect Unit main = runKeyWalletContract_ mkContract @@ -26,14 +25,13 @@ main = runKeyWalletContract_ mkContract mkContract :: RawBytes -> Contract Unit mkContract dat = do logInfo' "Running Examples.KeyWallet.Cip30" - logInfo' "Funtions that depend on `Contract`" + logInfo' "Functions that depend on `Contract`" _ <- performAndLog "getUnusedAddresses" getUnusedAddresses changeAddress <- performAndLog "getChangeAddress" getChangeAddress _ <- performAndLog "signData changeAddress" $ try $ signData changeAddress dat - rewardAddress <- performAndLog "getRewardAddresses" getRewardAddresses - rewardAddr <- liftMaybe (error "can't get change address") $ head - rewardAddress - _ <- performAndLog "signData rewardAddress" $ try $ signData rewardAddr dat + rewardAddress <- performAndLog "getRewardAddresses" $ + liftedM "Could not get reward address" (head <$> getRewardAddresses) + _ <- performAndLog "signData rewardAddress" $ try $ signData rewardAddress dat pure unit where diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index c1e851aa5..472aad2f8 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -60,7 +60,7 @@ import Effect.Exception (error, throw) import JS.BigInt as BigInt getUnusedAddresses :: Contract (Array Address) -getUnusedAddresses = do +getUnusedAddresses = withWallet $ actionBasedOnWallet _.getUnusedAddresses mempty getChangeAddress :: Contract Address @@ -71,11 +71,9 @@ getChangeAddress = withWallet do pure $ (unwrap kw).address networkId getRewardAddresses :: Contract (Array Address) -getRewardAddresses = withWallet do - actionBasedOnWallet _.getRewardAddresses - \kw -> do - networkId <- asks _.networkId - pure $ pure $ (unwrap kw).address networkId +getRewardAddresses = + withWallet $ actionBasedOnWallet _.getRewardAddresses + \kw -> asks _.networkId <#> Array.singleton <<< (unwrap kw).address getWalletAddresses :: Contract (Array Address) getWalletAddresses = withWallet do diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs index 40e0c7c9a..f4783aa40 100644 --- a/src/Internal/Deserialization/WitnessSet.purs +++ b/src/Internal/Deserialization/WitnessSet.purs @@ -61,15 +61,17 @@ import Effect.Unsafe (unsafePerformEffect) convertWitnessSet :: TransactionWitnessSet -> T.TransactionWitnessSet convertWitnessSet ws = let + vkeys = getVkeywitnesses maybeFfiHelper ws <#> convertVkeyWitnesses nativeScripts = getNativeScripts maybeFfiHelper ws <#> convertNativeScripts + bootstraps = getBootstraps maybeFfiHelper ws <#> convertBootstraps plutusScripts = getPlutusScripts maybeFfiHelper ws <#> convertPlutusScripts plutusData = getWitnessSetPlutusData maybeFfiHelper ws <#> convertPlutusList redeemers = getRedeemers maybeFfiHelper ws <#> convertRedeemers in T.TransactionWitnessSet - { vkeys: getVkeywitnesses maybeFfiHelper ws <#> convertVkeyWitnesses + { vkeys , nativeScripts - , bootstraps: getBootstraps maybeFfiHelper ws <#> convertBootstraps + , bootstraps , plutusScripts , plutusData , redeemers From e23ff270b3013db769c0dba1e7cfb284f4517a82 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 6 Jan 2024 19:38:21 +0400 Subject: [PATCH 478/478] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea3a082e0..d451909cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed +- Replaced custom CIP-30 wrapper code with [`purescript-cip30-typesafe`](https://github.com/mlabs-haskell/purescript-cip30-typesafe/) - ([#1583](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1583)) + ### Fixed ### Removed